Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2003.06.12;
Скачать: [xml.tar.bz2];

Вниз

Пожалуйста помогите с Hook ами   Найти похожие ветки 

 
amo   (2003-04-13 14:02) [0]

Необходимо чтобы при определенном положении курсора мыши указанное окно сворачивалось на панель задач.
Делаю dll"ку, ставлю Hook на мышь, он вроде бы срабатывает но при этом начинаются глюки с окнами. Подскажите в чем ошибка!

library MHook;

uses
SysUtils,
windows,
messages;

{$R *.res}
var
idHook: THandle;
MHS: TMouseHookStruct;
R: TRect;
WName: PChar; //имя окна


function HookProc(nCode: Integer; WPARAM: wParam; LPARAM: lParam): lResult; stdcall;
begin

if nCode=HC_ACTION then
begin
MHS:=PMouseHookStruct(LParam)^;
If (MHS.pt.X<(R.Right-25)) Then
begin
If FindWindow(nil,WName)<>0 Then
begin
ShowWindow(FindWindow(nil,WName), SW_SHOWMINIMIZED);
end;
end;
end;

result:=CallNextHookEx(idHook,nCode,WPARAM,LPARAM);
end;

procedure SetKeyHook(wn: PChar);
begin
WName:=wn;
idHook:=SetWindowsHookEx(WH_MOUSE, @HookProc, hInstance, 0);
If idHook=0 Then
messagebox(0,"Ловушка не установлена","Error",MB_OK+MB_ICONERROR)
Else
messagebox(0,"Ловушка установлена","Ok",MB_OK);
messagebox(0,WName,"Ok",MB_OK);
GetWindowRect(GetDesktopWindow, R);

end;

procedure DelKeyHook;
begin

UnhookWindowsHookEx(idHook);
messagebox(0,"Ловушка снята!","Ok",MB_OK);
end;

exports
SetKeyHook name "SetKeyHook",
DelKeyHook name "DelKeyHook";



begin
end.


 
Songoku   (2003-04-13 16:02) [1]

Сварачивание срабатывает если ты подводишь курсор к левому углу онка!!!

library hook_dll1;

uses
Windows,
Messages,
edconsole;

const
MMFName: PChar = "MyMMF";


type
PGlobalDLLData = ^TGlobalDLLData;
TGlobalDLLData = packed record
SysHook: HWND;
end;

var
GlobalData: PGlobalDLLData;
MMFHandle: THandle;
R:TRect;
Text: pchar;

function SysMsgProc(code : integer; wParam : word; lParam : longint) : longint; stdcall;
var w:hWnd;
begin
if code = HC_ACTION then
begin
w:=MOUSEHOOKSTRUCT(Pointer(lParam)^).hwnd;
GetWindowRect(w,R);
R.Right:=R.Left+10;
r.Bottom:=r.Top+10;
if (GetWText(w)=Text)and(PtInRect(R,MOUSEHOOKSTRUCT(Pointer(lParam)^).pt)=True) then
ShowWindow(w, SW_SHOWMINIMIZED);

end;



Result:= CallNextHookEx(GlobalData^.SysHook, Code, wParam, lParam);
end;


function hook(switch : Boolean;S:Pchar):BOOL; export; stdcall;
begin
Text:=S;
if switch=true then
begin
GlobalData^.SysHook := SetWindowsHookEx(WH_MOUSE , @SysMsgProc, HInstance, 0);
if GlobalData^.SysHook <> 0 then Result:=True else Result:=False;
end
else Result:=UnhookWindowsHookEx(GlobalData^.SysHook);
end;

procedure OpenGlobalData();
begin
MMFHandle:= CreateFileMapping(INVALID_HANDLE_VALUE, nil, PAGE_READWRITE, 0, SizeOf(TGlobalDLLData), MMFName);
GlobalData:= MapViewOfFile(MMFHandle, FILE_MAP_ALL_ACCESS, 0, 0, SizeOf(TGlobalDLLData));
if GlobalData = nil then CloseHandle(MMFHandle);
end;

procedure CloseGlobalData();
begin
UnmapViewOfFile(GlobalData);
CloseHandle(MMFHandle);
end;

procedure DLLEntryPoint(dwReason: DWord); stdcall;
begin
case dwReason of
DLL_PROCESS_ATTACH: OpenGlobalData;
DLL_PROCESS_DETACH: CloseGlobalData;
end;
end;

exports hook;

begin
DLLProc:= @DLLEntryPoint;
DLLEntryPoint(DLL_PROCESS_ATTACH);
end.



да но есть ондо но!!!
Устоновка HOOK"a ты должен делать так!!!

....
var
S:PCHAR;
....
s:=VirtualAlloc(nil, DWORD(Length(Caption)), MEM_COMMIT, PAGE_READWRITE);
s:=Pchar(Caption);
hook(true,s);
VirtualFree(s,DWORD(Length(Caption)),MEM_COMMIT);



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

Форум: "WinAPI";
Текущий архив: 2003.06.12;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.008 c
3-34758
YuraKiller
2003-05-19 22:49
2003.06.12
Как наладить работу с пользователями в IB


1-34911
romeomd
2003-06-01 21:22
2003.06.12
Работа с иконками


8-34937
Tihas
2003-03-01 23:41
2003.06.12
Тут такая проблемма....


14-35069
Polevi
2003-05-28 10:55
2003.06.12
Carmina Burana


14-35030
ForExample
2003-05-25 08:10
2003.06.12
Подсчёт людей - требуется идея





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский