inceleyiniz
Modüllerdeki apideclaration satırlarında PTRSAFE deyimini kullanmalısınız. Hem 32 hem de 64 bit'te çalışması için mesela aşağıdaki biçimde olan kodları
Visual Basic Code
Private Declare Function apiShowWindow Lib "user32" Alias "ShowWindow" (ByValhwndAsLong,ByValnCmdShowAsLong)AsLong
şu şekilde değiştirin:
Visual Basic Code
#If VBA7 Then
Private Declare PtrSafe Function apiShowWindow Lib "user32" Alias "ShowWindow" (ByValhwndAsLong,ByValnCmdShowAsLong)AsLong
#Else
Private Declare Function apiShowWindow Lib" user32" Alias "ShowWindow" (ByValhwndAsLong,ByValnCmdShowAsLong)AsLong
#EndIf
Böylece 32 bit için de 64 bit içim de sorun ortadan kalkar.
Bunu eklemeniz gerektiğini nereden mi anlayacaksınız?
Modüllerde "Private declare" ile başlayan kodlarda api kullanıldığı için 64 bit için sorun çıkar. Çünkü iki işletim sisteminde kullanılan api mantığı farklıdır. 32 bitlik işletim sisteminde kullanılan kodları yukarda verdiğim biçime dönüştürdüğünüzde her iki sistemde de sorunsuz çalışacaktır.
Bir uyarı: Eğer modülde Declare Function biçimi başında "private" olmadan kullanıldıysa o zaman da yine ptrsafe deyimini declare komutundan hemen sonra kullanmalısınız.
Cevapla