API SendInput; 不过该函数需要NT sp3或windows 98以上keybd_event 和 mouse_event在win95以上可以使用,NT上不知能否使用。MSDN这么说: "... Windows NT: This function has been superseded. Use SendInput instead. ..."
首先你需要用GetKeyState捕获击键,然后再使用keybd_event来仿真应用程序的击键。GetKeyState: 声明:Private Declare Function GetKeyState Lib "user32" _ (ByVal nVirtKey As Long) As Integer 参数:nVirtKey——代表你所要获取信息虚拟键 返回值——返回键的状态 示例:返回左边的Ctrl键的状态 Dim rc As Integer rc = GetKeyState(VK_LCONTROL)keybd_event: 声明:Private Declare Sub keybd_event Lib "user32" _ (ByVal bVk As Byte, _ ByVal bScan As Byte, _ ByVal dwFlags As Long, _ ByVal dwExtraInfo As Long) 参数:bVk——发送给键盘缓冲区的虚拟键 bScan——键的硬件扫描码。一般设为0 dwFlags——事件信息掩码 dwExtranInfo——附加信息 返回值——无 示例:发送一个虚拟值32给窗口进行处理 keybd_event 32, 0, KEYEVENTF_KEYUP, 0 (多说一句:一些流行的远程控制应用软件就是这样向远程的计算机发送击键,并获取远程计算机相应的响应信息的。)
API函数声明
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal Scan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
'一个抓屏的例子
Const VK_SNAPSHOT As Byte = &H2C
' 把应用窗口图象放到剪贴板:
Call keybd_event(VK_SNAPSHOT, 0, 0, 0)
'?把整个屏幕抓到剪贴板:
Call keybd_event(VK_SNAPSHOT, 1, 0, 0)
可以用该方法抓 AVI 图象。
不过该函数需要NT sp3或windows 98以上keybd_event 和 mouse_event在win95以上可以使用,NT上不知能否使用。MSDN这么说:
"...
Windows NT: This function has been superseded. Use SendInput instead.
..."
声明:Private Declare Function GetKeyState Lib "user32" _
(ByVal nVirtKey As Long) As Integer
参数:nVirtKey——代表你所要获取信息虚拟键
返回值——返回键的状态
示例:返回左边的Ctrl键的状态
Dim rc As Integer
rc = GetKeyState(VK_LCONTROL)keybd_event:
声明:Private Declare Sub keybd_event Lib "user32" _
(ByVal bVk As Byte, _
ByVal bScan As Byte, _
ByVal dwFlags As Long, _
ByVal dwExtraInfo As Long)
参数:bVk——发送给键盘缓冲区的虚拟键
bScan——键的硬件扫描码。一般设为0
dwFlags——事件信息掩码
dwExtranInfo——附加信息
返回值——无
示例:发送一个虚拟值32给窗口进行处理
keybd_event 32, 0, KEYEVENTF_KEYUP, 0 (多说一句:一些流行的远程控制应用软件就是这样向远程的计算机发送击键,并获取远程计算机相应的响应信息的。)