Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Обработчик сообщений [D7, WinXP]


H@CkEi$t ©   (2007-01-03 20:39:00) 

Доброго времени суток!
Кто знает помогите! Мне нужен код обработчика закрытия чужих окон в системе и проверка его состояния(максимизировано, минимизировано...)


H@CkEi$t   (2007-01-03 21:38:00) [1]

Ok буду разбираться


H@CkEi$t   (2007-01-03 21:29:00) [2]

ладно попробую твой кодинг хотя что-то похожее у меня уже было
спАсИбО kaZaNoVa


kaZaNoVa   (2007-01-03 21:29:00) [3]

kaZaNoVa ©   (03.01.07 21:12) [1]
рабочий пример подобного:

Алгоритм программы основан на перехвате оконного обработчикаокна SAS window.

если у тя такая задача .....  

http://kladovka.net.ru/index.cgi?pid=list&rid=84


kaZaNoVa   (2007-01-03 21:25:00) [4]

H@CkEi$t   (03.01.07 21:19) [3]
ну еще мона внедрить код в память процесса ..

хотя есть вариант с низкоуровневыми хуками без DLL ....  

имхо а к чему вообще такая нестандартная задача? возможнопроблема решается другими средствами?


H@CkEi$t   (2007-01-03 21:19:00) [5]

а без хука и library'сов никак?


kaZaNoVa   (2007-01-03 21:13:00) [6]

внедрять мона хуком


kaZaNoVa   (2007-01-03 21:12:00) [7]

внедряй код в него и все проблемы...
(пример был для обработки хот-кея окна:)

(внимание, в программе возможна неприятная лексика (когда-то писалась ввиде прикола))
важные функции пометил

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.


Наверх

Титульная страница Поиск, карта сайта Написать письмо