![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопрос по вызову программы из трея. [D7, WinXP]
Руслана © (2005-01-30 00:45:00)Тут уже мелькал подобный вопрос, но к сожалению, ответы на него мне не помогли.
Имеется приложение. С помощью компонента CoolTray оно живет в трее (большую часть времени). Необходимо чтобы при попытке запуска второй копии востанавливалось приложение которое уже сидит в трее (конечно, если сидит). Мне кажется, что лучше всего использовать собственные сообщения. То есть при наличии в трее первой копии послать ей сообщение что надо восстановится. Но с практической реализацией не получается. Вот код - помогите зарегистрировать собственное сообщение и покажите как его послать и отловить. Заранее благодарна...
program TahionN;
uses
Forms,
Windows,
Messages,
Dialogs,
{$R *.res}
var
UniqueMapping:THandle;
h:hWnd;
Handle2 : LongInt;
begin
UniqueMapping:= CreateFileMapping($ffffffff, nil, PAGE_READONLY, 0, 32, 'MyMap');
if UniqueMapping = 0 then
begin
ShowMessage('Ошибка выделения памяти');
Halt;
end
else if GetLastError = ERROR_ALREADY_EXISTS then
begin
ShowMessage('Программа уже запущена');
h:=FindWindow(nil, 'Tahionn');
Handle2 := GetWindow(h,GW_OWNER);
ShowWindow(Handle2,SW_Show);
ShowWindow(Handle2,SW_RESTORE);
SetForegroundWindow(h); // Активизиpуем
Halt;
end;
Application.Initialize;
Application.CreateForm(TMainForm, MainForm);
Application.CreateForm(TDataModule1, DataModule1);
Application.CreateForm(TFormInfo, FormInfo);
Application.CreateForm(TFormOption, FormOption);
Application.CreateForm(TFormErase, FormErase);
Application.CreateForm(TFormDTMFPass, FormDTMFPass);
Application.CreateForm(TFormProgramm, FormProgramm);
Application.Run;
end.
Руслана (2005-01-30 01:37:00) [41]To olookin:Не помогает
Руслана (2005-01-30 01:34:00) [42]To olookin: Ща попробую
Неужели никто не сталкивался с такой проблемой и не решил ее?
Не верю.
iskatel (2005-01-30 01:34:00) [43]2olookin а что такое nil?
Руслана (2005-01-30 01:31:00) [44]Это мобильник который давно украли, а мыло осталось :(
olookin (2005-01-30 01:31:00) [45][9] iskatel © (30.01.05 01:22)
h по-моему надо на 0 проверять, а не на nil
Руслана (2005-01-30 01:26:00) [46]Код который написан вверху был опробован с разными иконками в трее. И не одну он оттуда не поднял. Вряд ли он правильный.
Я прошу написать пример как все это сделать правильно...
kaZaNoVa (2005-01-30 01:24:00) [47]Руслана (30.01.05 1:20) [8]
ты на Украине, позвонить можно?
//что-то мыло твоё очень номер телефона напоминает))
какой код?
iskatel (2005-01-30 01:24:00) [48]тогда проще и правда послать своей проге собственное сообщение, обработав которое она развернется...
iskatel (2005-01-30 01:22:00) [49]очень содержательные у тя ответы, но мы только начинающие телепаты... скажи что нить конкретное, проверь в отладчике h и Handle2 у тебя не nil
Руслана (2005-01-30 01:20:00) [50]Хендлы находятся. Но из трее не вылазит. Если лежит на панели задач - тогда восстанавливается.
Руслана (2005-01-30 01:18:00) [51]Я в тех исходниках ничего не поняла
DrPass (2005-01-30 01:17:00) [52]Ты ему лучше вместо всего этого
> ShowWindow(Handle2,SW_Show);
> ShowWindow(Handle2,SW_RESTORE);
пошли сообщение, которое выдает иконка в трее (если не знаешь какое, загляни в исходники этой компоненты)
iskatel (2005-01-30 01:14:00) [53]что то я не въехал - какое собственное? ты же посылаешь виндовское...
что показывает отладчик? хендлы находятся?
Руслана (2005-01-30 01:12:00) [54]А по теме что нибудь написать?
Andy BitOff (2005-01-30 01:11:00) [55]Ой, извините, я не подумал, что меня можно не так понять. Но мого Вас уверить, в моих словах небыло ничего не приличного. :)
Руслана (2005-01-30 01:01:00) [56]В смысле?
Andy BitOff (2005-01-30 00:51:00) [57]Теперь будем выпуздыривать...