こんにちは。
早速ですが質問です。
CreateProcessを使ってテキストファイルを
Windowsに登録してあるEditerで表示させたいので、
Windowsに登録してあるEditerのフルパスを取得する方法を
教えていただけないでしょうか?
よろしくお願いします。
Winxp VS2005 MFC ダイアログベース
拡張子からレジストリを調べ、取得することは可能です。
.txt の場合
HKEY_CLASSES_ROOT\.txt
の値を取得します。(【A】とする)
HKEY_CLASSES_ROOT\【A】\shell
を取得する。(【B】とする)
(規定の値をとることができる。つまりダブルクリックで実行されるエディタ)
HKEY_CLASSES_ROOT\【A】shell\【B】\command
を取得する。
これで、コマンド文字列が取得できますので、文字列中に を含む場合は、
次の に囲われたものが目的のパスになります。
(を含まない場合は全体が目的のパス)
# shlwapiのPathRemoveArgs、PathUnquoteSpacesで取得してもOK
ちなみに、APIのFindExecutableではopenのパスが取得できますが、
いろいろと不具合もあるらしいです。
参考: http://dobon.net/vb/dotnet/system/findassociatedexe.html
早速の返事ありがとうございます。
早速試してみます・・・が、返信に時間がかかりそうです。
(レジストリ苦手)
ので、取り急ぎ返信のみで。
CreateProcess にこだわる必要が無いなら ShellExecute(Ex)
ShellExecuteで解決しました。
Blueさん、tetrapodさん
ありがとうございました。