c++ - 如何在 Windows API Mouse Hook 中使用 UIAutomation Element 了解元素信息
问题描述
在我的程序中,当我将鼠标悬停时,我想知道有关元素的一些信息,到目前为止我能够获取元素的名称。
但我也想知道它
本地化控制类型
自动化 IDIsInvokePatternAvailable
IsSelectionItemPatternAvailiable
IsTogglePattern 可用。
这是我到目前为止的代码,它可以帮助我获取元素的名称
#include "mainwindow.h"
#include "common.h"
#include <fstream>
#include "XMLParser.h"
#include "ExecutionContext.h"
#include "UIAElementUtils.h"
#include "BlockCommand.h"
#include <ShellScalingAPI.h>
#include <conio.h>
#include <thread>
#include<qthread.h>
#include <qdebug.h>
ExecutionContext gExecutionContext;
#include <QtWidgets/qapplication.h>
//used to handle widgets,event handling,mouse movements, overall look and feel
BOOL InitializeUIAutomation(IUIAutomation** automation)
{
CoInitialize(NULL);
HRESULT hr = CoCreateInstance(__uuidof(CUIAutomation), NULL,
CLSCTX_INPROC_SERVER, __uuidof(IUIAutomation),
(void**)automation);
return (SUCCEEDED(hr));
}
int main(int argc, char** argv)
{
QApplication a(argc, argv);
MainWindow w;
//Here is the main code
IUIAutomation* automation = NULL;
IUIAutomationElement* elem = NULL;
BOOL stat = InitializeUIAutomation(&automation);
POINT mousePt;
BSTR elemName = NULL;
if (stat)
{
while (true)
{
GetCursorPos(&mousePt);
HRESULT hr = automation->ElementFromPoint(mousePt, &elem);
if (SUCCEEDED(hr) && elem != NULL)
{
elem->get_CurrentName(&elemName);
std::wstring ws(elemName, SysStringLen(elemName));
//elem->SetFocus();
// std::wcout << ws << std::endl;
QString testing = QString::fromStdWString(ws);
qDebug() << testing;
}
SysFreeString(elemName);
elem->Release();
Sleep(40);
}
}
automation->Release();
CoUninitialize();
QObject::connect(&MainWindow::instance(), &MainWindow::mouseEvent,
[]() {
qDebug() << "Mouse Event";
});
w.show(); //displays on screen.
return a.exec();
}
解决方案
推荐阅读
- python - 无效的语法 (
,第 89 行)-pylint(语法错误) - sql - 如果不是使用 SQL 的另一个表,如何从表中删除列?
- javascript - 无法在 Ionic 3 应用程序中导入 Amplitude SDK
- swift - 将结果转换为数组时的性能
- vb.net - 如何解析包含 Unicode ID 的字符串以及纯文本以在数据网格视图中显示
- c++ - wxWidgets:如何改变和显示sizer的内容
- c# - 如何在 C# Windows 窗体中打开可从所有设备访问的 localhost 服务器
- ruby-on-rails - 未发送设计可确认的电子邮件
- mysql - Mysql 中的默认键约束是什么,或者单独的“key”关键字有什么作用?
- swift - “使用 PDF 从 xcasset 加载图像资源时出错”