您可以使用以下步骤来获取资源文件管理器的当前文件夹路径pidl:

1.获取资源文件管理器的窗口句柄。

HWND hExplorer = FindWindow("Progman", "Program Manager"); SendMessage(hExplorer, 0x052C, 0, 0);

2.获取当前选中文件夹的pidl。

IShellFolder pDesktopFolder; LPITEMIDLIST pidl; SHGetDesktopFolder(&pDesktopFolder); SHParseDisplayName("::{20D04FE0-3AEA-1069-A2D8-08002B30309D}", NULL, &pidl, 0, NULL); pDesktopFolder->BindToObject(pidl, NULL, IID_IShellFolder, (LPVOID)&pDesktopFolder); LPITEMIDLIST pidlChild; ULONG chEaten; DWORD dwAttributes; pDesktopFolder->ParseDisplayName(NULL, NULL, L"File Explorer", &chEaten, &pidlChild, &dwAttributes); pDesktopFolder->BindToObject(pidlChild, NULL, IID_IShellFolder, (LPVOID*)&pDesktopFolder); pDesktopFolder->ParseDisplayName(NULL, NULL, L"C:", &chEaten, &pidlChild, &dwAttributes);

3.获取pidl对应的路径。

TCHAR szPath[MAX_PATH]; SHGetPathFromIDList(pidlChild, szPath);

4.在鼠标中键按钮按下时输出路径。

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_MBUTTONDOWN: TCHAR szPath[MAX_PATH]; SHGetPathFromIDList(pidlChild, szPath); MessageBox(hWnd, szPath, L"Current Folder Path", MB_OK); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } return 0;

c++鼠标在资源文件管理器 中键按钮按下时输出资源文件管理器的当前文件夹路径pidlwin32接口

原文地址: https://www.cveoy.top/t/topic/hgkv 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录