Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.06.10;
Скачать: CL | DM;

Вниз

Обработчик сообщений   Найти похожие ветки 

 
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 вся ветка

Текущий архив: 2007.06.10;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.027 c
2-1179578791
Dib
2007-05-19 16:46
2007.06.10
.bmp на кнопку.


15-1179007844
Real
2007-05-13 02:10
2007.06.10
Евровидение: Сердючка на втором месте


2-1179660366
Герасим
2007-05-20 15:26
2007.06.10
Рабочий стол


2-1179515212
Пргораммер
2007-05-18 23:06
2007.06.10
Код клавиши Esc


15-1179293278
31512
2007-05-16 09:27
2007.06.10
Опаньки!