Текущий архив: 2007.09.16;
Скачать: CL | DM;
ВнизКак передать программе параметр? Найти похожие ветки
← →
ilya85 (2007-08-23 00:41) [0]Есть программа, к которой можно передать параметр. Допустим Winamp или любой другой проигрователь. Я знаю какой именно парамтр нужно передать, например -plyNextSong. Вопрос как передать этот парамет программе?
Чтобы запустить программу с параметром я использовал:
ShellExecute(0,nil,"1.exe",PChar(" + plynext"),nil,SW_SHOWNORMAL);
А я хочу передать программе ещё раз параметр: PChar(" + plynext"), но без запуска ещё одной копии 1.exe
← →
Джо © (2007-08-23 00:43) [1]Параметры коммандной строки передаются программе при ее запуске.
← →
sniknik © (2007-08-23 00:45) [2]запускаемую программу (1.exe) ты сам пишешь?
← →
ilya85 (2007-08-23 00:46) [3]sniknik ©
да
← →
Германн © (2007-08-23 00:47) [4]
> А я хочу передать программе ещё раз параметр: PChar(" +
> plynext"), но без запуска ещё одной копии 1.exe
>
Такие параметры передаются программам в командной строке и по умолчанию имеют смысл только при старте программ. Иное, относится к имеющимся у конкретной программы возможностям принять некую информацию (команду). Ищи в описании данной программы эту возможность.
← →
Германн © (2007-08-23 00:49) [5]Я очень медленно жму на клавиши :(
← →
Джо © (2007-08-23 01:03) [6]> [3] ilya85 (23.08.07 00:46)
> sniknik ©
> да
Тогда следует передавать параметры иным способом. Каким? Кури (обширную) тему Interprocess communication (IPC).
← →
Германн © (2007-08-23 01:12) [7]
> Джо © (23.08.07 01:03) [6]
>
> > [3] ilya85 (23.08.07 00:46)
> > sniknik ©
> > да
>
> Тогда следует передавать параметры иным способом. Каким?
> Кури (обширную) тему Interprocess communication (IPC).
>
Эээ. А стоит ли тут "курить" тему Interprocess communication (IPC)? Тут ведь стоит курить тему "запуск второго экземпляра той же самой программы". Или я не прав?
← →
Джо © (2007-08-23 01:23) [8]> [7] Германн © (23.08.07 01:12)
> Тут ведь стоит курить тему "запуск второго экземпляра
> той же самой программы". Или я не прав?
Ведь человек вроде ясно написал: «но без запуска ещё одной копии 1.exe». Так не лучше ли передавать параметры уже запущенной копии?
← →
Германн © (2007-08-23 01:33) [9]
> > [7] Германн © (23.08.07 01:12)
> > Тут ведь стоит курить тему "запуск второго экземпляра
> > той же самой программы". Или я не прав?
>
> Ведь человек вроде ясно написал: «но без запуска ещё одной
> копии 1.exe». Так не лучше ли передавать параметры уже запущенной
> копии?
>
Лучше, ес-сно! Но ведь (Блин! я убью морально свою дщерь, когда она вернётся с моря!)
← →
Германн © (2007-08-23 01:37) [10]В полном негодовании нажал кнопку. :)
Но тут именно тема "запуска второго экземпляра программы", имхо.
← →
Джо © (2007-08-23 02:45) [11]> [10] Германн © (23.08.07 01:37)
> В полном негодовании нажал кнопку. :)
> Но тут именно тема "запуска второго экземпляра программы",
> имхо.
Еще раз подчеркну, что в [0] явно сказано следующее:
— но без запуска ещё одной копии 1.exe
← →
Германн © (2007-08-23 03:10) [12]
> Джо © (23.08.07 02:45) [11]
>
> > [10] Германн © (23.08.07 01:37)
> > В полном негодовании нажал кнопку. :)
> > Но тут именно тема "запуска второго экземпляра программы",
>
> > имхо.
>
> Еще раз подчеркну, что в [0] явно сказано следующее:
> — но без запуска ещё одной копии 1.exe
>
Дык и я о том же :)
Ну или и я и ты идём лесом! :)
← →
sniknik © (2007-08-23 08:45) [13]без запуска не получится, если программу запускают то она запускается....
тебе надо в ней получить параметр, после найти первую копию (если она есть), передать этот параметр ей, и завершится (если нет первой копии то запуск стандартным образом).
+ в программе для получения переданного из второй копии должна быть обработка (прием) посылки.
ничего сложно в общем то, получить параметр это см. ParamSts и связанное, искать копию FindWindow (если нет окон, то искать процесс это чуть сложнее), передать данные параметра это см. WM_COPYDATA (получить данные это этоже)
пробуй.
это кстати не единственный вариант, а только, имхо, самый простой. передачу можно организовывать разными методами, получать хендл первой копии тоже, а можно и не получать а просто организовать обмен через чтото общее (файлы, пайпы, сокеты...). можно саму программу сделать в виде сервера автоматизации, тогда можно в нем просто определить метод - "получить новый параметр", или несколько (параметр plynext (перевод особенно если написать правильно playnext) наводит на мысль о попытке внешнего управления, а вовсе о передачах параметров...)
← →
sniknik © (2007-08-23 08:47) [14]сорри ошибся, ParamSts это ParamStr.
← →
Dimaxx © (2007-08-23 10:51) [15]Winamp может принимать сообщения, которые могут управлять его работой. Достаточно найти дескриптор его окна с заголовком "Winamp v1.x" и посылать ему сообщения через SendMessage. Например, некоторые:
40029 - Open file dialog of WinAmp
40044 - Previous track button of WinAmp
40048 - Next track button of WinAmp
40045 - Play button of WinAmp
40046 - Pause/Unpause button
40047 - Stop button of WinAmp
40148 - Fast-forward 5 seconds of WinAmp
40144 - Fast- rewind 5 seconds of WinAmp
40001 - Close Winamp of WinAmp
40058 - Raise volume by 1% of WinAmp
40059 - Lower volume by 1% of WinAmp
Раз пишешь свою программу, то сделай у себя также. Перехватывай сообщения и отсеивай определенные коды и в соотвествии с ними выполняй команды.
Страницы: 1 вся ветка
Текущий архив: 2007.09.16;
Скачать: CL | DM;
Память: 0.49 MB
Время: 0.044 c