掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ShellExecuteで終了を待つ方法は? (ID:12072)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
りおりおさんのいうように こんなので ショートカットファイルの実行ファイルを取得して CreateProcessを呼びましょう。 type TShowCommand = (scNormalWindow, scMinimize, scMaxmize, scUnknown); TShortcurFile = class(TObject) private ShellLink:IShellLink; PersistFile:IPersistFile; FilePath:array[0..MAX_PATH] of char; WorkDir:array[0..MAX_PATH] of char ; wsz:Array[0..MAX_PATH] of WideChar; pwHotKey:Word; pShowCmd:integer; pfd:TWin32FindData; FSourceFileName: TFileName; FFileName: TFileName; FShowCommand: TShowCommand; FHotKey: Word; protected public constructor Create(FileLink: TFileName); destructor Destroy; override; published property FileName: TFileName read FFileName; property SourceFileName: TFileName read FSourceFileName; property HotKey: Word read FHotKey; property ShowCommand: TShowCommand read FShowCommand; end; { TShortcurFile } constructor TShortcurFile.Create(FileLink: TFileName); begin if not FileExists(ChangeFileExt(FileLink,'.lnk')) then raise Exception.Create('ファイルが存在しません'); inherited Create; ShellLink := CreateComObject(CLSID_ShellLink) As IShellLink; try OleCheck(ShellLink.QueryInterface(IPersistFile,PersistFile)); Assert(Assigned(PersistFile)); MultiByteToWideChar(CP_ACP,0,PChar(FileLink),-1,wsz,MAX_PATH); OleCheck(PersistFile.Load(wsz,0)); OleCheck(ShellLink.GetPath(FilePath,MAX_PATH,pfd,SLGP_SHORTPATH)); FFileName := FilePath; OleCheck(ShellLink.GetWorkingDirectory(WorkDir,MAX_PATH)); FSourceFileName := WorkDir; OleCheck(ShellLink.GetHotKey(pwHotkey)); FHotKey := pwHotKey; OleCheck(ShellLink.GetShowCmd(pShowCmd)); case pShowCmd of 1: FShowCommand := scNormalWindow; 7: FShowCommand := scMinimize; 3: FShowCommand := scMaxmize; else FShowCommand := scUnknown; end; except on EOleSysError do raise Exception.Create('OLEエラーが発生しました'); end; end;
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.