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

Вниз

Как передать программе параметр?   Найти похожие ветки 

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.041 c
8-1165861296
DriveR_F
2006-12-11 21:21
2007.09.16
Работа с TImage и GIF


15-1187432782
Riply
2007-08-18 14:26
2007.09.16
Удаление анкеты.


15-1187538724
Piter
2007-08-19 19:52
2007.09.16
Очень классная иллюзия


3-1179312724
MZ
2007-05-16 14:52
2007.09.16
Импорт из *.dbf в FireBird


1-1183640451
Seldoff
2007-07-05 17:00
2007.09.16
CompareStr vs StrComp





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