CreateProcessとShellExecute(Ex)の使い分け方 – プログラミング – Home

通知
すべてクリア

[解決済] CreateProcessとShellExecute(Ex)の使い分け方


ナオーバ
 ナオーバ
(@ナオーバ)
ゲスト
結合: 23年前
投稿: 187
Topic starter  

EXEを自アプリから起動するには、CreateProcessとShellExecute(Ex)を
使用すると思いますが、この使い分けはどのようにしていますか?

以前、ShellExecuteとShellExecuteExの違いを質問したのですが、
最近CreateProcessの事を知りまして、アレ?これでもできるジャンと思ったので。

ShellExecuteとShellExecuteExの違いはhProcessで
プロセスの終了をWaitForSingleObjectで待機できたりします。
でした。CreateProcessでもhProcessは取得できます。

CreateProcessの場合セキュリティーや起動時の状態を指定できるので
いろいろな事ができるようなので、
ShellExecute(Ex)は簡単な起動処理用、
CreateProcessは高度?起動処理用 とするのでしょうか?

それと、シェルをエクスプローラー以外にした場合、
ShellExecute(Ex)でEXEを起動できるのでしょうか?
シェル関数についてまだ理解できていないでいます。

宜しくお願いします。


引用未解決
トピックタグ
渋木宏明(ひどり)
 渋木宏明(ひどり)
(@渋木宏明(ひどり))
ゲスト
結合: 22年前
投稿: 196
 

>EXEを自アプリから起動するには、CreateProcessとShellExecute(Ex)を
>使用すると思いますが、この使い分けはどのようにしていますか?

拡張子関連付けなどのシェルの機能を利用したアプリケーションの起動が必要な時は
ShellExecuteXXX() を、厳密なセキュリティ指定や起動環境の指定が必要な場合は
CreateProcess() を用います。

>それと、シェルをエクスプローラー以外にした場合、
>ShellExecute(Ex)でEXEを起動できるのでしょうか?

できるはずです。
シェルを変更しても、標準シェルが削除されるわけではないので。


返信引用
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

ShellExecute()はファイルに関連付けられている
アクションを実行するためのものです。
引数に与えるopenなどがアクションです。

例えばEXEファイルのopenを要求した場合、レジストリの
HKEY_CLASS_ROOT\exefile\shell\open\command
に書いてある内容が実行されます。

ここにEXEを実行するコマンドが書いてあるからEXEが起動される訳で、
ShellExecute()自体はEXEの起動のための関数ではないのです。


返信引用
ナオーバ
 ナオーバ
(@ナオーバ)
ゲスト
結合: 23年前
投稿: 187
Topic starter  

ありがとう御座います。

CreateProcessとShellExecute(Ex)の使い分け方はわかりました

>ShellExecute()はファイルに関連付けられている
>アクションを実行するためのものです。

シェルがどこまでなのかがわかないので、
txt→メモ帳で開く、xls→エクセルで開く等とexeは違うのかなって思っています。
なんとなくそんな感じって位で全然わかっていません。

ShellExecuteとシェル(エクスプローラ等)は関係ないのでしょうか?
ここを見なさいとかないでしょうか?

宜しくお願いします


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました