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

Вниз

Очень нужна помощь МАСТЕРОВ, я уже голову сломал..)))   Найти похожие ветки 

 
Anonimus   (2002-11-13 11:18) [0]

Драсти вам..!!!!
У меня вот какая поблема...
Я терминурую каконидь процесс и если у этого процесса была иконка в трее она остается. Чтобы удалить иконку нужно знать окно обработчика и идентификационный номер иконки....
В принципе все просто не неработает..(((((

Вот код программы как я это делаю:

function TForm1.GetProcessHandle (ProcessID: DWORD): THandle;
begin
Result := OpenProcess (PROCESS_ALL_ACCESS, True, ProcessID);
end;

//Получаю список процессов и терминирую его
Var
HandleProcess : DWORD;
nid : NOTIFYICONDATA;
hSnapshoot : THandle;
pe32 : TProcessEntry32;
hTaskBar : hWnd;

hTaskBar := FindWindow (Nil, "Окно приложения");
hSnapshoot := CreateToolhelp32Snapshot (TH32CS_SNAPPROCESS, 0);
if (hSnapshoot = -1) then Exit;
pe32.dwSize := SizeOf (TProcessEntry32);
if (Process32First (hSnapshoot, pe32)) then
repeat
HandleProcess := GetProcessHandle (pe32.th32ProcessID);
if pe32.szExeFile = "Каконидь процесс" then
Begin
TerminateProcess (HandleProcess, 0);
end;
until not Process32Next (hSnapshoot, pe32);
CloseHandle (hSnapshoot);
//вот терминировали процесс и теперь нужно удалить иконку
ZeroMemory (@nid, SizeOf (NOTIFYICONDATA));
NID.hIcon := hTaskBar;
for i := 1 to 10000 do
Begin
nid.uID := i;
Shell_NotifyIcon (NIM_DELETE, @nid);
end;

Вот и у меня возникает пару вопросов:
Что делать Если я не знаю окна обработчика и как узнать uID иконки..?????, а то перебором как то не того.....

Заранее спасибо..


 
Romkin ©   (2002-11-13 13:06) [1]

А ты эмулируй движение мышки над треем, просто сообщение пошли


 
Anonimus   (2002-11-13 15:16) [2]

Это не совсем коректно...
Что бы с эмулировать движение мыши мне придется погасить его курсор, а это значит что это произойдет не совсем заметно для пользователя..

Такчто за фигню всякую спасибо.............


 
Romkin ©   (2002-11-13 17:03) [3]


procedure TForm1.Button1Click(Sender: TObject);
var
TrayWnd, NotifyWnd: HWND;
WindowRect: TRect;
i, j: Integer;
begin
TrayWnd := FindWindow("Shell_TrayWnd", nil);
NotifyWnd := FindWindowEx(TrayWnd, 0, "TrayNotifyWnd", nil);
Windows.GetClientRect(NotifyWnd, WindowRect);
for j := 1 to WindowRect.Bottom div 10 do
for i := 1 to WindowRect.Right div 10 do
SendMessage(NotifyWnd, WM_MOUSEMOVE, 0, (j * 10) shl 16 + (i * 10));
end;

И что здесь гасится, кроме ненужных иконок в трее?


 
Diamond Cat ©   (2002-11-14 02:35) [4]

если не хочется возиться через мышь, то можно сапдейтить сам трей, по идее он сам выкенет не обрабатываемую более иконку



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

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

Наверх




Память: 0.48 MB
Время: 0.014 c
1-99193
Hooch
2002-12-19 09:31
2002.12.30
Word + Delphi


14-99333
Poirot
2002-12-06 10:37
2002.12.30
Uodate for Delphi 7 (link+help link)???


3-99023
BorisUK
2002-12-10 11:10
2002.12.30
ClientDataSet -> OraProvider -> StoredProc -> ORACLE


1-99101
LORD
2002-12-16 20:17
2002.12.30
перетаскивание файлов в EXPLORER


4-99406
Vasily Terekhov
2002-11-14 12:21
2002.12.30
Перехват открытия и закрытия приложения....