2012-02-03 5 views
3

'txt'ファイルに関連付けられたエディタを開こうとしていますが、ここではこんな感じですが、私のファイルは実際にはtxtの拡張子があるので、私はただShellExecuteにすることはできません。私は手で関連するプログラムを見つけなければなりません。ファイルをテキストファイルと同じように開く(拡張子が.txtでなくても)

これを行うには、シェルのIApplicationAssociationRegistration::QueryCurrentDefault COMメソッドを使用しようとしていましたが、ProgIdが返されました。これは私にとって役に立たないものです。これをEXEにどのようにマップできますか?私はC#を使用していますが、関連性がないようです。

編集:レジストリに直接アクセスする以下のリンクは、すべての場合に機能しません。正しい方法は上記ですが、次のステップが必要です。返されたProgIdを取得して関連するプログラムを入手するにはどうすればいいですか?

+1

可能な重複:http://stackoverflow.com/q/162331/1048330 – tenorsax

+0

これは以前からこの方法を試してみましたが、動作しません。アソシエーションをどのように設定するかに応じて、これは不正確な結果を返します –

+1

それはそれについて行く非生産的な方法です。ファイル名拡張子を選択する理由は、その関連性だけです。問題を解決した.txtを選んでください。 –

答えて

6

1つのファイルを別の種類のファイルであるかのように実行するには、call ShellExecute and set the the lpClass member of the SHELLEXECUTEINFO structure to the progid you wish the file were

テキストファイルのデフォルトのハンドラは必ずしもコマンドラインを持つプログラムである必要はないので、このようにすることが重要です。 a DDE serverまたはdrop targetまたはa context menu handlerまたはdelegated execution handlerです。

-3

悲しいことに、レジストリを使用する必要があります。それはどのようにregistration worksとWindowsでどのように記録されます。このリンクは、あなたが期待できるさまざまなエントリー、exeパスへのエントリーの翻訳方法、そして下のインターフェースへのリンクについても説明しています。

関連する問題