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 环境。
ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)。
字符串解构赋值
const [a, b, c, d, e] = 'hello';
a // "h"
b // "e"
c // "l"
d // "l"
e // "o"