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;
>execex.lpFile :=PChar(temp+'\test.exe');
を
execex.lpFile :=PChar(temp+'test.exe');
にしたらどうなりますか?
>execex.lpVerb := 'Test';
.exeに"Test"というアクションをわざわざ作って関連付けているユーザは
少ないと思われます。普通は "Open" か無指定じゃないですか?
また、fMaskのSEE_MASK_INVOKEIDLISTはいらないと思います。
(これは "Properties" みたいにコンテキストメニューに
登録されているVerbを使うとき指定するものだったかと。)
後は、nShowにも何かしら設定したほうが良いかもしれないですね。
>igy さん
説明不足申し訳ありません。
tempには、
temp := ExtractFilePass(OpenDialog1.filename);
という「test.exe」ファイルのファイルパスが入っています。
たとえば、
execex.lpFile :=PChar('c:\test.exe');
ということなんです。
>tttさん
これはそういう意味なのでしょうか?
実行するファイル名を入れるものだと思っていたのです。
fmMaskは意味もわからず、とりあえず入れていました。
いろいろいじってみます。
>tttさん
すいません、execex.lpVerb := 'Test';のことですよね。
起動しなかったのでいろいろパラメータを試してたんです。
Openなどを指定してみます。
>>igy さん
>execex.lpFile :=PChar('c:\test.exe');
>ということなんです。
igyさんのおっしゃていることは
最初の質問では
execex.lpFile :=PChar('c:\test.exe');
ではなく
execex.lpFile :=PChar('c:\\test.exe');
てなっているよ
ということです
無事に解決しました。
原因が何だったのかよくわからないのですが…
解決ですね。
ツイート | ![]() |