ShellExecuteEX

解決


じゃん  2008-04-18 03:31:05  No: 30531

ShellExecuteEXなんですが、以下のようにやってもEXEが起動しません。
原因がわかる方いらっしゃいますか?
D7です。

var
execex : TShellExecuteInfo;

begin

  temp := 'c:\';

  execex.cbSize := sizeof(execex);
  execex.Wnd :=handle;
  execex.lpParameters :=nil;
  execex.lpDirectory :=nil;
  execex.lpIDList := nil;
  execex.lpVerb := 'Test';
  execex.fMask := SEE_MASK_NOCLOSEPROCESS or SEE_MASK_INVOKEIDLIST or SEE_MASK_FLAG_NO_UI;
  execex.lpFile :=PChar(temp+'\test.exe');

  ShellExecuteEx(@execex);

end;


igy  2008-04-18 03:46:12  No: 30532

>execex.lpFile :=PChar(temp+'\test.exe');

execex.lpFile :=PChar(temp+'test.exe');
にしたらどうなりますか?


ttt  2008-04-18 04:06:27  No: 30533

>execex.lpVerb := 'Test';

.exeに"Test"というアクションをわざわざ作って関連付けているユーザは
少ないと思われます。普通は "Open" か無指定じゃないですか?

また、fMaskのSEE_MASK_INVOKEIDLISTはいらないと思います。
(これは "Properties" みたいにコンテキストメニューに
登録されているVerbを使うとき指定するものだったかと。)
後は、nShowにも何かしら設定したほうが良いかもしれないですね。


じゃん  2008-04-18 09:10:06  No: 30534

>igy さん
説明不足申し訳ありません。
tempには、
temp := ExtractFilePass(OpenDialog1.filename);
という「test.exe」ファイルのファイルパスが入っています。
たとえば、
execex.lpFile :=PChar('c:\test.exe');
ということなんです。

>tttさん
これはそういう意味なのでしょうか?
実行するファイル名を入れるものだと思っていたのです。
fmMaskは意味もわからず、とりあえず入れていました。
いろいろいじってみます。


じゃん  2008-04-18 09:12:01  No: 30535

>tttさん
すいません、execex.lpVerb := 'Test';のことですよね。
起動しなかったのでいろいろパラメータを試してたんです。
Openなどを指定してみます。


いや  2008-04-18 22:11:46  No: 30536

>>igy さん
>execex.lpFile :=PChar('c:\test.exe');
>ということなんです。

igyさんのおっしゃていることは
最初の質問では
execex.lpFile :=PChar('c:\test.exe');
ではなく
execex.lpFile :=PChar('c:\\test.exe');
てなっているよ
ということです


じゃん  2008-04-19 07:40:15  No: 30537

無事に解決しました。
原因が何だったのかよくわからないのですが…


  2008-04-20 23:46:12  No: 30538

解決ですね。


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

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






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