Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.04.2011, 02:05   #1
fezilk25
Форумчанин
 
Регистрация: 01.08.2010
Сообщений: 124
По умолчанию ShellExecute - запускаемое приложение закрывается (

Добрый день!
Снова нужна помощь профессионалов.

Пытаюсь программно запустить приложение.

Код:
path := 'C:\samp\test\server1\samp-server.exe';
cod := WinExec(PAnsiChar(path), SW_ShowNormal);
cod := ShellExecute(0,'open',PChar(path),0,0,SW_ShowNormal);
В обоих случаях приложение запускается, но тут же закрывается.
При чём если запускать его вручную (двойным щелчком всмысле), оно работает нормально.

Помогите, пожалуйста, не могу понять, почему так происходит.

PS. Приложение - сервер sa-mp (gta sa), скачать приложение.
fezilk25 вне форума Ответить с цитированием
Старый 17.04.2011, 02:12   #2
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

вместо первого 0 должен быть хандел проги из которои запускаеш,
а ноль ето десктоп кажеца, поеетому наверно и ишезает
в общем вставь туда Handel
Код:
ShellExecute(Handle, 'open', path, nil, nil, SW_SHOWNORMAL) ;
VirusN13
ArtGrek вне форума Ответить с цитированием
Старый 17.04.2011, 02:15   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

телепатор мне подсказывает что дело в текущей директории.
Код:
cod := ShellExecute(0,'open',PChar(path),0,PChar(ExtractFilePath(path),SW_ShowNormal);
попробуй так.

или можешь сначало проверить это:
для проверки создай bat-ник(неважно где, но не в папке с сервером!)
Код:
@C:\samp\test\server1\samp-server.exe
@pause
запусти, и если я прав, то в консоли должно будет остаться сообщение об ошибке(или же просто сразу пойдет pause, то есть в консоли будет "Для продолжения нажмите любую клавишу . . .")
Цитата:
вместо первого 0 должен быть хандел проги из которои запускаеш
это с какой такой радости должен?(да и вообще то хендл окна а не процесса)
Цитата:
Specifies a parent window. This window receives any message boxes that an application produces. For example, an application may report an error by producing a message box.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 17.04.2011 в 02:19.
Пепел Феникса вне форума Ответить с цитированием
Старый 17.04.2011, 02:16   #4
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Есть ещё CreateProcess
Человек_Борща вне форума Ответить с цитированием
Старый 17.04.2011, 02:16   #5
fezilk25
Форумчанин
 
Регистрация: 01.08.2010
Сообщений: 124
По умолчанию

ArtGrek, всё равно исчезает.
Код:
cod:=ShellExecute(Handle,'open',PChar(path),0,0,SW_ShowNormal);
Человек_Борща, пробовал =)
Пепел Феникса, огромное спасибо! Получилось, действительно, всё было из-за текущей директории .
fezilk25 вне форума Ответить с цитированием
Старый 17.04.2011, 02:20   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Есть ещё CreateProcess
обычно он нужен для точных настроек запуска приложения, а не для обычного запуска.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 17.04.2011, 03:09   #7
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

Цитата:
это с какой такой радости должен?(да и вообще то хендл окна а не процесса)
не так выразился
без проблем всегда так запускал
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
  ShellExecute(Handle, 'open', '...\myExe.exe', nil, nil, SW_SHOWNORMAL) ;
end;
VirusN13
ArtGrek вне форума Ответить с цитированием
Старый 17.04.2011, 03:16   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

этот параметр по сути влияет лишь на диалоговые окна, например если при запуске DLL не найдется, то окно с ошибкой будет ребенком указанного окна.
а данную ситуацию он вызвать не может(либо разве что полный отказ функции отработать успешно)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 17.04.2011, 03:23   #9
_Engine_
Форумчанин
 
Регистрация: 29.06.2008
Сообщений: 603
По умолчанию

Цитата:
Сообщение от fezilk25 Посмотреть сообщение
Добрый день!
Снова нужна помощь профессионалов.

Пытаюсь программно запустить приложение.

В обоих случаях приложение запускается, но тут же закрывается.
При чём если запускать его вручную (двойным щелчком всмысле), оно работает нормально.
Оффтопик:
А для чего нужна программа запускающая другую программу, которую двумя кликами левой кнопки мыши надо запускать, чтобы не делать два клика на другой?
_Engine_ вне форума Ответить с цитированием
Старый 18.04.2011, 12:02   #10
tsar_
Форумчанин
 
Аватар для tsar_
 
Регистрация: 06.01.2011
Сообщений: 369
По умолчанию

А если вместо флага SW_SHOWNORMAL попробовать SW_RESTORE?
Программирую по необходимости
tsar_ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Закрывается окно DOS zlo_999 Общие вопросы C/C++ 10 16.03.2011 01:30
quickreport 5 не закрывается форма с отчетом maroder22 Компоненты Delphi 1 11.10.2010 23:16
И опять проблема с хуками. Приложение само закрывается Altera Win Api 10 16.03.2010 19:39
Закрывается окно Никита_П Общие вопросы C/C++ 2 27.02.2010 17:22
Задача:в вижуал с++ Разработать приложение-сервер и приложение (смотри дальше сообщение) Мила777 Фриланс 2 21.10.2009 11:05