掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ショートカットの情報取得するには? (ID:18468)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
黒鬚さんのエラー対策でないのですが,参考になれば幸いです. 以下は,私が使用しているコードです.動作確認はWindowXP + Delphi5 ですが,実行ファイルはWin98,WinMe,Win2k,WinXPで動作しています. Formに以下を配置します. TButton TMemo TOpenDialog uses ShlObj,ActiveX,ComObj; {$R *.DFM} { TForm1 } //============================================================================= // ファイル選択ダイアログを表示 //============================================================================= procedure TForm1.Button1Click(Sender: TObject); begin OpenDialog1.Filter:='ショートカット(*.lnk)|*.LNK'; if OpenDialog1.Execute then begin GetLinkPath(OpenDialog1.FileName); end; end; //============================================================================= // IShellLinkを使用するにusesにShlObjが必要 // IPersistFileを使用するにはusesにActiveXが必要 // CreateComObjectを使用するにはusesにComObjが必要 //============================================================================= procedure TForm1.GetLinkPath(FileName: String); var ShellLink : IShellLink; PersistFile : IPersistFile; FilePath : array[0..MAX_PATH] of char; WorkDir : array[0..MAX_PATH] of char ; Arg : array[0..MAX_PATH] of char; FileLink : String; wsz : array[0..MAX_PATH] of WideChar; pfd : TWin32FindData; begin FileLink := FileName; ShellLink := CreateComObject(CLSID_ShellLink) as IShellLink; 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_RAWPATH)); OleCheck(ShellLink.GetWorkingDirectory(WorkDir,MAX_PATH)); OleCheck(ShellLink.GetArguments(Arg, MAX_PATH)); //上から順にプログラムパス名,作業フォルダ,起動オプション //実際のPCではリンク先としてパス名に起動オプションが付加されている Memo1.Clear; Memo1.Lines.Add(ExtractFileName(FileName)); Memo1.Lines.Add(StrPas(FilePath)); Memo1.Lines.Add(StrPas(WorkDir)); Memo1.Lines.Add(StrPas(Arg)); end;
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.