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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.06.2019, 19:30   #1
PTyTb32
Форумчанин
 
Регистрация: 06.10.2013
Сообщений: 216
Вопрос Запуск стороннего приложения

привет, пытаюсь программно запустить другую программу и в принципе она запускается, но не может подключиться к серверу, если запустить вручную, то подключается без проблем. пробовал через ExecuteProcess, CreateProcess, ShellExecute итог один, думаю уже перехватить курсор и им тыкать на ярлык программы... подскажите может как то по особенному нужно ее запускать?

P.S. перевести курсор и сымитировать нажатие мыши помогло, но это ведь не единственный способ?

Последний раз редактировалось PTyTb32; 18.06.2019 в 19:48.
PTyTb32 вне форума Ответить с цитированием
Старый 18.06.2019, 20:32   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Вангую, что рабочий каталог запускаемой проги используется, а он разный при разных способах запуска
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 19.06.2019, 07:34   #3
PTyTb32
Форумчанин
 
Регистрация: 06.10.2013
Сообщений: 216
По умолчанию

я пробовал передать рабочую директорию, это тоже не помогало
PTyTb32 вне форума Ответить с цитированием
Старый 19.06.2019, 07:40   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А другая прога черный ящик или код есть?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 19.06.2019, 07:59   #5
PTyTb32
Форумчанин
 
Регистрация: 06.10.2013
Сообщений: 216
По умолчанию

какая прога черный ящик? и код чего? того как пытался запустить?

Edit2.Text = 'S:\Simple-Scada 2 (time-demo)\Server.exe'
так пробовал
Код:
ShellExecute(Handle, 'open', PWideChar(edit2.Text), '', PWideChar('S:\Simple-Scada 2 (time-demo)'), SW_SHOWNORMAL);
и вот так
Код:
function RunAsAdmin(HWND: hWnd; lpFile,lpParameters: String): Boolean;
var
 sei: SHELLEXECUTEINFO;
begin
  try
    ZeroMemory ( @sei, SizeOf(sei) );

    sei.cbSize := SizeOf(SHELLEXECUTEINFOW);
    sei.Wnd := hWnd;
    sei.fMask := SEE_MASK_FLAG_DDEWAIT or SEE_MASK_FLAG_NO_UI;
    sei.lpVerb := 'runas';
    sei.lpFile := PWideChar(IncludeTrailingPathDelimiter(lpFile));
    sei.lpParameters := PWideChar(lpParameters);
    sei.nShow := SW_SHOWNA;

    if ( not ShellExecuteEx ( @sei ) ) then begin
      //ShowMessage( 'Error: ShellExecuteEx failed ' + IntToStr(GetLastError) );
      Result := False;
      Exit;
    end;
    Result := True;
  except
    else Result := False;
  end;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
 RunAsAdmin(0,edit2.Text,'');
end;
и еще несколько способов

Последний раз редактировалось PTyTb32; 19.06.2019 в 08:04.
PTyTb32 вне форума Ответить с цитированием
Старый 19.06.2019, 09:17   #6
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

1. поставить (перенести) прогу в папку( чтобы путь к ней ) НЕ ИМЕЛ пробелов.
2. сделать экранировку
Код:
Edit2.Text = '"S:\Simple-Scada 2 (time-demo)\Server.exe"'
для работы "командной строки" (а запуск в конечном итоге придет туда)
1. файловое имя запускаемой программы(любое, в т.ч. и рабочей папки) не должно содержать пробелов.
2. ЕСЛИ без них не обойтись, это имя должно быть заключено в кавычки.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 19.06.2019, 09:41   #7
PTyTb32
Форумчанин
 
Регистрация: 06.10.2013
Сообщений: 216
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
1. поставить (перенести) прогу в папку( чтобы путь к ней ) НЕ ИМЕЛ пробелов.
спасибо, помогло. что интересно так программа запускается, видит сервер но не может соединиться с ним, убрал пробелы из имени папки и все заработало.. у этой программы фича в том что она час работает и потом перезапускать нужно, я написал автоматический рестартер программы, и когда она не смогла подключиться к серверу я было подумал что это одна из степеней защиты этой программы, но все оказалось проще
PTyTb32 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запуск стороннего приложения из под моему и перехват управления первого lallollulz Общие вопросы C/C++ 9 10.12.2018 13:12
Запуск стороннего exe Domenico Visual C++ 4 11.11.2018 21:53
Запуск стороннего приложения с параметрами Romowski Visual C++ 2 08.01.2013 13:49
Скрытый запуск стороннего приложения _ZixeL_ Общие вопросы Delphi 8 19.11.2012 20:22
Запуск стороннего файла CraftR14 Общие вопросы Delphi 8 17.04.2010 18:05