Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.222.117.109] |
|
Сообщ.
#1
,
|
|
|
Собственно вот.
Вот как я придумал. Я могу перехватить клик по кнопке, что вызывает этот диалог. Могу в этом диалоге получить из поля Edit то, что там есть... Но это всё не то. Или то? И главная проблема - это подключение самого Hook... public delegate int GetMsgProc(int nCode, int wParam, ref Message msg); private IntPtr HookHandle; private GetMsgProc ProcessMessagesCallback; IntPtr hInstance; IntPtr form; IntPtr ThreadID; private void SetHook() { int PiD = 0; form = FindWindow("ThunderRT6FormDC", "название формы"); IntPtr hInstance = (IntPtr)Win32.User32.GetWindowLong(form, Win32.User32.GWL_HINSTANCE); ThreadID = (IntPtr)Win32.User32.GetWindowThreadProcessId(msvb_tool, ref PiD); WinInputHook hook = new WinInputHook(form , ThreadID, hInstance); } class WinInputHook : IDisposable { public delegate int GetMsgProc(int nCode, int wParam, ref Message msg); /// <summary>Handle for the created hook.</summary> private readonly IntPtr HookHandle; private readonly GetMsgProc ProcessMessagesCallback; public WinInputHook(IntPtr whnd, IntPtr theadID, IntPtr inst) { int it = theadID.ToInt32(); // Create the delegate callback: this.ProcessMessagesCallback = new GetMsgProc(ProcessMessages); // Create the keyboard hook: this.HookHandle = SetWindowsHookEx(HookId.WH_CALLWNDPROC, this.ProcessMessagesCallback, inst, it); //Чего я только тут не делал и какие только параметры не вставлял. HookHandle = 0 и все тут. } private int ProcessMessages(int nCode, int wParam, ref Message msg) { MessageBox.Show("URA!!!"); // никак не случиться это сообщение } } Что я делаю не так? Почему никак не встанет хук? Я там хочу отловить WM_INITDIALOG, правда пока не придумал зачем=) Наверное, лучше всего отследить нажатие по кнопке Открыть в диалоге... В общем, это уже другой момент. Главное,чтоб hook установился. |
Сообщ.
#2
,
|
|
|
В общем, продвижки есть=) Я сам в шоке, но хук условно стал ставиться. Я написал ActiveX Dll и она у меня отвечает за хук, я туда скидываю только hWnd формы.
В общем, хук ставится, LastError ничего не возвращает, а прога, на которую ставлю сам хук - виснет. Отрабатывает SetHook, без ошибок, и вдруг прога падает. Как понять, из-за чего? |