#include <Windows.h>
#include "../../../gdlib/gdutil.h"
#include "../../../gdlib/DebugConsole.h"
#include "GetFolderPath.h"
#define CUTOFF_DATA L"地址: " //地址路径无效数据
static BOOL WINAPI _GetNtVersionNumbers(DWORD&dwMajorVer, DWORD& dwMinorVer, DWORD& dwBuildNumber)
{
BOOL bRet = FALSE;
HMODULE hModNtdll = GetModuleHandleA("ntdll.dll");
if (hModNtdll)
{
typedef void (WINAPI* RtlGetNtVersionNumbers)(DWORD*, DWORD*, DWORD*);
RtlGetNtVersionNumbers pRtlGetNtVersionNumbers = (RtlGetNtVersionNumbers)GetProcAddress(hModNtdll, "RtlGetNtVersionNumbers");
if (pRtlGetNtVersionNumbers)
{
pRtlGetNtVersionNumbers(&dwMajorVer, &dwMinorVer, &dwBuildNumber);
dwBuildNumber &= 0x0ffff;
bRet = TRUE;
}
}
return bRet;
}
BOOL WINAPI _EnumApp(HWND hWnd, void* lParam)
{
list<wstring> *pList = (list<wstring> *)lParam;
WCHAR wszPath[MAX_PATH] = {0};
do
{
if (hWnd == NULL)
{
break;
}
HWND hWorker = FindWindowExW(hWnd, 0, L"WorkerW", NULL);
if (!hWorker)
{
break;
}
HWND hReBarWindow = FindWindowExW(hWorker, 0, L"ReBarWindow32", NULL);
if (!hReBarWindow)
{
break;
}
OSVERSIONINFOEXW osvi = {0};
GetVersionExW((OSVERSIONINFOW*)&osvi);
if (!_GetNtVersionNumbers(osvi.dwMajorVersion, osvi.dwMinorVersion, osvi.dwBuildNumber))
{
break;
}
//xp
if (osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 1)
{
HWND hComboBoxEx32Wnd = FindWindowExW(hReBarWindow, 0, L"ComboBoxEx32", NULL);
if (!hComboBoxEx32Wnd)
{
break;
}
HWND hComboBoxWnd = FindWindowExW(hComboBoxEx32Wnd, 0, L"ComboBox", NULL);
if (!hComboBoxWnd)
{
break;
}
HWND hEditWnd = FindWindowExW(hComboBoxWnd, 0, L"Edit", NULL);
if (!hEditWnd)
{
break;
}
SendMessage(hEditWnd, WM_GETTEXT, sizeof(wszPath)/sizeof(WCHAR), (LPARAM)wszPath);
}
//WIN7 WIN8
else if (osvi.dwMajorVersion == 6)
{
HWND hBandRoot = FindWindowExW(hReBarWindow, 0, L"Address Band Root", NULL);
if (!hBandRoot)
{
break;
}
HWND hMsctls = FindWindowExW(hBandRoot, 0, L"msctls_progress32", NULL);
if (!hMsctls)
{
break;
}
HWND hBreadcrumb = FindWindowExW(hMsctls, 0, L"Breadcrumb Parent", NULL);
if (!hBreadcrumb)
{
break;
}
HWND hToolBar = FindWindowExW(hBreadcrumb, 0, L"ToolbarWindow32", NULL);
if (!hToolBar)
{
break;
}
GetWindowTextW(hToolBar, EXPAND_ARG(wszPath));
}
if (EQUALW(wszPath, L""))
{
break;
}
if (GdStrIsBeginWithW(wszPath, CUTOFF_DATA, TRUE))
{
pList->push_back(wszPath + lstrlenW(CUTOFF_DATA));
}
else
{
pList->push_back(wszPath);
}
WriteToDebugConsole(wszPath);
} while (FALSE);
return TRUE;
}
DWORD WINAPI GetFolderPath(list<wstring> &listFolderPath)
{
EnumWindows((WNDENUMPROC)_EnumApp, (LPARAM) &listFolderPath);
return listFolderPath.size();
}
int WINAPI WinMain( __in HINSTANCE hInstance, __in_opt HINSTANCE hPrevInstance, __in_opt LPSTR lpCmdLine, __in int nShowCmd )
{
InitConsole();
list<wstring> lists;
GetFolderPath(lists);
Sleep(-1);
return 0;
}
实时获取打开的所有文件夹路径
需积分: 16 76 浏览量
2016-05-11
11:20:35
上传
评论
收藏 2KB RAR 举报
多异点
- 粉丝: 0
- 资源: 10
最新资源
- 物联网控制_1_1665364018790.png
- 基于matlab的数字图像处理
- win10.win11. 124.0.6367.61 (Official Build)-64-chrome-vs-driver
- Screenshot_2024-04-17-16-48-47-174_com.chaoxing.mobile.jpg
- 《工程经济学(第3版)》项勇、徐姣姣、卢立宇(试题及其答案)
- qt,数据库的增加,删除,查询
- ggggggggggggggggggg
- Loading.dll
- 西软酒店管理系统运行环境
- Windows11InstallationAssistant.exe Windows11升级助手
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈