Uses節に、「ShellAPI」を追加して
ShellExecute(0, 'open',FileSaveAs1.Dialog.FileName, nil, nil, nil, SW_NORMAL);
を使ってセーブダイアログで取得した任意のファイルを開きたいのですがコンパイルできません。
FileSaveAs1.Dialog.FileNameの補完機能も働きません。
Memo1.Lines.SaveToFile(FileSaveAs1.Dialog.FileName);では補完機能が働きます。
どなたか知恵を拝借してください。
ShellExecute(Handle,'open',PChar(FileSaveAs1.Dialog.FileName),'',PChar(ExtractFilePath(Application.Exename)),SW_SHOWDEFAULT);
とあるTipsを参考に上記のコードを作成しました。
コンパイルできて、他アプリの起動ができました。
このコードに誤りは無いでしょうか?
間違いはないです。けど、
第5引数は、作業フォルダを指定するため、nilでいいです。(nilにするとソフトのあるフォルダが指定される、ということになっていたはず、確認してないので…^^;)
つまり、一番上のコードで、
FileSaveAs1.Dialog.FileNameを、PCharにキャストするだけでいいです。
まあ、第一引数のHandleには、指定しておいて損はないでしょうけど。
(エラーダイアログがあるとき、それの所有ウィンドウになる だったはず)
簡単に使うのなら、うちのおんぷ村倉庫>Delphiユニット>stdFiles内
Shell関数が簡単です。
http://TakamiChie.tripod.co.jp/
実行ファイルを起動するときには、Shellでもいいですけど、RunAs関数を使ってください。
いつも適切な助言をありがとうございます。
Delphiを始めて4ヶ月ですけどだいぶん覚えられました。
ツイート | ![]() |