Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Description
SetWindowsHookExA SetWindowsHookExWişleviyle kullanılan uygulama tanımlı veya kitaplık tanımlı geri çağırma işlevi./ Sistem, her yeni fare girişi olayı iş parçacığı giriş kuyruğuna gönderilmek üzere olduğunda bu işlevi çağırır.
HOOKPROC türü, bu geri çağırma işlevinin işaretçisini tanımlar. LowLevelMouseProc , uygulama tanımlı veya kitaplık tanımlı işlev adı için bir yer tutucudur.
LowLevelMouseProc , uygulama tanımlı veya kitaplık tanımlı işlev adı için bir yer tutucudur.
LRESULT CALLBACK LowLevelMouseProc(
_In_ int nCode,
_In_ WPARAM wParam,
_In_ LPARAM lParam
);
Parametreler
nCode [in]
Tür: int
Kanca yordamının iletinin nasıl işleneceğini belirlemek için kullandığı bir kod.
nCode sıfırdan küçükse, kanca yordamının daha fazla işlem yapmadan iletiyi CallNextHookEx işlevine geçirmesi ve CallNextHookEx tarafından döndürülen değeri döndürmesi gerekir.
Bu parametre aşağıdaki değerlerden biri olabilir.
| Değer | Anlamı |
|---|---|
| HC_ACTION 0 | wParam ve lParam parametreleri fare iletisi hakkında bilgi içerir. |
wParam [in]
Tür: WPARAM
Fare iletisinin tanımlayıcısı.
Bu parametre şu iletilerden biri olabilir: WM_LBUTTONDOWN, WM_LBUTTONUP, WM_MOUSEMOVE, WM_MOUSEWHEEL, WM_RBUTTONDOWN, WM_RBUTTONUP, WM_MBUTTONDOWN, WM_MBUTTONUP, WM_XBUTTONDOWN veya WM_XBUTTONUP.
lParam [in]
Tür: LPARAM
MSLLHOOKSTRUCT yapısının işaretçisi.
İade
Tür: LRESULT
nCode sıfırdan küçükse, kanca yordamı CallNextHookEx tarafından döndürülen değeri döndürmelidir.
nCode sıfırdan büyük veya sıfıra eşitse ve kanca yordamı iletiyi işlemediyse, CallNextHookEx'i çağırmanız ve döndürdüğü değeri döndürmeniz kesinlikle önerilir; aksi takdirde, WH_MOUSE_LL kancaları yüklü olan diğer uygulamalar kanca bildirimleri almaz ve sonuç olarak yanlış davranabilir.
Kanca yordamı iletiyi işlediyse, sistemin iletiyi kanca zincirinin veya hedef pencere yordamının geri kalanına geçirmesini önlemek için sıfır olmayan bir değer döndürebilir.
Açıklamalar
Uygulama, WH_MOUSE_LL kanca türünü ve SetWindowsHookExA/SetWindowsHookExW işlevine yapılan çağrıda kanca yordamının işaretçisini belirterek kanca yordamını yükler.
Bu kanca, onu yükleyen iş parçacığı bağlamında çağrılır. Çağrı, kancayı yükleyen iş parçacığına bir ileti gönderilerek yapılır. Bu nedenle, kancayı yükleyen iş parçacığının bir ileti döngüsü olmalıdır.
Fare girişi yerel fare sürücüsünden veya mouse_event işlevine yapılan çağrılardan gelebilir. Giriş , mouse_event çağrısından geliyorsa, giriş "eklenmiş" olur. Ancak , WH_MOUSE_LL kanca başka bir işleme dahil değildir. Bunun yerine bağlam, kancayı yükleyen işleme geri döner ve özgün bağlamında çağrılır. Ardından bağlam, olayı oluşturan uygulamaya geri döner.
Kanca yordamı, aşağıdaki kayıt defteri anahtarında LowLevelHooksTimeout değerinde belirtilen veri girdisinden daha kısa sürede bir iletiyi işlemelidir:
HKEY_CURRENT_USER\Control Panel\Desktop
Değer milisaniye cinsindendir. Kanca yordamı zaman aşımına uğradıysa, sistem iletiyi bir sonraki kancaya geçirir. Ancak Windows 7 ve sonraki sürümlerde kanca çağrılmadan sessizce kaldırılır. Uygulamanın kancanın kaldırılıp kaldırılmadığını bilmesinin bir yolu yoktur.
Windows 10 sürüm 1709 ve üzeri Sistemin izin verdiği maksimum zaman aşımı değeri 1000 milisaniyedir (1 saniye). LowLevelHooksTimeout değeri 1000'den büyük bir değere ayarlanırsa sistem varsayılan olarak 1000 milisaniyelik bir zaman aşımı kullanır.
Uyarı
Hata ayıklama kancaları bu tür düşük düzeyli fare kancalarını izleyemiyor. Uygulamanın düşük düzeyli kancalar kullanması gerekiyorsa, işi bir çalışan iş parçacığına geçiren ve hemen döndüren ayrılmış bir iş parçacığında kancaları çalıştırması gerekir. Uygulamanın düşük düzeyli kancalar kullanması gereken çoğu durumda, bunun yerine ham girişi izlemesi gerekir. Bunun nedeni, ham girişin diğer iş parçacıkları için hedeflenen fare ve klavye iletilerini düşük düzeyli kancalardan daha etkili bir şekilde zaman uyumsuz olarak izleyebilmesindendir. Ham giriş hakkında daha fazla bilgi için bkz . Ham Giriş.