gpt4 book ai didi

Ruby win32-api GetFocus 和 GetWindowText

转载 作者:数据小太阳 更新时间:2023-10-29 07:38:09 24 4
gpt4 key购买 nike

我正在尝试找到一种获取当前窗口文本的方法。因此,使用 win32-api gem,我在 this page 的帮助下编写了这段代码

require 'win32/api'
include Win32
hWnd = GetActiveWindow = API.new('GetActiveWindow', 'V', 'L', 'user32').call
GetWindowText = API.new('GetWindowText', 'LPI', 'I', 'user32')
GetWindowTextLength = API.new('GetWindowTextLength', 'L', 'I', 'user32')
buf_len = GetWindowTextLength.call(hwnd)
str = ' ' * (buf_len + 1)
# Retreive the text.
result = GetWindowText.call(hwnd, str, str.length)
puts str.strip

输出只是一个空字符串,因为 buf_len 总是计算为 0,因为 hwnd 被设置为 0。我不明白为什么返回的 hwnd 总是只有 0。

最佳答案

如前所述,GetActiveWindow 将只检索附加到调用线程的消息队列的窗口。如果您想获得用户当前所在窗口的句柄,而不管它正在运行什么进程,请尝试调用 GetForegroundWindow而不是 GetActiveWindow

Retrieves a handle to the foreground window (the window with which the user is currently working).

关于Ruby win32-api GetFocus 和 GetWindowText,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14220386/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com