Форум: "WinAPI";
Текущий архив: 2007.06.10;
Скачать: [xml.tar.bz2];
ВнизОбработчик сообщений Найти похожие ветки
← →
H@CkEi$t (2007-01-03 20:39) [0]Доброго времени суток!
Кто знает помогите! Мне нужен код обработчика закрытия чужих окон в системе и проверка его состояния(максимизировано, минимизировано...)
← →
kaZaNoVa © (2007-01-03 21:12) [1]внедряй код в него и все проблемы...
(пример был для обработки хот-кея окна:)
(внимание, в программе возможна неприятная лексика (когда-то писалась ввиде прикола))
важные функции пометилlibrary Project1;
uses
Windows,Messages;
Var
SavedProc: pointer;
ThreadID,id:cardinal;
ready:boolean;
function GethWnd: HWND;
begin
result:= FindWindow(Pchar("SAS Window class"),Pchar("SAS window") );
end;
function MyWndProc(hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
begin
ready:=false;
if msg=WM_HOTKEY then begin
// Поймали HOTKEY CAD (CSE) - выводим сообщение на десктоп "Default" и затем выходим
if( MAKELONG( MOD_CONTROL or MOD_ALT, VK_DELETE ) = lParam )then
begin
MessageBoxEx(0,"Ctrl + Alt + Del","Oblom c CAD"om !!!", MB_DEFAULT_DESKTOP_ONLY, 0 );
result:= 0;
ready:=True;
end;
if( MAKELONG( MOD_CONTROL or MOD_SHIFT, VK_ESCAPE ) = lParam ) then
begin
MessageBoxEx(0,"Ctrl + Shift + Esc","Oblom c Dispetcherom"om !!!", MB_DEFAULT_DESKTOP_ONLY, 0 );
result:= 0;
ready:=True;
end;
if not ready then result:= CallWindowProc(SavedProc, hWnd, Msg, wParam, lParam);
end
else result:= CallWindowProc(SavedProc, hWnd, Msg, wParam, lParam);
end;
procedure SetWndProc(hWnd: HWND);
begin
SavedProc:= pointer(SetWindowLong(hWnd, GWL_WNDPROC, cardinal(@myWndProc)));
end;
procedure UnSetWndProc(hWnd: HWND);
begin
SavedProc:= pointer(SetWindowLong(hWnd, GWL_WNDPROC, cardinal(SavedProc)));
end;
function thread:integer; stdcall;
begin
SetWndProc(GethWnd);
sleep(60*1000);
//PostMessage(HWND_BROADCAST,WM_HOTKEY,0, MAKELONG(MOD_CONTROL or MOD_ALT, VK_DELETE ) ); //CAD
UnSetWndProc(GethWnd);
sleep(10);
thread:=0;
CreateThread(nil,0,GetProcAddress(GetModuleHandle("kernel32"),"FreeLibrary"),poi nter(hInstance),0,id);
end;
begin
//MessageBoxEx(0,"Ctrl + Shift + Esc","FIGA2", MB_DEFAULT_DESKTOP_ONLY, 0 );
CreateThread(nil,0,@Thread,nil,0,ThreadID);
end.
← →
kaZaNoVa © (2007-01-03 21:13) [2]внедрять мона хуком
← →
H@CkEi$t (2007-01-03 21:19) [3]а без хука и library"сов никак?
← →
kaZaNoVa © (2007-01-03 21:25) [4]H@CkEi$t (03.01.07 21:19) [3]
ну еще мона внедрить код в память процесса ..
хотя есть вариант с низкоуровневыми хуками без DLL ....
имхо а к чему вообще такая нестандартная задача? возможнопроблема решается другими средствами?
← →
H@CkEi$t (2007-01-03 21:29) [5]ладно попробую твой кодинг хотя что-то похожее у меня уже было
спАсИбО kaZaNoVa
← →
kaZaNoVa © (2007-01-03 21:29) [6]kaZaNoVa © (03.01.07 21:12) [1]
рабочий пример подобного:
Алгоритм программы основан на перехвате оконного обработчика окна SAS window.
если у тя такая задача .....
http://kladovka.net.ru/index.cgi?pid=list&rid=84
← →
H@CkEi$t (2007-01-03 21:38) [7]Ok буду разбираться
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2007.06.10;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.041 c