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

Вниз

Как перехватить сообщения без KOL applet и Form.OnMessage   Найти похожие ветки 

 
Psychedelic ©   (2006-10-13 14:22) [0]

Всем привет. Как можно перехватывать все сообщения (message) (WindowProc),
но БЕЗ помощи KolApplet и Form.OnMessage . Чисто в образовательных целях. Вобщем не кидая компонентов. На API в кол.


 
Thaddy   (2006-10-13 15:07) [1]

program Project1;
uses
 Windows, Messages, kol, objects;
var
 wClass: TWndClass;
 Msg: TMsg;
 Handle:Hwnd;
 Stream:PStream;
 i:integer;
 UtilWindowClass: TWndClass = (
   style: 0;
   lpfnWndProc: @DefWindowProc;
   cbClsExtra: 0;
   cbWndExtra: 0;
   hInstance: 0;
   hIcon: 0;
   hCursor: 0;
   hbrBackground: 0;
   lpszMenuName: nil;
   lpszClassName: "KOLFakeUtilWindow");

function WindowProc(hWnd,Msg,wParam,lParam:Integer):hwnd; stdcall;
begin
if Msg = WM_DESTROY then PostQuitMessage(0);
Result := DefWindowProc(hWnd,Msg,wParam,lParam);
end;

begin
wClass.lpszClassName:= "CN";
wClass.lpfnWndProc :=  @WindowProc;
wClass.hInstance := hInstance;
wClass.hbrBackground:= 1;
RegisterClass(wClass);
Handle := CreateWindowEx(WS_EX_TOOLWINDOW, UtilWindowClass.lpszClassName,
   "", WS_POPUP {!0}, 0, 0, 0, 0, 0, 0, HInstance, nil);
Stream := NewWriteFilestream("c:\Test.log");
for i := 0 to 9 do
       postmessage(Handle,WM_USER,i,0);
while GetMessage(Msg,0,0,0) do
begin
  Stream.WriteStr(Int2Hex(msg.message,4)+"  "+Int2Str(msg.wparam));
  DispatchMessage(Msg);
end;
Stream.free;
end.


 
Thaddy   (2006-10-13 15:13) [2]

Better:

program Project1;
uses
 Windows, Messages, kol, objects;
var
 Msg: TMsg;
 Handle:Hwnd;
 Stream:PStream;
 i:integer;
 UtilWindowClass: TWndClass = (
   style: 0;
   lpfnWndProc: @DefWindowProc;
   cbClsExtra: 0;
   cbWndExtra: 0;
   hInstance: 0;
   hIcon: 0;
   hCursor: 0;
   hbrBackground: 0;
   lpszMenuName: nil;
   lpszClassName: "KOLFakeUtilWindow");

function WindowProc(hWnd,Msg,wParam,lParam:Integer):hwnd; stdcall;
begin
if Msg = WM_DESTROY then PostQuitMessage(0);
Result := DefWindowProc(hWnd,Msg,wParam,lParam);
end;

begin
Handle := CreateWindowEx(WS_EX_TOOLWINDOW, UtilWindowClass.lpszClassName,
   "", WS_POPUP {!0}, 0, 0, 0, 0, 0, 0, HInstance, nil);
Stream := NewWriteFilestream("c:\Test.log");
for i := 0 to 9 do
       postmessage(Handle,WM_USER,i,0);
while GetMessage(Msg,0,0,0) do
begin
  Stream.WriteStr(Int2Hex(msg.message,4)+"  "+Int2Str(msg.wparam)+"  ");
  DispatchMessage(Msg);
end;
Stream.free;
end.



Страницы: 1 вся ветка

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

Наверх




Память: 0.47 MB
Время: 0.052 c
1-1175838763
atruhin
2007-04-06 09:52
2007.06.03
Не приходит событие OnActivate


2-1178997321
Sonic90
2007-05-12 23:15
2007.06.03
ListBox


15-1178351044
SerJaNT
2007-05-05 11:44
2007.06.03
Delphi for PHP


2-1179382652
Юра
2007-05-17 10:17
2007.06.03
Пересмотр графических файлов


2-1178996245
likenoother
2007-05-12 22:57
2007.06.03
из Timage в Tpaintbox