私はファイル拡張子を持っていて、そのタイプのファイルをShellExecuteするときに呼び出されるアプリケーションの名前を取得したいと思います。これはWTL/C++アプリケーションです。これを行うサンプルコードはありますか?拡張のための登録されたアプリケーションを決定する
ありがとうございます!
私はファイル拡張子を持っていて、そのタイプのファイルをShellExecuteするときに呼び出されるアプリケーションの名前を取得したいと思います。これはWTL/C++アプリケーションです。これを行うサンプルコードはありますか?拡張のための登録されたアプリケーションを決定する
ありがとうございます!
申し訳ありませんが、コードはありません。関連する質問:how-does-vista-generate-the-icon-for-documents-associated-to-my-application
それはアイコンについて尋ねましたが、拡張機能に関連付けられたプログラムは、その拡張機能のアイコンとしてレジストリ内の同じ場所に保存されていることがわかりました。あなたは、おそらくのWin32 AssocQueryStringByKey機能を探している
TWK、
。
http://msdn.microsoft.com/en-us/library/bb773473(VS.85).aspx
返される文字列の種類を指定するASSOCSTR値:
typedef enum {
ASSOCSTR_COMMAND = 1,
ASSOCSTR_EXECUTABLE,
ASSOCSTR_FRIENDLYDOCNAME,
ASSOCSTR_FRIENDLYAPPNAME,
ASSOCSTR_NOOPEN,
ASSOCSTR_SHELLNEWVALUE,
ASSOCSTR_DDECOMMAND,
ASSOCSTR_DDEIFEXEC,
ASSOCSTR_DDEAPPLICATION,
ASSOCSTR_DDETOPIC,
ASSOCSTR_INFOTIP,
ASSOCSTR_QUICKTIP,
ASSOCSTR_TILEINFO,
ASSOCSTR_CONTENTTYPE,
ASSOCSTR_DEFAULTICON,
ASSOCSTR_SHELLEXTENSION,
ASSOCSTR_DROPTARGET,
ASSOCSTR_DELEGATEEXECUTE,
ASSOCSTR_MAX
} ASSOCSTR;
は私の推測では、あなたがASSOCSTR_FRIENDLYAPPNAMEをしたいということです。
それは必ずしもそうではありません1995年からWin32のよくある質問(シェル、Googleグループ、Win32のを参照してください)
さて、ドミ、私たちはまっすぐに私たちを置いてうれしいです。 –
DWORD dwSize = 255;
TCHAR sBuffer[MAX_PATH] = {0};
HRESULT hr = AssocQueryString(0, ASSOCSTR_EXECUTABLE, _T(".htm"), _T("Open"), sBuffer, &dwSize);
CString csExt;
csExt.Format(_T("%s"), sBuffer);
AfxMessageBox(csExt);
です。 IContextMenuインターフェイスを実装する名前空間拡張は、ファイル拡張子の新しい動的動詞を導入することもでき、静的に登録された動詞に対して実行される既定の動作にも影響を及ぼします。 ShellExecuteEx()はIContextMenuを考慮しますが、ShellExecute()は考慮しません。 –
ああ、知っておいてよかった! – Cheeso