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

Вниз

System Tray...........   Найти похожие ветки 

 
-=@ndrew=-   (2003-08-29 09:42) [0]

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


 
DVM   (2003-08-29 10:35) [1]

procedure KillNotify(pid:dword);
begin {убираем знчок}
EnumWindows(@enumwindowscallbacknotify,pid);
end;

function EnumWindowsCallbackNotify(window:hwnd;pid:dword):bool;stdcall;
var {вспомогательная callback-функция для EnumWindows}
winpid:dword;{Вспомогательная переменная}
NID:NotifyIcondata;{Структура, отвечающая за иконку}
cntr:integer;{Счётчик}
begin
result:=true;
NID.cbSize:=sizeof(nid);
GetWindowThreadProcessId(window,@winpid); {получаем процесс (PID) для окна}
if winpid=pid then {если окно принадлежит нашему процессу}
begin
result:=false;
nid.Wnd:=window; {Заполняем поле, отвечающее за окно-владельца}
{перебор (до описателя окна, и хотя можно покрыть весь диапазон, но...)}
for cntr:=1 to window do
begin
NID.uID:=cntr;{ID! Мы его не знаем, и поэтому перебор}
if Shell_NotifyIcon(NIM_Delete,@NID) then break; {удаляем иконку}
end;
end;
end;

подробнее тут:

http://www.programme.ru/archive/2001/3/032001_1.phtml


 
-=@ndrew=-   (2003-09-03 08:51) [2]

огромное спасибо!!!!!


 
Song   (2003-09-03 08:55) [3]

Оригинально..


 
Plok   (2003-09-03 10:45) [4]

а кто-нибудь может подробней объяснить.....
на примере какой-нибудь проги.......


 
Plok   (2003-09-03 11:29) [5]

что-то я тутсовсем не могу понять, чью иконку этот текст закрывает??? и что никто не может привести более подробр\ный пример???


 
Plok   (2003-09-03 11:54) [6]

людииииииии ну объясните человеку как это работает....


 
DVM   (2003-09-03 12:16) [7]

Ну что не понятно то? Вызываешь procedure KillNotify(pid:dword);
где PID - PID нужного процесса. Как получить PID, зная название окна или имя запускаемого файла это другой вопрос.


 
Plok   (2003-09-03 12:21) [8]

подскажите тогда как получмть PID??????????


 
DVM   (2003-09-03 12:36) [9]

Ты вообще смотрел код написанный выше? Строка GetWindowThreadProcessID() не на какие мысли не наводит? :)

Заодно уж Handle окна можно получить с помощью FindWindow() по его классу или заголовку.


 
Plok   (2003-09-03 12:53) [10]

а вот тут покажите мне ошибку, пожалуйста...

var
Form1: TForm1;
wind:Hwnd;
hand:dword;

implementation

{$R *.dfm}
function EnumWindowsCallbackNotify(window:hwnd;pid:dword):bool;stdcall;
var {


 
DVM   (2003-09-03 13:04) [11]

var PID:DWORD;
begin
GetWindowThreadProcessID(WND, @PID);
end;

вот этот PID и надо подставить в KillNotify.

И не надо трогать EnumWindowsCallbackNotify!


 
Plok   (2003-09-03 13:21) [12]

Вы имеете в виду вот так:

var
Form1: TForm1;
PID:dword;

implementation

{$R *.dfm}
function EnumWindowsCallbackNotify(window:hwnd;pid:dword):bool;stdcall;
var {


 
DVM   (2003-09-03 13:59) [13]

Я имею ввиду вот так:

var
Form1: TForm1;
ID: dword;

implementation

{$R *.dfm}

function EnumWindowsCallbackNotify(window:hwnd;pid:dword):bool;stdcall;
var {вспомогательная callback-функция для EnumWindows}
winpid:dword;{Вспомогательная переменная}
NID:NotifyIcondata;{Структура, отвечающая за иконку}
cntr:integer;{Счётчик}
begin
result:=true;
NID.cbSize:=sizeof(nid);
GetWindowThreadProcessId(window,@winpid); {получаем процесс (PID) для окна}
if winpid=pid then {если окно принадлежит нашему процессу}
begin
result:=false;
nid.Wnd:=window; {Заполняем поле, отвечающее за окно-владельца}
{перебор (до описателя окна, и хотя можно покрыть весь диапазон, но...)}
for cntr:=1 to window do
begin
NID.uID:=cntr;{ID! Мы его не знаем, и поэтому перебор}
if Shell_NotifyIcon(NIM_Delete,@NID) then break; {удаляем иконку}
end;
end;
end;

procedure KillNotify(pid:dword);
begin {убираем знчок}
EnumWindows(@enumwindowscallbacknotify,pid);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
GetWindowThreadProcessID(WND, @ID);
KillNotify(ID);
end;


 
Plok   (2003-09-03 15:48) [14]

to DVM

> GetWindowThreadProcessID(WND, @ID);

откуда тогда здесь WND?? к чему оно вообще относится??
у меня в приложении есть компонент с иконкой, и нужно, чтобы при нажатии кнопки иконка проподала из trey"я, мне не нужны стандартные средства компонента, потому что приложение экспериментальное..... а вообще я хотел убрать из трея иконку любого постороннего приложения, к примеру ReGet"a...
если Вам не трудно помогите это воплотить...


 
Plok   (2003-09-04 07:32) [15]

???????????????????????????


 
DVM   (2003-09-04 10:51) [16]

Ну............Нет слов!!!!!!!!!!!!!!!!
Ты сам себе противоречишь и ответы читаешь невнимательно!!!!
1)

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

2)

> уважаемые мастера, подскажите возможно ли скрыть из трея
> иконку чужого приложения

3) Откуда берется WND????
Я же писал:

> Заодно уж Handle окна можно получить с помощью FindWindow()
> по его классу или заголовку.

Если это твое приложение, то WND - это HANDLE. Но так как написано выше убирать иконку - УЖЕ ИЗВРАЩЕНИЕ!!!
Для этого есть просто NIM_Delete!!!

Ты извини, конечно, но рановато тебе такими вещами заниматься!


 
DVM   (2003-09-04 10:53) [17]

Для чужого приложения:

procedure TForm1.Button1Click(Sender: TObject);
begin
GetWindowThreadProcessID(Findvindow(nil, "заголовок того приложения"), @ID);
KillNotify(ID);
end;

Для твоего
procedure TForm1.Button1Click(Sender: TObject);
begin
GetWindowThreadProcessID(HANDLE, @ID);
KillNotify(ID);
end;


 
Plok   (2003-09-04 16:01) [18]

Да я понимаю, что рано, но все таки интересно стало, можно ли такое вообще воплотить :-)



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

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

Наверх




Память: 0.48 MB
Время: 0.034 c
14-41908
men-person
2003-10-21 14:40
2003.11.13
приколы


3-40847
stud
2003-10-20 16:59
2003.11.13
и опять эти события


1-41610
Pavels
2003-10-26 17:02
2003.11.13
подскажите форумы линки посвященные графике под Дельфи


1-41442
Zheks
2003-10-29 12:59
2003.11.13
Дата создания файла


1-41218
ildar
2003-11-01 17:37
2003.11.13
Обработка событий от объекта -свойства





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