【发布时间】:2021-07-30 13:53:21
【问题描述】:
我正在使用SendKeys 将击键发送到程序。
这是我的代码:
If whandle <> 0 Then
User32.SetForegroundWindow(whandle)
System.Windows.Forms.SendKeys.Send("+")
End If
(我也试过 SendWait() 而不是 Send())
这是 Spy++ 显示的我的窗口层次结构:
尽管我可以按标题找到窗口句柄并使用User32.FindWindowEx 循环遍历子项,但在调试时我只需输入 spy++ 所示的窗口句柄(从十六进制转换为十进制),我发现:
- 找到正确的窗口并将其置于前面。
- 但是这个名为 MetaTrader 的特殊程序没有任何反应(如果我使用记事本,窗口键是用记事本写的)。
所以我想我有以下问题之一:
- 我在窗口和子窗口上做错了(我真的不认为这会发生,因为我尝试了 Spy++ 显示的所有句柄)。
- SendKey("+") 与窗口处于活动状态时按“+”键不完全一样,存在一些差异。
在调用User32.SetForegroundWindow(whandle) 之后,如果我真的按下“+”键,就会发生所需的效果,即放大,但不是当我的程序在执行SendKeys 时。我还尝试使用其他产生命令的键,例如 Q 或 A(它们都是简单的键和字母)。
【问题讨论】: