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

Вниз

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

 
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 вся ветка

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

Наверх





Память: 0.46 MB
Время: 0.008 c
3-8319
mari
2003-10-14 16:28
2003.11.03
работа со строками


14-8640
Delirium^.Tremens
2003-10-14 09:50
2003.11.03
Осознанный сон III - го уровня


8-8545
Сергей Ю.
2003-06-30 21:37
2003.11.03
Вывод текста в игре?


14-8670
Думкин
2003-10-11 04:55
2003.11.03
С днем рождения! 11 октября.


1-8478
Mishenka
2003-10-24 00:17
2003.11.03
Как распечататьна принтере bmp файл?





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