0

以前、Windows の「open with..」アプリケーション リストを取得する方法について質問しました。これがその質問へのリンクです。

インターフェイスを使用SHAssocEnumHandlersして、特定のファイル拡張子とのファイルの関連付けを取得できます。.png

次に、IAssocHandler を使用して、ファイル タイプに関連付けられた実行可能ファイルのフル パスとファイル名を取得できます ( .png)。元:['Paint': 'C:\\Windows\\system32\\mspaint.exe', ...]

しかし、指定されたイメージで mspaint.exe を実行するコマンド ラインを取得したいと考えています。このように〜"%systemroot%\system32\mspaint.exe" "%1"

「open with ..」コマンドを取得するのに役立つ別の msdn API はありますか? Windows XPにはすでにこの機能があるので、そうあるべきだと思います。

4

2 に答える 2

1

使用するAssocQueryString(..., ASSOCSTR_COMMAND, ...);

例:

TCHAR commandline[1024];
DWORD size = ARRAYSIZE(commandline);
AssocQueryString(0, ASSOCSTR_COMMAND, _T(".txt"), 0, commandline, &size);
于 2013-08-20T12:54:55.707 に答える
1

機能がありSHOpenWithDialogます。

MSDN の SHOpenWithDialog へのリンク

ただし、これを使用して選択したプログラムを取得することはできません。「Open With」動作を呼び出し、最終的にファイルを開くためにのみ使用できます(OAIF_EXEC設定されている場合)。それだけに興味がある場合は、試してみてください。

#include <windows.h>
#include <Shlobj.h>

#pragma comment(lib, "Shell32.lib")

int main()
{
    OPENASINFO info = { 0 };
    info.pcszFile = L"C:\\Temp\\SomeFile.png";
    info.pcszClass = NULL;
    info.oaifInFlags = OAIF_ALLOW_REGISTRATION | OAIF_EXEC;
    SHOpenWithDialog(NULL, &info);
    return 0;
}
于 2013-08-20T04:03:41.540 に答える