V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
V2EX  ›  penzi  ›  全部回复第 6 页 / 共 36 页
回复总数  707
1 ... 2  3  4  5  6  7  8  9  10  11 ... 36  
2025 年 9 月 4 日
回复了 ck125s 创建的主题 C++ [有偿] 小白, Windows UI Automation TextPattern 检测问题求助
https://i.imgur.com/tBnjlCh.png

让 AI 写的,好像一次过

```
#include <iostream>
#include <windows.h>
#include <comdef.h>
#include <UIAutomation.h>
#include <atlbase.h>
#include <thread>
#include <chrono>

#pragma comment(lib, "ole32.lib")
#pragma comment(lib, "oleaut32.lib")

HWND consoleWindow = nullptr;
std::wstring lastSelectedText;

HRESULT GetTextFromActiveWindow(IUIAutomation* automation, std::wstring& selectedText) {
HWND foregroundWindow = GetForegroundWindow();
if (!foregroundWindow || foregroundWindow == consoleWindow) {
return E_FAIL;
}

CComPtr<IUIAutomationElement> windowElement;
HRESULT hr = automation->ElementFromHandle(foregroundWindow, &windowElement);
if (FAILED(hr) || !windowElement) {
return hr;
}

CComPtr<IUIAutomationTextPattern> textPattern;
hr = windowElement->GetCurrentPatternAs(UIA_TextPatternId, IID_PPV_ARGS(&textPattern));
if (FAILED(hr) || !textPattern) {
CComPtr<IUIAutomationElement> focusedElement;
hr = automation->GetFocusedElement(&focusedElement);
if (FAILED(hr) || !focusedElement) {
return hr;
}
hr = focusedElement->GetCurrentPatternAs(UIA_TextPatternId, IID_PPV_ARGS(&textPattern));
if (FAILED(hr) || !textPattern) {
return hr;
}
}

CComPtr<IUIAutomationTextRangeArray> textRangeArray;
hr = textPattern->GetSelection(&textRangeArray);
if (FAILED(hr) || !textRangeArray) {
return hr;
}

int length = 0;
hr = textRangeArray->get_Length(&length);
if (FAILED(hr) || length == 0) {
return hr;
}

selectedText.clear();
for (int i = 0; i < length; i++) {
CComPtr<IUIAutomationTextRange> textRange;
hr = textRangeArray->GetElement(i, &textRange);
if (SUCCEEDED(hr) && textRange) {
BSTR text = nullptr;
hr = textRange->GetText(-1, &text);
if (SUCCEEDED(hr) && text) {
selectedText += text;
SysFreeString(text);
}
}
}
return S_OK;
}

void MonitorSelectedText(IUIAutomation* automation) {
while (true) {
std::wstring currentSelectedText;
HRESULT hr = GetTextFromActiveWindow(automation, currentSelectedText);

if (SUCCEEDED(hr) && !currentSelectedText.empty() && currentSelectedText != lastSelectedText) {
lastSelectedText = currentSelectedText;

HWND foregroundWindow = GetForegroundWindow();
wchar_t windowTitle[256];
GetWindowTextW(foregroundWindow, windowTitle, 256);

std::wcout << L"\n=== 检测到新的选中文本 ===" << std::endl;
std::wcout << L"窗口: " << windowTitle << std::endl;
std::wcout << L"选中内容: " << currentSelectedText << std::endl;
std::wcout << L"========================\n" << std::endl;
}

std::this_thread::sleep_for(std::chrono::milliseconds(200));
}
}

int main() {
CoInitializeEx(NULL, COINIT_MULTITHREADED);

consoleWindow = GetConsoleWindow();

CComPtr<IUIAutomation> automation;
HRESULT hr = CoCreateInstance(CLSID_CUIAutomation, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&automation));

if (FAILED(hr)) {
std::wcout << L"无法创建 UI Automation 对象" << std::endl;
CoUninitialize();
return -1;
}

std::wcout << L"文本选择监控程序已启动..." << std::endl;
std::wcout << L"程序将在后台监控其他窗口中的文本选择" << std::endl;
std::wcout << L"按 Ctrl+C 退出程序\n" << std::endl;

std::thread monitorThread(MonitorSelectedText, automation.p);
monitorThread.detach();

std::wcin.get();

CoUninitialize();
return 0;
}

```
2025 年 9 月 1 日
回复了 miwang 创建的主题 分享创造 开发了一个纯网页端的在线棒球小游戏网站
SEO 之神的徒弟又来展示高超的 JS 做游戏技术了
@alading11 按照安卓人的逻辑,不买我怎么骂他?华为电脑就是垃圾,安卓电脑
2025 年 8 月 29 日
回复了 ALLENi 创建的主题 Linux 书接上回 想买台笔电装 Linux
为什么要学习 Linux ?
典中典之:你没买 xx 品牌的 Android/安卓,凭什么黑安卓
@nuo7mi7 谢谢你,安卓人
安卓就是垃圾,多贵都是垃圾

洗地的基本买不起苹果= =
2025 年 8 月 27 日
回复了 guoziyang0033 创建的主题 分享创造 MoonTV 正式转为开源并移除授权码机制
类似项目有需求缺口, 纯粹是法律风险太大
2025 年 8 月 27 日
回复了 Marelbruim 创建的主题 宠物 七夕节了 自动猫砂盆有折扣想入手 有 v 友推荐吗
除了 petgugu ,都不值得买
去医院看一下心理问题
2025 年 8 月 21 日
回复了 DaDapeng 创建的主题 浏览器 老外有人开发象 Via 这样的迷你安卓浏览器吗?
老外没有这么过剩的生产力做垃圾。
2025 年 8 月 7 日
回复了 bf109_ 创建的主题 汽车 理想车主真的大部分素质堪忧吗
穷人觉得自己比有钱人有学历,有素质
低学历的人觉得自己比高学历的人灵活,高学历的人读书读傻了
2025 年 7 月 22 日
回复了 wheelg 创建的主题 程序员 基于 Safari 的在线设计工具都不可靠吗
设计工具不会用 getImageData 这种 api
2025 年 7 月 22 日
回复了 Gnnbb 创建的主题 随想 人赚不到自己认知以外的钱
@cxe2v 那你就别说自己有过 DIY 经验了。
2025 年 7 月 22 日
回复了 Gnnbb 创建的主题 随想 人赚不到自己认知以外的钱
@cxe2v 你 DIY 过吗?那种沮丧感体验过吗?
2025 年 7 月 22 日
回复了 CNN 创建的主题 Android 折叠屏手机出来 6 年了,你现在信任屏幕了吗?
Android 本身是垃圾,和是不是折叠没关系。
2025 年 7 月 22 日
回复了 Gnnbb 创建的主题 随想 人赚不到自己认知以外的钱
有的人住上海,什么稀奇古怪的东西都能找到线下店,看了喜欢直接拿走。有的人买东西就买京东当日/次日达,送货上门。有的买拼多多野鸡快递,送货到驿站,扔不收钱的门卫。都是为了自己好过。哪有什么认知差距,无非是不值得
2025 年 7 月 22 日
回复了 Gnnbb 创建的主题 随想 人赚不到自己认知以外的钱
就说 DIY ,买了一堆件,结果发现几个件买错了,试了半天不行,等几天快递再试。这种挫败感值多少精神损失费。
1 ... 2  3  4  5  6  7  8  9  10  11 ... 36  
About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3216 Online   Highest 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 33ms · UTC 11:57 · PVG 19:57 · LAX 04:57 · JFK 07:57
♥ Do have faith in what you're doing.