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

Вниз

как сделать хук на WM_COPYDATA   Найти похожие ветки 

 
Kirill_S   (2003-06-05 12:19) [0]

Господа, как сделать хук на WM_COPYDATA чтобы перехватывать добавление, удаление, модификацию иконок приложений в стандартном трее? Может есть у кого примерчик?


 
Spawn   (2003-06-05 16:27) [1]

SetWindowsHook + WH_GETMESSAGE + Help ?


 
Kirill_S   (2003-06-05 16:43) [2]

да, если можно:)


 
Spawn   (2003-06-05 17:17) [3]

А ты уверен, что иконки изменяются при помощи WM_COPYDATA?


 
Kirill_S   (2003-06-05 17:25) [4]

Здесь _ http://rsdn.ru/forum/Message.aspx?mid=93662&only=1_ рассказывается как реализовать в своей программе SystemTray, но на второй вопрос там же (как получить список программ свернутых в Tray?) толкового ответа не дано, только: Если нужно просто перехватывать добавление/удаление/модификацию иконок в стандартном трее, а не писать свой, то здесь поможет хук. Ловите WM_COPYDATA, а дальше - аналогично своему трею.

Мне нужно реализовать как раз именно это! , т.е. отловить в трее иконку приложения и спрятать ее любым способом, хоть API, хоть нет, без разницы. Этот вопрос я задавал в других ветках и форумах, но никто не дает нормального ответа:(


 
Spawn   (2003-06-05 17:42) [5]

Погоди маленько - если будет время, то завтра, послезавтра чо нить помозгую))


 
Kirill_S   (2003-06-05 17:49) [6]

ОК, буду очень признателен, спасибо!


 
Kirill_S   (2003-06-09 15:48) [7]

никаких вариантов?


 
Spawn   (2003-06-10 10:01) [8]

Сори нету щас времени, чтобы детально все изучать (все таки сдача диплома на носу). Но вот тебе каркас ДЛЛ-ки. Поэксперементируй, может что получится.

library HookWMCopyData;

uses
SysUtils,
Windows,
Dialogs,
Forms,
Messages;


var
HookHandle:THandle;

{$R *.res}

function MsgProc(Code:integer;wParam:word;lParam:longint):longint;stdcall;
var
Msg: PMsg;
begin
Msg := Pointer(lParam);
if code < 0 then
begin
Result:=CallNextHookEx(HookHandle,Code,wParam,lParam);
Exit;
end;
if Msg.message=WM_COPYDATA then
begin
//Делать что то
end;
CallNextHookEx(HookHandle,Code,wParam,lParam);
Result:= 0;
end;

procedure SetHook; export; stdcall;
begin
HookHandle := SetWindowsHookEx(WH_GETMESSAGE, @MsgProc, HInstance, 0);
end;

procedure FreeHook;export;stdcall;
begin
UnhookWindowsHookEx(HookHandle);
end;

exports
SetHook,
FreeHook;
begin

end.

Запускаешь из своей проги:

var
Form1: TForm1;
hDLL: THandle;

implementation

{$R *.dfm}



procedure TForm1.Button1Click(Sender: TObject);
var
SetHook: procedure; stdcall;
begin
@SetHook:= nil;
hDLL:=LoadLibrary(PChar("Hook.dll"));
if hDLL > HINSTANCE_ERROR then
begin
@SetHook:=GetProcAddress(Hdll, "SetHook");
if @SetHook<>nil then
SetHook;
end
else
ShowMessage("ошибка подключения DLL !");
end;



procedure TForm1.Button2Click(Sender: TObject);
var
FreeHook: procedure; stdcall;
begin
@FreeHook:=nil;
@FreeHook:=GetProcAddress(Hdll, "FreeHook");
if @FreeHook<>nil then
FreeHook;
FreeLibrary(hDLL);
end;

Если будут вопросы пиши.


 
Kirill_S   (2003-06-10 10:57) [9]

>Spawn :

ОК, большое спасибо!, буду разбираться.

ЗЫ: с меня пиво:)



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

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

Наверх




Память: 0.47 MB
Время: 0.011 c
1-81736
Anatoly Podgoretsky
2003-08-10 16:16
2003.08.25
Test


7-81971
SeF
2002-12-17 04:54
2003.08.25
---|Ветка была без названия|---


8-81851
Катя
2003-04-22 14:54
2003.08.25
AVI файл


11-81604
Brat-2
2002-12-15 21:22
2003.08.25
IdHTTP.Get на KOL


1-81831
dataMaster
2003-08-13 12:58
2003.08.25
OpenDialog и его размеры





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский