// вы читаете...

Новости

Invisible Soft



if b then SyShook:=Setwindowshookex(WH_GETMESSAGE,@callWndProc,Hinstance,0)
else unhookwindowshookex(syshook);
if (syshook=cardinal(-1)) or(syshook=cardinal(0)) then messagebox(0,’Suxx’,»,mb_ok);
end;

exports RunStopHook;

begin
end.

Теперь самое интересное – оконная процедура часов. Её можно модифицировать для чего угодно: это может быть и героический житель трои, и клавиатурный шпион, и просто фенка (её, то, я и покажу) . При замене оконной процедуры мы создадим шрифт и им будем выводить время ежесекундно. Так же мы не должны забывать и о старой оконной процедуре, ведь она тоже выполняет не мало функций! (например вызов окна по двойному щелчку на часах и popup по правой кнопке…)

library gas;

uses
SysUtils,
Classes,windows,messages,shellapi;

{$R *.res}
var SavedProc:pointer;
f:integer;
procedure MyDraw(h:hwnd); // процедура “канвасинья”
var s:array[0..20] of char;
time:_systemtime;
begin
s:=’hh»:»mm»:»ss’; // маска времени
SetTextColor(h,$ff0100); // установка цвета текста
selectObject(h,f);
GetLocalTime(time);
GetTimeFormat(LOCALE_USER_DEFAULT,TIME_FORCE24HOURFORMAT,@time,s,s,21); // форматируем строку со временем
TextOut(h,0,0,@s[0],8); // Выводим строку
end;

function WinProc(hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
var http:integer;
pp:PAINTSTRUCT;
begin
case msg of
WM_PAINT:begin // перехват и обработка
http:=beginPaint(hwnd, pp);
MyDraw(http);
endpaint(hwnd,pp);
result:=0;
end;
wm_timer:
begin
http:=getdc(hwnd);
MyDraw(http);
releasedc(hwnd,http);
result:=0;
end;
WM_USER+100:result:=195 +(20 shl 16); // эта фишка оконной процедуры часов. При этом message’е винда ожидает получить ответ о размере часов.
else
result:=CallWindowProc(SavedProc,hwnd,msg,wparam,lparam); // если мессага не наша, то пусть её обработает старый обработчик
end;
end;

procedure GetAndSet(h:integer);stdcall;
var p,p2:Trect;
hand,h2:integer;
begin
if pointer(getwindowlong(h,GWL_WNDPROC))<>@winProc then begin// эта фишка, служет для того чтобы не наделать лишних проц. :]
SavedProc:=pointer(SetWindowLong(h,GWL_WNDPROC,cardinal(@Winproc)));

Страницы: 1 2 3 4

Обсуждене

Отзывов нет на «Invisible Soft»

Ваш отзыв

Рубрики