关于VB里面SendKeys的一个问题,可能会有点难。

来源:百度知道 编辑:UC知道 时间:2024/05/18 12:49:36
高手帮一下忙,看这个问题应该怎么解决。

平时用SendKeys的时候,都是针对整个系统有效的。

比如SendKeys "%{TAB}" ,整个系统就切换桌面窗口。

现在的问题是,有没办法让SendKeys只针对某个控件有效而不是整个系统有效?

比如说有一个WebBrowser控件打开了一个网页.

网页里面有很多链接,这时按下Tab键的话就是切换链接。

这里问题出来了,能不能让VB发送Tab键给WebBrowser控件呢,

不论VB窗体是否处于激活状态,都会向WebBrowser控件发送Tab键,

并且发送的Tab键只针对WebBrowser控件有效而不是针对整个系统.
我明白你的意思,我提问之后才想起的.

我的意思是,能不能不管窗口是否活动都对它有效.?

楼主恐怕你弄错了.

它不会对整个系统有效的.

首先你先要了解它是干什么的.

它的作用是向WINDOWS的活动窗口发送一个按键消息(也就是说具有焦点的窗口才能接收到这个消息).如果你想让哪个窗口接收按键消息,你只须激活这个窗口就OK了.

能,那你就得调用API了,SendKeys是做不到这个功能的.
获取那个程序的句柄,然后跟句柄向那个程序发送键盘按键消息.
这方面的资料我也没有,你倒网上找找吧.
祝你早日成功.

其实不是对整个系统有效,只是对前台窗口有效,而且单单发送一个 tab键是不用 % 的,不然就会切换窗口
对与vb的控件可以用控件的SetFocus来设置焦点,这是用sendkeys发送的键就对这个控件起作用,对于另外的只知道句柄的窗口可以用
Public Declare Function SetForegroundWindow Lib "user32" Alias "SetForegroundWindow" (ByVal hwnd As Long) As Long
来设置,然后在用sendkeys
*
*
*
不知道能不能用 API SendMessage 做,我没试过