node.js 获取图标的在电脑中的坐标

node.js 如何获取图片中缪个按钮在电脑中的坐标 或者如何搜索到某个按钮并点击

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,无法直接获取图标在电脑中的坐标,因为这不是其设计的主要功能。

如果你想获取电脑中的图标坐标,可以考虑使用其他编程语言,比如 C++ 或者 C#。在 Windows 系统下,可以使用 Windows API 中的 Shell32 库来获取图标在电脑中的坐标。

以下是使用 C++ 语言调用 Windows API 获取图标在电脑中的坐标的示例代码:

#include <Windows.h>
#include <ShlObj.h>

int main() 
{
    LPSHELLFOLDER pDesktopFolder = NULL;
    HRESULT hr = ::SHGetDesktopFolder(&pDesktopFolder);
    if (FAILED(hr)) 
    {
        // 获取失败的处理逻辑
        return 0;
    }

    LPITEMIDLIST pcidl = NULL;
    hr = ::SHGetSpecialFolderLocation(NULL, CSIDL_DESKTOP, &pcidl);
    if (FAILED(hr)) 
    {
        // 获取失败的处理逻辑
        pDesktopFolder->Release();
        return 0;
    }

    IShellFolder* pFolder = NULL;
    hr = pDesktopFolder->BindToObject(pcidl, NULL, IID_IShellFolder, (LPVOID*)&pFolder);
    if (FAILED(hr))
    {
        // 获取失败的处理逻辑
        pDesktopFolder->Release();
        CoTaskMemFree(pcidl);
        return 0;
    }

    LPENUMIDLIST pEnum = NULL;
    hr = pFolder->EnumObjects(NULL, SHCONTF_FOLDERS | SHCONTF_NONFOLDERS, &pEnum);
    if (FAILED(hr))
    {
        // 获取失败的处理逻辑
        pFolder->Release();
        pDesktopFolder->Release();
        CoTaskMemFree(pcidl);
        return 0;
    }

    ULONG ulCount = 0;
    LPITEMIDLIST pidl = NULL;
    while (SUCCEEDED(hr) && pEnum->Next(1, &pidl, &ulCount) == S_OK)
    {
        STRRET strret;
        pFolder->GetDisplayNameOf(pidl, SHGDN_NORMAL, &strret);
        WCHAR szDisplayName[MAX_PATH] = { 0 };
        StrRetToBuf(&strret, pidl, szDisplayName, MAX_PATH);

        // 获取文件/文件夹的图标在电脑中的坐标
        SHFILEINFO shfi;
        DWORD_PTR dwResult = ::SHGetFileInfo((LPCWSTR)pidl, FILE_ATTRIBUTE_NORMAL, &shfi, sizeof(SHFILEINFO), SHGFI_DISPLAYNAME | SHGFI_SYSICONINDEX);
        int x = (int)LOWORD(dwResult);
        int y = (int)HIWORD(dwResult);

        // TODO:对x、y进行后续处理
    }

    pEnum->Release();
    pFolder->Release();
    pDesktopFolder->Release();
    CoTaskMemFree(pcidl);

    return 0;
}

运行以上代码,可以获取电脑桌面上所有文件或文件夹的图标在电脑中的坐标。通过将 pidl 参数替换为指定文件或文件夹的路径,也可以获取指定文件或文件夹的图标在电脑中的坐标。注意,以上代码仅适用于 Windows 环境。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^