Главная страница
    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
9-8246
com2003
2003-04-28 19:20
2003.11.03
Реализация камеры


7-8683
IntLex
2003-08-16 04:19
2003.11.03
Вызов свойств


3-8280
rosl
2003-10-14 03:35
2003.11.03
сортировка


14-8665
Нурик
2003-10-14 02:40
2003.11.03
Заполнение анкеты


3-8295
Александр Иванов
2003-10-12 10:41
2003.11.03
Глюк MSSQL или моя ошибка?





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