Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Delphi


Информационный Канал Subscribe.Ru

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Delphi

Выпуск № 251
от 28.09.2005, 11:00

Администратор:Калашников О.А.
В рассылке:Подписчиков: 244, Экспертов: 47
В номере:Вопросов: 2, Ответов: 12


Вопрос № 26756: Здравствуйте эксперты. Мне нужно из своей программы запускать другую прогу с двумя параметрами, параметры задаются из edit1 и edit2. Как мне это сделать и если можно, то с небольшим исходничком. ...
Вопрос № 26767: Здравствуйте!А можно ли сделать так, Что-бы программа запустилась в определённое время по часам компа, причём до этого, она ни разу не запускалась?Если можно, напишите, пожалуйста, как. Спасибо!...

Вопрос № 26.756
Здравствуйте эксперты.
Мне нужно из своей программы запускать другую прогу с двумя параметрами, параметры задаются из edit1 и edit2. Как мне это сделать и если можно, то с небольшим исходничком.
Отправлен: 22.09.2005, 15:26
Вопрос задал: Dimon007 (статус: Посетитель)
Всего ответов: 8
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Jadd
Здравствуйте, Dimon007!
Очень просто. Например, так:

strPath := MyAppPath + ' ' +Edit1.Text + ' ' + Edit2.Text;
WinExec(strPath , SW_SHOW);

Ясно дело, что в MyAppPath должен находиться путь к нужной программе. Можно еще двумя способами, но про них читай сам в MSDN.

---------
Если в сердце дверь закрыта, нужно в печень постучаться
Ответ отправил: Jadd (статус: Практикант)
Отправлен: 22.09.2005, 15:49

Отвечает: sir henry
Здравствуйте, Dimon007!
Если Вы подключите к своей программе модуль ShellAPI (в строке USES), то Вы сможете легко и просто. Вот нужная Вам функция:
ShellExecute(0, 'open', PChar(FileName), PChar(Edit1.Text+#32+Edit2.Text), NIL, SW_SHOW);
Все строковые переменные для этой функции должны быть PChar. В переменную FileName заносите название той проги, которую Вы собираетесь запускать. #32 - это пробел, который необходим между двумя параметрами. Вместо NIL можно поставить рабочий каталог.
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 22.09.2005, 17:20

Отвечает: Delphin
Здравствуйте, Dimon007!
WinExec( 'file.exe /param1 /param2' , 0 );
Или если взять параметры то:
WinExec( PChar( 'file.exe'+' /'+edit1.text+' /'+edit2.text), 0 );
---------
Обращаться в ICQ: 77778851 или E-Mail: delphinster@gmail.com
Ответ отправил: Delphin (статус: 10-ый класс)
Отправлен: 22.09.2005, 17:33

Отвечает: SlavComp
Здравствуйте, Dimon007!
Это можно сделать с помощью апишной функции ShellExecute:

1. В Uses подключаешь модуль ShellApi (просто дописываешь его в список через запятую).
2. В процедуре, где нужно "запустить другую прогу с двумя параметрами" пишешь строку:
shellexecute(0,'open',PChar('programma.exe'), PChar(edit1.text+' '+edit2.text), nil,SW_SHOW);
где вместо 'programma.exe' пишешь имя и путь к проге.

Удачи!!!
Ответ отправил: SlavComp (статус: 1-ый класс)
Отправлен: 22.09.2005, 17:50

Отвечает: Denisss
Здравствуйте, Dimon007!
Надо понимать, что параметры должны быть разными, а значит в них могут встречаться пробелы. В этом случае, их бы стоило заключить в двойные кавычки.
(пример см. в приложении)

Приложение:

Ответ отправил: Denisss (статус: Практикант)
Отправлен: 22.09.2005, 18:22

Отвечает: Romodos
Здравствуйте, Dimon007!
вызов другой программы
winexec('C:programma.exe '+edit1.text+' '+edit2.text);

А читать параметры командной строки из программы можно читать так
paramstr(n), где n - номер параметра (от 0 до paramcount);
paramstr(0) - полное имя программы
---------
FAQ me off!
Ответ отправил: Romodos (статус: 8-ой класс)
Отправлен: 22.09.2005, 19:05

Отвечает: Ерёмин Андрей
Здравствуйте, Dimon007!
Вот пример:

ShellExecute(0,'open','C:myprog.exe',PChar('-'+Edit1.Text+' -'+Edit2.Text),'',SW_SHOWNORMAL)
---------
Мышка побежала, xвостиком махнула - cервер упал...
Ответ отправил: Ерёмин Андрей (статус: Практикант)
Отправлен: 24.09.2005, 11:51

Отвечает: VBA
Здравствуйте, Dimon007!

Для запуска внешних программ из своей можно использовать функцию WinExec(), либо API-функцию ShellExecute из модуля ShellAPI.

Запуск при помощи WinExec:
WinExec(File:PAnsiChar; ShowCmd:Cardinal);

File - имя запускаемого файла (можно вместе с параметрами).
ShowCmd - вид окна запущенной проги. Может принимать следующие значения:
SW_MAXIMIZE - развернуть окно
SW_MINIMIZE - свернуть окно
SW_HIDE - спрятать окно
SW_RESTORE - восстановить окно
др. (не помню всех :-( )

Запуск при помощи ShellExecute:
ShellExecute(hWnd:HWND; Operation:PAnsiChar; FileName:PAnsiChar; Parameters:PAnsiChar; Directory:PAnsiChar; ShowCmd:Integer);

hWnd - дескриптор (можно написать 0)
Operation - віполняемое действие, может принимать следующие значения:
'open' - открыть файл (запустить программу)
'print' - распечатать файл
FileName - имя запускаемой программы или открываемого файла
Parameters - параметры для запускаемой программы
Directory - рабочая папка
ShowCmd - аналогично параметру функции WinExec.

Рекомендуется пользоваться функцией ShellExecute вместо WinExec.

Приложение:

---------
Неправ вечно юзер, ибо прав всегда Админ!

Ответ отправил: VBA (статус: 6-ой класс)
Отправлен: 26.09.2005, 01:34


Вопрос № 26.767
Здравствуйте!А можно ли сделать так, Что-бы программа запустилась в
определённое время по часам компа, причём до этого, она ни разу не
запускалась?Если можно, напишите, пожалуйста, как.
Спасибо!
Отправлен: 22.09.2005, 19:11
Вопрос задал: Vic (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Татьяна
Здравствуйте, Vic!
Ну если так, чтоб ни разу не запускать, я думаю поможет Планировщик заданий самой операционной системы (находится в службах винды).
---------
Нет ничего невозможного!!!
Ответ отправила: Татьяна (статус: 2-ой класс)
Отправлен: 22.09.2005, 19:25
Оценка за ответ: 4

Отвечает: mvp
Здравствуйте, Vic!
Программно сделать нельзя (как программа запустит саму себя ни разу не запустившись?) - разве что воспользоваться планировщиком задач, как Вам ответила Татьяна.
Предлагаю вариант(см. приложение). Правда, запустить всёже придётся один раз - потом программа запишется в автозапуск. При старте с помощью таймера форма прячется и визуально не видно её присутствия. В таймере определяем требуемое время и показываем форму.
P. S. Возможна оптимизация работы таймера, чтобы он не срабатывал каждую минуту, а намного реже.

Приложение:

---------
Моя совесть чиста - не бывшая в употреблении

Ответ отправил: mvp (статус: 5-ый класс)
Отправлен: 22.09.2005, 20:24
Оценка за ответ: 5
Комментарий оценки:
Спасибо!

Отвечает: sir henry
Здравствуйте, Vic!
Можно запустить программу, но форму свою она не показывает. Программа будет время от времени опрашивать часы компа и сверять со своими установками времени. Если настал час Икс, форма появляется на экране.
Можно засунуть программу в назначеные задания компа, тогда сама программа запустится в определенное время.
Выберите вариант, который Вам больше подходит, тогда поговорим о реализации. :)
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 22.09.2005, 20:38
Оценка за ответ: 4

Отвечает: Delphin
Здравствуйте, Vic!
Записать её в планировщик заданий или писать для неё загрузчик. Иначе никак.
---------
Обращаться в ICQ: 77778851 или E-Mail: delphinster@gmail.com
Ответ отправил: Delphin (статус: 10-ый класс)
Отправлен: 22.09.2005, 22:34
Оценка за ответ: 4


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2005, RusFAQ.ru, Россия, Москва. Все права защищены.
Идея, дизайн, программирование, авторское право: Калашников О.А.

Яндекс


Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.delphiplus
Отписаться
Вспомнить пароль

В избранное