Форум: "WinAPI";
Текущий архив: 2002.12.30;
Скачать: [xml.tar.bz2];
ВнизОчень нужна помощь МАСТЕРОВ, я уже голову сломал..))) Найти похожие ветки
← →
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 вся ветка
Форум: "WinAPI";
Текущий архив: 2002.12.30;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.009 c