可以使用以下代码来实现:

#include <Windows.h>
#include <iostream>

int main()
{
    HWND hwnd = GetForegroundWindow();
    char title[256];
    GetWindowText(hwnd, title, sizeof(title));
    if (strcmp(title, "文件资源管理器") == 0) {
        HWND hShellView = FindWindowEx(hwnd, NULL, "SHELLDLL_DefView", NULL);
        if (hShellView != NULL) {
            HWND hListView = FindWindowEx(hShellView, NULL, "SysListView32", NULL);
            if (hListView != NULL) {
                int selectedCount = ListView_GetSelectedCount(hListView);
                if (selectedCount > 0) {
                    LVITEM lvItem = { 0 };
                    lvItem.mask = LVIF_TEXT;
                    lvItem.iItem = ListView_GetNextItem(hListView, -1, LVNI_SELECTED);
                    lvItem.iSubItem = 0;
                    lvItem.pszText = new char[MAX_PATH];
                    lvItem.cchTextMax = MAX_PATH;
                    ListView_GetItem(hListView, &lvItem);
                    std::cout << lvItem.pszText << std::endl;
                    delete[] lvItem.pszText;
                }
            }
        }
    }
    return 0;
}

这段代码的作用是获取当前窗口的标题,如果是“文件资源管理器”,就在窗口中查找文件列表视图控件,然后获取选中的文件的路径。具体实现可以参考注释

c++ 通过win api 如果鼠标点击的是在文件管理器那么输出文件管理器打开的路径

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

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