15,475
社区成员




这是一个资源管理器窗口,通过以下代码获取窗口:
HWND hwnd = GetForegroundWindow();
char className[256];
GetClassNameA(hwnd, className, sizeof(className));
if (strcmp(className, "CabinetWClass") == 0) {
// 可能是资源管理器窗口
}
那么如何获取路径,如图中的 R:\
学习一下
学到了
要获取资源管理器窗口中显示的路径(例如 "R:"),你可以使用以下方法:
获取路径文字控件的句柄: Windows资源管理器窗口中显示路径的通常是一个编辑框或者静态文字控件。你可以使用窗口遍历或者其他API来找到这个控件。
使用窗口遍历找到路径控件:
首先,获取资源管理器窗口的句柄,你已经使用了 GetForegroundWindow() 和 GetClassNameA() 来检查窗口类名。
接下来,可以使用 FindWindowEx() 或者 EnumChildWindows() 函数来找到资源管理器窗口中显示路径的控件句柄。
获取控件文本: 一旦找到了路径控件的句柄,可以使用 GetWindowText() 函数来获取控件显示的文本内容。
以下是一个简单的示例代码,展示如何获取资源管理器窗口中显示路径的文本:
#include <windows.h>
#include <iostream>
int main() {
HWND hwnd = GetForegroundWindow();
char className[256];
GetClassNameA(hwnd, className, sizeof(className));
if (strcmp(className, "CabinetWClass") == 0) {
// 找到资源管理器窗口,接下来查找路径控件
HWND hPathControl = NULL;
hPathControl = FindWindowEx(hwnd, NULL, "Breadcrumb Parent", NULL);
if (hPathControl != NULL) {
// 找到路径控件,获取其文本
char pathText[256];
GetWindowTextA(hPathControl, pathText, sizeof(pathText));
// 输出路径文本
std::cout << "Path: " << pathText << std::endl;
} else {
std::cout << "Path control not found." << std::endl;
}
}
return 0;
}
请注意:
示例中使用了 FindWindowEx() 来查找路径控件。你需要确保指定的控件类名或者窗口标题正确。
控件的类名和窗口标题可能根据不同版本的Windows和配置而有所不同,需要根据实际情况调整。
这只是一个简单的示例,实际中可能需要更复杂的窗口遍历或者控件识别逻辑,具体取决于你要操作的资源管理器窗口的具体情况和需求。