Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вопрос по вызову программы из трея. [D7, WinXP]


Страницы:   1 2 3

Руслана ©   (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]

Теперь будем выпуздыривать...


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо