0

-------------------------------- 두 번째 업데이트 -------------- ----------사용자가 win 7 앱에서 Windows 탐색기를 열 때만 가상 폴더를 표시하는 방법은 무엇입니까?

나는 시도 :이 작동하지 않습니다

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을 실행하지 마십시오. 내가 파일 브라우저 대화 상자를 열 때 enter image description here

, 그것은이 가상 표시 : 나는 다음과 같이, "내 컴퓨터"에서 가상 폴더를 만들 마이크로 소프트 윈도우 7.0 SDK 샘플 (ExplorerDataProvider)를 사용하고


폴더. Microfost office에서 "다른 이름으로 저장"을 클릭하면 Windows 파일 탐색기 대화 상자가 나타나서이 가상 폴더를 계속 표시합니다. 나는 C++ 응용 프로그램을 작성했으며 "클릭"할 때 파일을 저장할 수도 있습니다. Windows 파일 탐색기 대화 상자가 열리고 사용자가 디렉터리를 선택하고 저장을 클릭하면 파일을 저장할 수 있습니다. 내 문제는 : 내 C++ 프로그램을 사용하여 파일 대화 상자를 열 때만 가상 폴더를 표시 할 수 있기를 바랍니다. 내 응용 프로그램 외부에서 Windows 탐색기를 열면 가상 폴더가 보이지 않습니다. 내가 어떻게 할 수 있니? 일단 가상 폴더에 대한 DLL을 등록하면 가상 폴더가 항상 존재합니다. 내게 가능한 해결책은 응용 프로그램에서 Windows 탐색기를 열 때 가상 폴더 dll을 등록한 다음 응용 프로그램에서 사용자가 응용 프로그램을 닫을 때 등록을 취소하는 것입니다. 그러나 사용자가 Windows 탐색기를 열지 않고도 사용자가 볼 수 있습니다 Windows 파일 탐색기가 응용 프로그램에 나타날 때 응용 프로그램.

SetVisible 같은 것을 찾지 못했습니다. IShellFolder에 있습니다.

답변

1

GetModuleFileName (NULL)에 의해 반환 된 파일 이름이 C++ 프로그램이 아닌 경우 DLLMain에서 false를 반환 할 수 있습니다.

+0

GetModuleFileName (NULL)? 이 함수에는 세 개의 매개 변수가 있습니다. – beasone

+0

분명히 나머지는 파일 이름을 검색하기 위해 제공하는 것입니다. –

관련 문제