C++ 使用 Win API 获取鼠标点击的文件管理器当前路径
C++ 使用 Win API 获取鼠标点击的文件管理器当前路径
本篇文章提供了一个 C++ 代码示例,演示如何使用 Win API 检测鼠标点击的位置是否在文件管理器中,并输出当前路径。
#include <Windows.h>
#include <iostream>
int main()
{
// 获取当前鼠标位置
POINT cursorPos;
GetCursorPos(&cursorPos);
// 获取窗口句柄
HWND windowHandle = WindowFromPoint(cursorPos);
// 获取窗口标题
char windowTitle[256];
GetWindowTextA(windowHandle, windowTitle, 256);
// 如果标题为 '文件资源管理器',则输出当前路径
if (strcmp(windowTitle, '文件资源管理器') == 0)
{
char currentPath[MAX_PATH];
GetCurrentDirectoryA(MAX_PATH, currentPath);
std::cout << '当前路径:' << currentPath << std::endl;
}
return 0;
}
这段代码通过 WindowFromPoint 函数获取当前鼠标位置下的窗口句柄,然后通过 GetWindowTextA 函数获取窗口标题。如果标题为'文件资源管理器',则使用 GetCurrentDirectoryA 函数获取当前路径并输出。注意,这里使用的是 ANSI 版本的 API 函数,如果需要使用 Unicode 版本,可以将函数名中的 A 替换为 W。
代码说明
-
获取当前鼠标位置
- 使用
GetCursorPos(&cursorPos)函数获取当前鼠标位置,并存储在cursorPos结构体中。
- 使用
-
获取窗口句柄
- 使用
WindowFromPoint(cursorPos)函数获取当前鼠标位置下的窗口句柄,并将结果存储在windowHandle变量中。
- 使用
-
获取窗口标题
- 使用
GetWindowTextA(windowHandle, windowTitle, 256)函数获取窗口标题,并存储在windowTitle字符串中。
- 使用
-
判断是否为文件管理器
- 使用
strcmp(windowTitle, '文件资源管理器') == 0判断窗口标题是否为 '文件资源管理器'。
- 使用
-
获取当前路径
- 如果窗口标题为 '文件资源管理器',则使用
GetCurrentDirectoryA(MAX_PATH, currentPath)函数获取当前路径,并存储在currentPath字符串中。
- 如果窗口标题为 '文件资源管理器',则使用
-
输出当前路径
- 使用
std::cout << '当前路径:' << currentPath << std::endl输出获取到的当前路径。
- 使用
总结
本篇文章提供了一个简单的方法,使用 C++ 和 Win API 获取鼠标点击的文件管理器当前路径。该方法使用 WindowFromPoint 获取窗口句柄,GetWindowTextA 获取窗口标题,GetCurrentDirectoryA 获取当前路径,并通过简单的判断逻辑确定当前鼠标点击是否在文件管理器窗口上。
原文地址: https://www.cveoy.top/t/topic/oDhs 著作权归作者所有。请勿转载和采集!