В настоящее время я пытаюсь подключить функцию MessageBeep в user32.dll с помощью EasyHook. Если im работает [этот пример] [1], все работает нормально. Но если я заменю идентификатор потока в строках 52 и 60 с идентификатором потока моего тестового приложения, хук не применяется для программы ohter.EasyHook не работает для других потоков
Почему SetExclusiveACL-Method не принимает никаких других идентификаторов потоков? например
hook.ThreadACL.SetExclusiveACL(new int[] { 8788 });
Я использую следующий код для извлечения нити-ID моего тестового приложения и проверить, если крючок работает на функции MessageBeep:
Sub Main()
While True
Console.WriteLine(GetCurrentThreadId().ToString)
MessageBeep(&H40)
If Console.ReadKey().KeyChar = "c"c Then
Console.Clear()
End If
End While
End Sub
Что вы имеете в виду под «другой программой»? –
У меня есть два приложения: 1. пример, предоставленный разработчиками EasyHook 2. моя тестовая программа в vb.net с приведенным выше кодом В исходном примере идентификатор потока передан SetExclusiveACL (новый int [] { 0}); ist zero (что означает, что хук применяется к текущему потоку). Я хочу применить привязку к любому идентификатору потока, но мне не удается получить эту работу – user4841702
Итак, вы имеете в виду, что вы установили крючок для MessageBeep в Application A Вы вызываете MessageBeep в приложении B. И вы ожидаете, что ваша функция hook в приложении A будет выполнена? –