Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.11.03;
Скачать: CL | DM;

Вниз

Передача переменных в работающее приложение   Найти похожие ветки 

 
Alex_Y   (2003-08-29 12:32) [0]

Как заставить своё открытое приложение отработать с новыми параметрами?

У меня работает программа Myprog.exe с параметером param1.
Я хочу, чтобы она продолжала работать, но с параметром param2.

Аналогичный пример: Перезапуск открытого окна IE с новым адресом.
Есть ещё вариант: некоторые MDI приложения могут открывать дополнительные дочерние окна при повторных вызовах из командной строки с параметрами.


 
Maratvg   (2003-08-29 12:40) [1]

Для передачи информации из второй копии приложения в первую я использую MailSlot + нотификация первой копии через PostMessage.


 
clickmaker ©   (2003-08-29 12:40) [2]

При запуске (перед Application.Run) определять, запущено ли уже, с помощью FindWindow например. Если да, то не создавать новый экземпляр, а посылать определенное тобой сообщение найденному окну, типа WM_CHANGEPARAM и сам Param в wParam или LParam. Ну а дальше - дело техники


 
Alex_Y   (2003-08-29 13:06) [3]

>Maratvg
Простите, что такое MailSlot+ ?

>clickmaker ©
WM_CHANGEPARAM не обнаружил в Win32.hlp, поэтому не совсем (точнее, совсем не) понял, чем и куда его посылать.


 
Maratvg   (2003-08-29 13:10) [4]

вот как раз в win32 и написано про MailSlot.
Смотреть надо функцию CreateMailSlot и рядом с ней.
Работает как очередь сообщений, только можно передавать все что угодно в любых количествах.


 
Alex_Y   (2003-08-29 13:30) [5]

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

В принципе, простое завершение 1 экземпляра приложения и запуск 2-го работает стабильно, но о-очень медленно. Какие возможны другие варианты?
Например, возможно ли при запуске 2-го экземпляра инициировать событие в 1-м, при этом заменив значение некоторых переменных в 1-м из 2-го?


 
HolACost! ©   (2003-08-29 13:35) [6]

Возможен сообще интересный вариант - WM_COPYDATA например!
Работает нормально, но только с самими ресурсами, которые будешь перемещать могут быть проблемы, т.к. тперегкидывать будешь адреса...
Есть вариант C маппированными в память файлами !


 
Maratvg   (2003-08-29 13:38) [7]

Время отклика можно победить посылая дополнительно обыкновенное сообщение первой копии приложения, что-то типа "прочитай новые данные из слота".


 
N169   (2003-08-29 15:28) [8]

>Какие возможны другие варианты?

Общая структура данных в file mapping. Плюс 2 именованных события event, одно на синхронизацию записи в эту структуру ("арбитр"), другое как сигнализатор изменения ("request", запрос выполнения действия).
Всегда так делаю, пока без проблем.


 
Alex_Y   (2003-08-29 16:52) [9]

>N169
Если возможно, пример кода, пожалуйста.



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

Текущий архив: 2003.11.03;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.026 c
3-8284
Кабан
2003-10-13 13:56
2003.11.03
где можно взять mysqllib.dll c функцией mysql_field_seek


3-8260
vvvvvvvvv
2003-10-14 12:42
2003.11.03
Где справочник по ADO SQL найти?


3-8303
uu
2003-10-13 13:10
2003.11.03
обьединение таблиц


3-8317
Sodom
2003-10-13 10:08
2003.11.03
Проблема с русскими буквами в Firebird.


8-8550
dozer
2003-06-29 01:05
2003.11.03
ShockwaveFlash в Delphi