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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.11.2017, 16:21   #1
D6ist
Пользователь
 
Регистрация: 26.11.2017
Сообщений: 15
По умолчанию Использование ShellExecuteEx

Можно ли создать ссылку на какой-то объект, используя именно ShellExecuteEx? Вот код с использованием ShellExecute:
Код:
uses
   ShellAPI;

procedure TForm1.Button1Click(Sender: TObject);
begin
   shellexecute(handle, 'open', 'explorer', nil, nil, sw_shownormal);
end;
А как с ShellExecuteEx быть?
Версия delphi - D6/D7.

Последний раз редактировалось D6ist; 26.11.2017 в 16:30.
D6ist вне форума Ответить с цитированием
Старый 26.11.2017, 23:34   #2
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

Примеров на эту тему в интернете много http://www.delphisources.ru/pages/fa...exec_apps.html
http://delphiru.ru/other/115-executi...om-delphi-code

Вариант 1 простой
Код:
procedure TForm1.Button3Click(Sender: TObject);
var
ExecInfo: TShellExecuteInfo;
ExitCode: DWORD;
begin
FillChar(ExecInfo, SizeOf(TShellExecuteInfo), 0);
  with ExecInfo do
  begin
  cbSize := SizeOf(TShellExecuteInfo);
  fMask := SEE_MASK_NOCLOSEPROCESS;
  Wnd := Handle;
  lpFile := PChar('explorer');
  nShow := SW_SHOWNORMAL;
end;
ShellExecuteEx(@ExecInfo);
end;
Вариант 2 с ожиданием завершения при закрытии самой формы закрывается не работает с explorer
Код:
procedure TForm1.Button3Click(Sender: TObject);
var
ExecInfo: TShellExecuteInfo;
ExitCode: DWORD;
begin
FillChar(ExecInfo, SizeOf(TShellExecuteInfo), 0);
  with ExecInfo do
  begin
  cbSize := SizeOf(TShellExecuteInfo);
  fMask := SEE_MASK_NOCLOSEPROCESS;
  Wnd := Handle;
  lpFile := PChar('notepad.exe');
  nShow := SW_SHOWNORMAL;
end;
if ShellExecuteEx(@ExecInfo) and (ExecInfo.hProcess <> 0) then
  repeat
  Application.ProcessMessages;
  GetExitCodeProcess(ExecInfo.hProcess, ExitCode);
  until (ExitCode <> STILL_ACTIVE) or Application.Terminated;
 CloseHandle(ExecInfo.hProcess);
end;
Вариант 3 тоже с ожиданием завершения при закрытии самой формы не закрывается не работает с explorer
Код:
procedure TForm1.Button3Click(Sender: TObject);
var
ExecInfo: TShellExecuteInfo;
begin
FillChar(ExecInfo, SizeOf(TShellExecuteInfo), 0);
  with ExecInfo do
  begin
  cbSize := SizeOf(TShellExecuteInfo);
  fMask := SEE_MASK_NOCLOSEPROCESS;
  Wnd := Handle;
  lpFile := PChar('notepad.exe');
  nShow := SW_SHOWNORMAL;
end;

if ShellExecuteEx(@ExecInfo) and (ExecInfo.hProcess <> 0) then
    begin
      while (WaitForSingleObject(ExecInfo.hProcess, 50) = WAIT_TIMEOUT) do
        application.ProcessMessages;
      CloseHandle(ExecInfo.hProcess);
    end;
end;

Последний раз редактировалось Aliens_wolfs; 27.11.2017 в 00:19.
Aliens_wolfs вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ShellExecuteEx Chugun Общие вопросы Delphi 2 12.12.2013 19:38
Использование If Macklay PHP 4 14.05.2012 20:03
Использование БД glazik БД в Delphi 13 22.02.2012 09:14
Использование (...) в с++ Byurrer Общие вопросы C/C++ 12 06.04.2011 23:04
ShellExecuteEx Neobrat Общие вопросы Delphi 6 09.09.2010 15:10