2

--------------------------------2回目の更新---------------- --------

私は試した:

STDAPI_(BOOL) DllMain(HINSTANCE hInstance, DWORD dwReason, void *)
{
// Get the path and module name.
WCHAR szModulePathAndName[MAX_PATH];
GetModuleFileName(hInstance, szModulePathAndName, ARRAYSIZE(szModulePathAndName));

std::ofstream outfile("DllMain.txt");
outfile << szModulePathAndName << std::endl;
outfile.close();

if (dwReason == DLL_PROCESS_ATTACH)
{
    g_hInst = hInstance;
    DisableThreadLibraryCalls(hInstance);
}
return TRUE;
}

これはうまくいきません。txtファイルに出力される内容は次のとおりです。 00000000000CDEE0 そして、dllを登録すると一度だけ出力されます。その後、仮想フォルダーを何度参照しても、それを開いても、文字列を再度印刷するために DllMain を入力することはありません。


次のように、Microsoft Windows 7.0 SDK サンプル ( ExplorerDataProvider ) を使用して、「マイ コンピューター」に仮想フォルダーを作成しています。 ここに画像の説明を入力

ファイル ブラウザ ダイアログを開くと、この仮想フォルダが表示されます。Microfost オフィスから [名前を付けて保存] をクリックすると、Windows ファイル エクスプローラー ダイアログがポップアップし、この仮想フォルダーが表示されます。「エクスポート」をクリックするとファイルを保存できるC++アプリケーションを作成しました。Windows ファイル エクスプローラー ダイアログが開き、ユーザーがディレクトリを選択して [保存] をクリックすると、ファイルを保存できます。私の問題は次のとおりです。C++ プログラムを使用してファイル ダイアログを開くときにのみ、仮想フォルダーが表示されることを願っています。アプリケーションの外部で Windows エクスプローラーを開くと、仮想フォルダーが表示されません。どうすればそれができますか?仮想フォルダーのdllを登録すると、仮想フォルダーは常にそこにあるようです。

SetVisibleの関数のようなものは見つかりませんでしたIShellFolder

4

1 に答える 1