Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как передать программе параметр?


ilya85 ©   (2007-08-23 00:41:00) 

Есть программа, к которой можно передать параметр. Допустим Winamp или любой другой проигрователь. Я знаю какой именно парамтр нужно передать, например -plyNextSong. Вопрос как передать этот парамет программе?

Чтобы запустить программу с параметром я использовал:
ShellExecute(0,nil,'1.exe',PChar(' + plynext'),nil,SW_SHOWNORMAL);

А я хочу передать программе ещё раз параметр: PChar(' + plynext'), но без запуска ещё одной копии 1.exe


Dimaxx   (2007-08-23 10:51:00) [1]

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

Раз пишешь свою программу, то сделай у себя также. Перехватывай сообщения и отсеивай определенные коды и в соотвествии с ними выполняй команды.


sniknik   (2007-08-23 08:47:00) [2]

сорри ошибся, ParamSts это ParamStr.


sniknik   (2007-08-23 08:45:00) [3]

без запуска не получится, если программу запускают то она запускается....
тебе надо в ней получить параметр, после найти первую копию (если она есть), передать этот параметр ей, и завершится (если нет первой копии то запуск стандартным образом).
+ в программе для получения переданного из второй копии должна быть обработка (прием) посылки.

ничего сложно в общем то, получить параметр это см. ParamSts и связанное, искать копию FindWindow (если нет окон, то искать процесс это чуть сложнее), передать  данные параметра это см. WM_COPYDATA (получить данные это этоже)
пробуй.

это кстати не единственный вариант, а только, имхо, самый простой. передачу можно организовывать разными методами, получать хендл первой копии тоже, а можно и не получать а просто организовать обмен через чтото общее (файлы, пайпы, сокеты...). можно саму программу сделать в виде сервера автоматизации, тогда можно в нем просто определить метод - "получить новый параметр", или несколько (параметр plynext (перевод особенно если написать правильно playnext) наводит на мысль о попытке внешнего управления, а вовсе о передачах параметров...)


Германн   (2007-08-23 03:10:00) [4]


> Джо ©   (23.08.07 02:45) [11]
>
> > [10] Германн ©   (23.08.07 01:37)
> > В полном негодовании нажал кнопку. :)
> > Но тут именно тема "запуска второго экземпляра программы",
>
> > имхо.
>
> Еще раз подчеркну, что в [0] явно сказано следующее:
> — но без запуска ещё одной копии 1.exe
>

Дык и я о том же :)
Ну или и я и ты идём лесом! :)


Джо   (2007-08-23 02:45:00) [5]

> [10] Германн ©   (23.08.07 01:37)
> В полном негодовании нажал кнопку. :)
> Но тут именно тема "запуска второго экземпляра программы",
> имхо.

Еще раз подчеркну, что в [0] явно сказано следующее:
— но без запуска ещё одной копии 1.exe


Германн   (2007-08-23 01:37:00) [6]

В полном негодовании нажал кнопку. :)
Но тут именно тема "запуска второго экземпляра программы", имхо.


Германн   (2007-08-23 01:33:00) [7]


> > [7] Германн ©   (23.08.07 01:12)
> > Тут ведь стоит курить тему "запуск второго экземпляра
> > той же самой программы". Или я не прав?
>
> Ведь человек вроде ясно написал: «но без запуска ещё одной
> копии 1.exe». Так не лучше ли передавать параметры уже запущенной
> копии?
>

Лучше, ес-сно! Но ведь (Блин! я убью морально свою дщерь, когда она вернётся с моря!)


Джо   (2007-08-23 01:23:00) [8]

> [7] Германн ©   (23.08.07 01:12)
> Тут ведь стоит курить тему "запуск второго экземпляра
> той же самой программы". Или я не прав?

Ведь человек вроде ясно написал: «но без запуска ещё одной копии 1.exe». Так не лучше ли передавать параметры уже запущенной копии?


Германн   (2007-08-23 01:12:00) [9]


> Джо ©   (23.08.07 01:03) [6]
>
> > [3] ilya85   (23.08.07 00:46)
> > sniknik ©
> > да
>
> Тогда следует передавать параметры иным способом. Каким?
>  Кури (обширную) тему Interprocess communication (IPC).
>

Эээ. А стоит ли тут "курить" тему Interprocess communication (IPC)? Тут ведь стоит курить тему "запуск второго экземпляра той же самой программы". Или я не прав?


Джо   (2007-08-23 01:03:00) [10]

> [3] ilya85   (23.08.07 00:46)
> sniknik ©
> да

Тогда следует передавать параметры иным способом. Каким? Кури (обширную) тему Interprocess communication (IPC).


Германн   (2007-08-23 00:49:00) [11]

Я очень медленно жму на клавиши :(


Германн   (2007-08-23 00:47:00) [12]


> А я хочу передать программе ещё раз параметр: PChar(' +
> plynext'), но без запуска ещё одной копии 1.exe
>

Такие параметры передаются программам в командной строке и по умолчанию имеют смысл только при старте программ. Иное, относится к имеющимся у конкретной программы возможностям принять некую информацию (команду). Ищи в описании данной программы эту возможность.


ilya85   (2007-08-23 00:46:00) [13]

sniknik ©
да


sniknik   (2007-08-23 00:45:00) [14]

запускаемую программу (1.exe) ты сам пишешь?


Джо   (2007-08-23 00:43:00) [15]

Параметры коммандной строки передаются программе при ее запуске.


Наверх

Титульная страница Поиск, карта сайта Написать письмо