![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 13.12.2007
Сообщений: 41
|
![]()
Прога должна запускать сначала один exe файл и в форме которую открывает этот файл вводить логин с паролем, затем сразу же запускть второй ехе файл и тоже в форме вводить логин и пароль.
Проблема в том что при запуске с помощью winexec : winexec(PChar('1.exe'), SW_Show); {инструкции} winexec(PChar('2.exe'), SW_Show); {инструкции} первая прого подвисает и второй файл не запускается. При запуске Shellexecute: ShellExecute(Form2.Handle, nil, '1.exe', nil, nil, SW_Show); {инструкции} ShellExecute(Form2.Handle, nil, '2.exe', nil, nil, SW_Show); {инструкции} не могу добится чтоб фокус ввода переходил на запускаемые приложения. И еще хотел бы узнать принципиальные различия между winexec и shellexecute. Спасибо ![]() |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 03.11.2006
Сообщений: 321
|
![]()
Легче всего использовать WinExec. Однако Microsoft не рекомендует его использование,
а предлагает пользоваться CreateProcess. Но для выполнения тех или иных задач он вполне подходит. Почему же нежелателен вызов WinExec дело все в том, что фактически он содержит обращение к еще одному устаревшему системному вызову LoadModule, который обращается к CreateProcess со значениями аргументов по умолчанию. При обращении к WinExec необходимо задать полный путь к программе или имя EXE файла, расположенного в пути поиска, а также способ отображения программы (константы SW_HIDE, SW_SHOW) Еще один простой вызов это - ShellExecute. Этот вызов во многом напоминает WinExec, однако он поддерживает обработку типов файлов, зарегистрированных в Windows. Например, если вы с помощью ShellExecute вы попробуете запустить файл с расширением .BMP, то буде запущена программа Paint или любая другая, которая использует для просмотра графических файлов. В качестве аргументов ShellExecute принимает дескриптор окна (если есть необходимость в сообщениях об ошибках), строку, такую как open (открыть), print (напечатать) и explore (исследовать), можно в качестве этой строки передать NULL, тогда файл указанный вами будет открыт (open). Так же ShellExecute необходимо сообщить имя файла и любые параметры командной строки (чаще всего NULL), и оставшиеся два аргумента это текущий каталог и константа функции |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Проблемка с выводом | Gladiator | Общие вопросы Delphi | 2 | 28.05.2008 19:51 |
Проблемка с поиском | Glyuk24 | Помощь студентам | 6 | 24.11.2007 22:31 |
Проблемка с TClientSocket | Yoger | Работа с сетью в Delphi | 3 | 20.09.2007 10:40 |