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.
Merhaba, VarPtr kodunu LongPtr ile değiştirerek deneyiniz.
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.
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.
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.
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: