Посл.ответ |
Сообщение |
Ранг: 8.0 (гость) Активность: 0=0 Статус: Участник
|
Создано: 05 февраля 2008 00:05 · Личное сообщение · #1
Вобщем проблема такая ....
завершаю чужой процесс зная его pId , но иконка в трее остается ... как ее оттуда удалить ....
повторяю процесс ЧУЖОЙ .... тоесть врядле можно удалить ее ,заюзав
Shell_NotifyIcon(NIM_DELETE,¬e);
хотя хз .... может возможно узнать note.uID ???
| Сообщение посчитали полезным: |
|
Ранг: 516.1 (!), 39thx Активность: 0.28↘0 Статус: Участник
|
Создано: 05 февраля 2008 00:07 · Личное сообщение · #2
где-то я уже видел тему об убийстве иконки в трее в чужом процессе
| Сообщение посчитали полезным: |
 Ранг: 141.4 (ветеран) Активность: 0.05↘0 Статус: Участник
|
Создано: 05 февраля 2008 01:02 · Личное сообщение · #3 |
Ранг: 441.3 (мудрец), 297thx Активность: 0.41↘0.04 Статус: Участник
|
Создано: 05 февраля 2008 01:30 · Поправил: tihiy_grom · Личное сообщение · #4
zx_coder
Попробуй
var
nt: TNotifyIconData;
begin
with nt do begin
cbSize:= SizeOf(nt);
Wnd:=FindWindow(' Класс окна-жертвы', ' Имя окна-жертвы');
uid:= 0;
uFlags:= NIF_ICON or NIF_MESSAGE or NIF_TIP;
uCallbackMessage:= WM_USER + 17;
hIcon:= 0;
szTip:= '';
end;
Shell_NotifyIcon(NIM_DELETE, @nt);
end;
Естественно - до убиения процесса
| Сообщение посчитали полезным: |
Ранг: 253.9 (наставник) Активность: 0.13↘0 Статус: Участник
|
Создано: 05 февраля 2008 09:42 · Личное сообщение · #5
гыы... а можно попробовать послать трэйбару сообщение о перерисовке... или о том, что типа мышка наведена  )
----- MicroSoft? Is it some kind of a toilet paper? | Сообщение посчитали полезным: |
Ранг: 516.1 (!), 39thx Активность: 0.28↘0 Статус: Участник
|
Создано: 05 февраля 2008 10:43 · Личное сообщение · #6
Time, код такой же, только вместо Shell_NotifyIcon, PostMessage/SendMessage
| Сообщение посчитали полезным: |
Ранг: 11.1 (новичок) Активность: 0.01↘0 Статус: Участник
|
Создано: 05 февраля 2008 10:48 · Личное сообщение · #7
Как вариант - можно проэмулировать движение мыши над треем, по всей ширине и через 10-12 пикселей по высоте.
| Сообщение посчитали полезным: |
Ранг: 8.0 (гость) Активность: 0=0 Статус: Участник
|
Создано: 05 февраля 2008 21:23 · Личное сообщение · #8
не ... код не работает !!!
intro тут не то ..... мне надо програмно из другого процесса удалить сушествующую иконку ....
а там код патчится !!!!!
| Сообщение посчитали полезным: |
Ранг: 8.0 (гость) Активность: 0=0 Статус: Участник
|
Создано: 05 февраля 2008 21:26 · Личное сообщение · #9
Twister я пробовал ... но код не работает , если иконка трея скрыта .. те рядом есть кнопка в виде стрелки на которую нажимаешь =)) может остаться .... код не универсален , поэтому в топку
Tim код мессаги о перерисовке можно ????
| Сообщение посчитали полезным: |
 Ранг: 240.5 (наставник) Активность: 0.19↘0 Статус: Участник Author of ACKiller
|
Создано: 05 февраля 2008 21:56 · Личное сообщение · #10
В аттаче часть исходника эксплорера, отвечающая за трей.
Может быть ты сам найдешь то, что нужно. 79be_05.02.2008_CRACKLAB.rU.tgz - explorer.rar
| Сообщение посчитали полезным: |
Ранг: 441.3 (мудрец), 297thx Активность: 0.41↘0.04 Статус: Участник
|
Создано: 07 февраля 2008 22:40 · Поправил: tihiy_grom · Личное сообщение · #11
zx_coder
как он не работает, если я специально проверил его перед тем как выложить? Успешно были убиты иконки у DownloadMaster и проги от C-Media.
Ты скорее всего не тот хэндл выбираешь, у процесса может быть несколько дочерних окон
Ради тебя ещё раз проверил и со скрытым трэем и с не скрытым. В любом случае иконка умирает
Найди себе прогу которая мониторит сообщения системы и посмотри в ней, к какому хэндлу привязана твоя иконка
| Сообщение посчитали полезным: |
 Ранг: 392.8 (мудрец), 108thx Активность: 0.26↘0.01 Статус: Участник REVENGE сила, БеХоЦе могила
|
Создано: 08 февраля 2008 07:09 · Поправил: Maximus · Личное сообщение · #12
tihiy_grom может быть он этот код выполняет ПОСЛЕ того как прибил процесс.
В любом случае у меня вчера тоже встала такая задача, по этому проверю твой код.
P.S: Попробовал до прибития процесса и после, код НЕ работает (Система XPSP2) !!!
Зато заработало так:
program Kill_Bill;
uses
Windows,
ShellApi, Messages;
var HW_Prog, Process: Dword;
nt: TNotifyIconData;
begin
// Если программа запущена, прибиваем
HW_Prog:= FindWindow('Класс', 'Заголовок окна');
if HW_Prog<>0 then begin
// Убиваем иконку из трея
with nt do begin
Wnd:=HW_Prog;
cbSize:= SizeOf(nt);
uid:= 1;
uFlags:= NIF_ICON or NIF_MESSAGE or NIF_TIP;
uCallbackMessage:= WM_USER + 17;
hIcon:= 0;
szTip:= '';
end;
Shell_NotifyIcon(NIM_DELETE, @nt);
// Убиваем прогу
GetWindowThreadProcessID(HW_Prog, @PID);
if PID<>0 then begin
Process := OpenProcess(PROCESS_TERMINATE, False, PID);
if Process<> 0 then begin
TerminateProcess(Process, 0);
WaitForSingleObject(Process, INFINITE);
CloseHandle( Process );
end;
end;
end;
end.
----- StarForce и Themida ацтой! | Сообщение посчитали полезным: |
Ранг: 441.3 (мудрец), 297thx Активность: 0.41↘0.04 Статус: Участник
|
Создано: 08 февраля 2008 13:21 · Поправил: tihiy_grom · Личное сообщение · #13
Maximus, фиг знает, у меня тоже XPSP2, и всё работает с uid:=0
С uid:=1 не проверял
И какой вообще смысл использовать этот код после убития процесса, если хэндла с иконкой уже нет в системе? Только если действительно трэю сообщение о перерисовке посылать
| Сообщение посчитали полезным: |