VarPtr TypeMismatch Hatası

1 2
11/02/2017, 07:32

zzr

Merhaba
Programda Giriş butonuna bastığımda basMoueseHook modülü içerisindeki "Public Function NewMouseHook(ByRef Form As Access.Form) As Object" içerisinde "Call CastToObject(MouseHookLoader, VarPtr(VarPtr(LoaderVTable)), SIZEOF_PTR32)" satırında bulunan "VarPtr" için "TypeMismatch" hatası veriyor. Bunu nasıl düzeltebilirim. Yardım edebilir misiniz?
Not:64 bit işletim sistemi kullandığımdan dolayı program içerisinde Declare ifadelerinden sonra Ptrsafe eklemesi yaptım.
11/02/2017, 10:27

ozanakkaya

Merhaba, VarPtr kodunu LongPtr ile değiştirerek deneyiniz.
11/02/2017, 13:52

atoz112

sayın zzr,

Alıntı:Not:64 bit işletim sistemi kullandığımdan dolayı program içerisinde Declare ifadelerinden sonra Ptrsafe eklemesi yaptım.

ifadenize yönelik olarak;

sadece,PTRSAFE düzeltmesi yapmanız yeterli gelmeyecektir.

kod içerisinde yer alan ve DECLARE edilecek olan Fonksiyondaki LONG ifadesinin de LONGPTR oalrak değiştirilerek kullanılması gerekmektedir.

ÖRNEK

Declare Function VarPtr Lib "vbrun100.Dll" (Var As Any) As Long

yukarıdaki kod satırının,

Declare Ptrsafe Function LongPtr Lib "vbrun100.Dll" (LongPtr As Any) As LongPtr

benzeri bir kod satırı olarak kullanılması gibi.kısacası,64 bit kodlarının yazılı olacağı kısımda yer alacak olan bütün LONG değerleri için LONG PTR ifadesini kullanmalısınız.

son olarak;
içeriğinde farazi gerçek dışı uydurma olacak halde ve sonuçları görebilmek adına da birkaç kayıt barındıracak şekilde örnek uygulamanızı konunuza dahil edebilirsiniz.

bilginize...iyi çalışmalar,saygılar.
11/02/2017, 14:21

zzr

Daha önceden fascioğlu'nun paylaştığı https://accesstr.net/konu-personel-progr...gram%C4%B1 adresindeki Personel İşlemleri programını kullanmak istediğimde bu hatayı aldım.  

ozanakkaya verdiği bilgi doğrultusunda VarPtr kodunu LongPtr ile değiştirdim ancak olumlu sonuç alamadım.

atoz112  verdiği bilgi doğrultusunda LONG ifadelerini LONGPTR olarak değiştirilerek denediğimde
"Err.Raise ERR_OUT_OF_MEMORY" satırında "TypeMismatch" hatası veriyor.


fascioğlu'nun paylaşımından indirdiğim dosyayı orjinal şekli ile yeniden ekliyorum.
11/02/2017, 14:51

atoz112

sayın zzr,

EK'te;
bahsettiğiniz talebinize yönelik olarak,
ilgili örnek üzerinde gerekli düzeltmelerin yapılması sureti ile hazırlanmış örnek uygulama mevcuttur.inceleyebilirsiniz.

bilginize...iyi çalışmalar,saygılar.
11/02/2017, 15:15

zzr

Sayın atoz112 ,

Öncelikle ilginiz için çok teşekkür ederim.

    Eklediğiniz dosyayı açtığımda "Mdl_AccessGizle" modülü içerisinde "degistir()" fonksiyonunda bulunan "rgn1 = CreateRectRgn(0, 0, 1, 1)" satırında CreateRectRgn  ifadesinde "TypeMismatch" hatası verdi (resim1). Bunun Access menüsünün gizlemesi ile ilgi olduğunu düşündüğümden FRM_LOGON formunun yüklendiğinde olayından kaldırarak programı tekrar çalıştırdım.

Kullanıcı adı ve şifresini girerek Giriş butonuna bastığımda "basmousehook" modülünde "MouseHookAddr = VirtualAlloc(0, Len(NativeCode), MEM_RESERVE_AND_COMMIT, PAGE_EXECUTE_RW)" satırında "TypeMismatch" hatası verdi(resim2).


resim1:

resim2:
1 2