Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Мессага одной программы для другой 
:(
    Опции темы
Sniper
Дата 4.4.2004, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 511
Регистрация: 8.5.2002

Репутация: нет
Всего: 2



Вообщем такая ситуация....
работает одна прога (№1). В ней нажимается кнопка и загружается другая прога(№2), а программа (№1) сворачивается в TaskBar.... Далее, поработали с программой (№2) и в ней уже нажимаем кнопку и должно произойти следующее: программа №2 должна закрыться вернув при этом из TaskBar'a программу №1
Вопрос. как это всё реализовать? в смысле через посылку каких сообщений?


--------------------
"Я испытываю отвращение к системе, разработаннной для "пользователя", если в слове "пользователь" закодировано уничижительное значение "тупой и примитивный".
Кен Томпсон, создатель Unix
PM MAIL   Вверх
p0s0l
Дата 4.4.2004, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 14
Всего: 112



Можно попробовать так:

Прога №1
Код
procedure TForm1.Button1Click(Sender : TObject);
var
 si  : STARTUPINFO;
 pi : PROCESS_INFORMATION;
begin
 < настройка si >;
 CreateProcess(...); // запуск проги №2
 ShowWindow(Handle, SW_MINIMIZE); // в таскбар сворачиваем №1
 WaitForSingleObject(pi.hProcess, INFINITE); // ждём завершения проги №2
 ShowWindow(Handle, SW_SHOWNORMAL); // разворачиваем прогу №1
end;

В проге №2 на кнопку надо повесить завершение этой проги...



--------------------
С уважением, г-н Посол.
PM   Вверх
Alex
Дата 4.4.2004, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 6
Всего: 162





--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
Sniper
Дата 4.4.2004, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 511
Регистрация: 8.5.2002

Репутация: нет
Всего: 2



p0s0l
Я решил использовать вместо CreateProcess - ShellExecute... Я не много потерял? smile.gif
И ещё самое главное это то, что у меня OpenGL приложение, написанное на чистом WINAPI tounge.gif
И там Handle окна прописывается вот так:
h_wnd: HWND;
и сворачивание НЕ происходит! sad.gif


--------------------
"Я испытываю отвращение к системе, разработаннной для "пользователя", если в слове "пользователь" закодировано уничижительное значение "тупой и примитивный".
Кен Томпсон, создатель Unix
PM MAIL   Вверх
pascal
Дата 5.4.2004, 02:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 16.7.2003
Где: Россия - Уфа

Репутация: 1
Всего: 1



Цитата
вместо CreateProcess - ShellExecute... Я не много потерял?

Много...

Цитата
и сворачивание НЕ происходит!

Application.Minimize;
Application.Restore;

Цитата
h_wnd: HWND;

HWND это тот же самый THandle

Цитата
написанное на чистом WINAPI

Не важно как написано

PM MAIL WWW ICQ   Вверх
p0s0l
Дата 5.4.2004, 07:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 14
Всего: 112



Цитата
Не важно как написано

Ну если у него чисто WinAPI, никаких uses Forms, то Application.Minimize делать нельзя, т.к. нет никакого Application...
Цитата
Цитата 
вместо CreateProcess - ShellExecute... Я не много потерял?

Много...

Да. У тебя нет handle процесса второй проги (хотя можно его получить и без CreateProcess, но зачем лишний геморрой).
Если же не дожидаться завершения второй проги, тогда придется делать сообщения по примеру alex-co. Правда способ будет побольше.



--------------------
С уважением, г-н Посол.
PM   Вверх
p0s0l
Дата 5.4.2004, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 14
Всего: 112



Вот пример: прога №1 запускает калькулятор (прога №2) и прога №1 сворачивается; после того, как калькулятор закрыли, прога №1 обратно разворачивается...
Код
procedure Messages; // Вместо Application.ProcessMessages;
var Msg: TMsg;
begin
 if PeekMessage(Msg, 0, 0, 0, PM_REMOVE) then
 begin
   TranslateMessage(Msg);
   DispatchMessage(Msg);
 end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 si : STARTUPINFO;
 pi : PROCESS_INFORMATION;

begin
 h_wnd := Handle;
 SendMessage(h_wnd, WM_SYSCOMMAND, SC_MINIMIZE, 0);
 Messages;

 ZeroMemory(@si, SizeOf(si));
 si.cb := SizeOf(si);
 CreateProcess('c:\windows\system32\calc.exe',
                nil,
                nil,
                nil,
                False,
                0,
                nil,
                nil,
                si,
                pi);

 WaitForSingleObject(pi.hProcess, INFINITE);

 PostMessage(h_wnd, WM_SYSCOMMAND, SC_RESTORE, 0);
 SetForegroundWindow(h_wnd);
end;





--------------------
С уважением, г-н Посол.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

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

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0513 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.