- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
正如标题所暗示的,我在问通过点击屏幕我能找到什么。
更准确地说,可以点击一个精确的元素(它可以是用于在通用浏览器上打开新选项卡的 +
符号,或者 File
然后 Save as...
Open Office 文档上的元素)被检测到并返回某种类型的已单击内容的字符串?
通过使用 Win32 API,我能够检测是否单击了鼠标左键:
for(character=1; character<=222; character++) {
if(GetAsyncKeyState(character) == -32767) {
...
switch(character) {
case VK_LBUTTON: ...; break;
...
}
}
}
当检测到点击时,我知道它被点击的位置(或者,至少,点击发生的窗口的名称):
void whichWindow(FILE *f) {
HWND foreground = GetForegroundWindow();
char window_title[256];
if(foreground) {
GetWindowText(foreground, window_title, 256);
fputs(window_title, f);
getMenuFromWindow(f, foreground);
}
else fputs("Problem retrieving window's title name", f);
}
但是,我不知道点击了什么。
你会发现获取鼠标点击的坐标对我来说毫无用处,除非我知道屏幕上所有可以点击的东西的坐标。
我检查了 WindowsUI Automation,但大部分是用 C# 编写的,对于我的豪 pig 来说,我更愿意留在 C 中。
很多人告诉我使用网络中的一个程序,但正如我所说,我更愿意只使用 C,而不包括一些外部库。
那么:有没有办法仅通过使用 Windows API 来查明我是在某些文本编辑器上单击了“新建文件”,还是在 VLC 上单击了“播放”?
最佳答案
您可以通过如下逻辑获取鼠标光标下(子)窗口的句柄、文本和类名:
HWND hWndF = GetForegroundWindow();
if (hWndF != NULL)
{ HWND hWndC;
TCHAR szClassName[64], szWindowText[256];
POINT pt;
GetClassName(hWndF, szClassName, _countof(szClassName)); // main window
GetWindowText(hWndF, szWindowText, _countof(szWindowText)); // main window
GetCursorPos(&pt); // in screen coordinates
ScreenToClient(hWndF, &pt); // in client coordinates of main window
hWndC = ChildWindowFromPointEx(hWndF, pt, CWP_ALL);
if (hWndC != NULL && hWndC != hWndF)
{ GetClassName(hWndC, szClassName, _countof(szClassName)); // child window
GetWindowText(hWndC, szWindowText, _countof(szWindowText)); // child window
}
}
关于c - Windows - 我们可以从鼠标点击 "clickable"中推断出什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25367867/
基础问题 我要解决的基本问题是: 我有一个模板参数包 ArgTypes,我需要用包装在 std::optional 中的每个类型创建一个元组。例如:make_optional_tuple应该返回 st
我使用 createEntityAdapter 设置了一个简单的 redux store。初始状态包含实体、ID、状态、错误设置等 const carouselEventAdapter = creat
我有一些(遗留)代码,如下所示: void castFoo(string type, void* foo) { FooA* foo_a = NULL; FooB* foo_b = NULL;
我的代码是 const int *const ptrA = nullptr; auto *ptrB = &ptrA; 我对 const int *const ptrA 的看法是: (*
我目前正在尝试用 C++ 实现 XOR 链表。我尝试使用模板使其通用。编译时会弹出此错误,我无法解决这个问题。 我尝试使用模板在谷歌上搜索 XOR 链表,但到目前为止似乎还没有实现它。 异或链表.h:
我正在尝试找到一种方法来调用多个类成员函数,每个函数都有不同的参数,并且在调用前后会发生某些已知功能。 这个包装函数是我试过的,但是例如对它的最终调用不会编译错误: 'bool Wrapper(Wor
此代码在 上编译成功g++ ( Coliru ) ,但不是 Visual C++ ( rextester ) - 在线和我的桌面。 它是一个更大的 Visual Studio 2015 项目的简化版本
我正在尝试编写一个通用类,它传递一个键 key 对应于一组已知接口(interface)中的一个的键,稍后可以传递一个对象 thing 并类型安全地访问 thing[key]。这是我得到的: inte
关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。 这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topi
我是一名优秀的程序员,十分优秀!