EXEを自アプリから起動するには、CreateProcessとShellExecute(Ex)を
使用すると思いますが、この使い分けはどのようにしていますか?
以前、ShellExecuteとShellExecuteExの違いを質問したのですが、
最近CreateProcessの事を知りまして、アレ?これでもできるジャンと思ったので。
ShellExecuteとShellExecuteExの違いはhProcessで
プロセスの終了をWaitForSingleObjectで待機できたりします。
でした。CreateProcessでもhProcessは取得できます。
CreateProcessの場合セキュリティーや起動時の状態を指定できるので
いろいろな事ができるようなので、
ShellExecute(Ex)は簡単な起動処理用、
CreateProcessは高度?起動処理用 とするのでしょうか?
それと、シェルをエクスプローラー以外にした場合、
ShellExecute(Ex)でEXEを起動できるのでしょうか?
シェル関数についてまだ理解できていないでいます。
宜しくお願いします。
>EXEを自アプリから起動するには、CreateProcessとShellExecute(Ex)を
>使用すると思いますが、この使い分けはどのようにしていますか?
拡張子関連付けなどのシェルの機能を利用したアプリケーションの起動が必要な時は
ShellExecuteXXX() を、厳密なセキュリティ指定や起動環境の指定が必要な場合は
CreateProcess() を用います。
>それと、シェルをエクスプローラー以外にした場合、
>ShellExecute(Ex)でEXEを起動できるのでしょうか?
できるはずです。
シェルを変更しても、標準シェルが削除されるわけではないので。
ShellExecute()はファイルに関連付けられている
アクションを実行するためのものです。
引数に与えるopenなどがアクションです。
例えばEXEファイルのopenを要求した場合、レジストリの
HKEY_CLASS_ROOT\exefile\shell\open\command
に書いてある内容が実行されます。
ここにEXEを実行するコマンドが書いてあるからEXEが起動される訳で、
ShellExecute()自体はEXEの起動のための関数ではないのです。
ありがとう御座います。
CreateProcessとShellExecute(Ex)の使い分け方はわかりました
>ShellExecute()はファイルに関連付けられている
>アクションを実行するためのものです。
シェルがどこまでなのかがわかないので、
txt→メモ帳で開く、xls→エクセルで開く等とexeは違うのかなって思っています。
なんとなくそんな感じって位で全然わかっていません。
ShellExecuteとシェル(エクスプローラ等)は関係ないのでしょうか?
ここを見なさいとかないでしょうか?
宜しくお願いします