ShellExecuteを使用するには?

解決


まーる  2003-03-31 00:50:12  No: 3239

Uses節に、「ShellAPI」を追加して
ShellExecute(0, 'open',FileSaveAs1.Dialog.FileName, nil, nil, nil, SW_NORMAL);
を使ってセーブダイアログで取得した任意のファイルを開きたいのですがコンパイルできません。
FileSaveAs1.Dialog.FileNameの補完機能も働きません。
Memo1.Lines.SaveToFile(FileSaveAs1.Dialog.FileName);では補完機能が働きます。
どなたか知恵を拝借してください。


まーる  2003-03-31 01:20:30  No: 3240

ShellExecute(Handle,'open',PChar(FileSaveAs1.Dialog.FileName),'',PChar(ExtractFilePath(Application.Exename)),SW_SHOWDEFAULT);
とあるTipsを参考に上記のコードを作成しました。
コンパイルできて、他アプリの起動ができました。
このコードに誤りは無いでしょうか?


たかみちえ  URL  2003-03-31 05:58:47  No: 3241

間違いはないです。けど、
第5引数は、作業フォルダを指定するため、nilでいいです。(nilにするとソフトのあるフォルダが指定される、ということになっていたはず、確認してないので…^^;)
  つまり、一番上のコードで、
FileSaveAs1.Dialog.FileNameを、PCharにキャストするだけでいいです。
まあ、第一引数のHandleには、指定しておいて損はないでしょうけど。
(エラーダイアログがあるとき、それの所有ウィンドウになる だったはず)

  簡単に使うのなら、うちのおんぷ村倉庫>Delphiユニット>stdFiles内
Shell関数が簡単です。
http://TakamiChie.tripod.co.jp/
  実行ファイルを起動するときには、Shellでもいいですけど、RunAs関数を使ってください。


まーる  2003-03-31 06:35:19  No: 3242

いつも適切な助言をありがとうございます。
Delphiを始めて4ヶ月ですけどだいぶん覚えられました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加