Форум: "WinAPI";
Текущий архив: 2002.06.24;
Скачать: [xml.tar.bz2];
ВнизБез темы Найти похожие ветки
← →
ATLANTIDO (2002-04-26 00:26) [0]Мастера ! Проблема ! Бьюсь уже месяц :(
Моя прога в опр. момент времени должна всплывать (типа блокировка), да так, чтобы ее не могли перекрыть. При этом блокируется клав. и мышь (хуки). Form1 - максимизированое окно.
Form2 - окно с сообщением.
if Copy(str, 1, 4)="lock" then
begin
{///KILL all}
H := GetForegroundWindow;
GetWindowText(H, Buffer, SizeOf(Buffer));
if (Pos("Internet Explorer", Buffer)=0) and (H<>Form1.Handle) and (H<>Form2.Handle) and (H<>Form3.Handle) and (H<>Form4.Handle) and (H<>Form5.Handle) then
KillProgram(H);
{TOP////////////}
a:=GetWindowThreadProcessId(GetForegroundWindow,nil);
AttachThreadInput(GetCurrentThreadId,a,true);
SetForegroundWindow(Handle);
AttachThreadInput(GetCurrentThreadId,a,false);
SetWindowPos(Form1.Handle, hwnd_TopMost, Form1.Left, Form1.Top, Form1.Width, Form1.Height, SWP_SHOWWINDOW);
//Блокировка ввода
hKeybHook:=SetWindowsHookExA(WH_KEYBOARD,@KeybProc,HINSTANCE,0);
hMouseHook:=SetWindowsHookExA(WH_MOUSE,@MouseProc,HINSTANCE,0);
Form5.Show;
SetWindowPos(Form5.Handle, hwnd_TopMost, Form5.Left, Form5.Top, Form5.Width, Form5.Height, SWP_SHOWWINDOW);
end;
Потом мне надо дать доступ пользователю (снять блокировку). Делаю так:
if Copy(str, 1, 6)="unlock" then
begin
Form5.Hide;
SetForegroundWindow(Form1.Handle);
Form1.SetFocus;
//разблокировка
UnhookWindowsHookEx(hKeybHook);
UnhookWindowsHookEx(hMouseHook);
SetWindowPos(Form1.Handle, hwnd_NoTopMost, Form1.Left, Form1.Top, Form1.Width, Form1.Height, SWP_SHOWWINDOW);
end;
Так вот, после "разблокировки" не воспринимаются нажатия на мышь и клавиатуру. Может Form1 фокус ввода не получает ?
← →
Song (2002-04-26 08:08) [1]А хук-то снимается?
← →
Vovchik (2002-04-26 15:57) [2]Убей хук с помощью UnRegisterHookEx или чего-то в этом роде, не помню точно название.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2002.06.24;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.013 c