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

代码说明

  1. 获取当前鼠标位置

    • 使用 GetCursorPos(&cursorPos) 函数获取当前鼠标位置,并存储在 cursorPos 结构体中。
  2. 获取窗口句柄

    • 使用 WindowFromPoint(cursorPos) 函数获取当前鼠标位置下的窗口句柄,并将结果存储在 windowHandle 变量中。
  3. 获取窗口标题

    • 使用 GetWindowTextA(windowHandle, windowTitle, 256) 函数获取窗口标题,并存储在 windowTitle 字符串中。
  4. 判断是否为文件管理器

    • 使用 strcmp(windowTitle, '文件资源管理器') == 0 判断窗口标题是否为 '文件资源管理器'。
  5. 获取当前路径

    • 如果窗口标题为 '文件资源管理器',则使用 GetCurrentDirectoryA(MAX_PATH, currentPath) 函数获取当前路径,并存储在 currentPath 字符串中。
  6. 输出当前路径

    • 使用 std::cout << '当前路径:' << currentPath << std::endl 输出获取到的当前路径。

总结

本篇文章提供了一个简单的方法,使用 C++ 和 Win API 获取鼠标点击的文件管理器当前路径。该方法使用 WindowFromPoint 获取窗口句柄,GetWindowTextA 获取窗口标题,GetCurrentDirectoryA 获取当前路径,并通过简单的判断逻辑确定当前鼠标点击是否在文件管理器窗口上。

C++ 使用 Win API 获取鼠标点击的文件管理器当前路径

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

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