(高分)一个模拟键盘相关的,请救

weiyulin 2005-12-07 11:20:21
在VB中可以用SendKeys 或 SendMessage 发送消息

但如果对象的Hwnd为0,我该怎么发送

如发送ESC键
...全文
233 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
weiyulin 2006-01-11
  • 打赏
  • 举报
回复
呵呵 明白了 谢谢
rainstormmaster 2005-12-28
  • 打赏
  • 举报
回复
// 不知道 taskmgr.exe 是个什么文件

windows里面的任务管理器
weiyulin 2005-12-28
  • 打赏
  • 举报
回复
rainstormmaster(暴风雨 v2.0)

你的例子好像可以 但我没办法测试


不知道 taskmgr.exe 是个什么文件

继续请教
rainstormmaster 2005-12-11
  • 打赏
  • 举报
回复
在xp下还可以这样屏蔽任务管理器:
Private Sub Form_Load()
Dim s As String
s = Environ("windir")
s = s + "\system32\taskmgr.exe"
Open s For Random Lock Read As #1
End Sub

Private Sub Form_Unload(Cancel As Integer)
Close #1
End Sub
rainstormmaster 2005-12-11
  • 打赏
  • 举报
回复
//我用以下代码实验了此功能(Windows XP),但效果不理想, 哪位兄弟帮我改一下

很明显,发送的消息不对,修改如下:
Option Explicit
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Integer, ByVal lParam As Long) As Long
Private Const WM_CLOSE = &H10


Private Sub Timer1_Timer()

DoEvents

Dim SysFormHwnd As Long

SysFormHwnd = FindWindow(vbNullString, "Windows 任务管理器")

Caption = SysFormHwnd
SendMessage SysFormHwnd, WM_CLOSE, 0, 0

End Sub
weiyulin 2005-12-11
  • 打赏
  • 举报
回复
我用以下代码实验了此功能(Windows XP),但效果不理想, 哪位兄弟帮我改一下

Option Explicit
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Integer, ByVal lParam As Long) As Long
Const sc_close = 2



Private Sub Timer1_Timer()

DoEvents

Dim SysFormHwnd As Long

SysFormHwnd = FindWindow(vbNullString, "Windows 任务管理器")

Caption = SysFormHwnd
SendMessage SysFormHwnd, sc_close, 0, 0

End Sub

注: Timer1.Interval = 1
weiyulin 2005-12-11
  • 打赏
  • 举报
回复
不是任务管理器

是在按了Ctrl + Alt + Del 后出现的第一个全屏窗口,就是Windows安全(Windows 2000 Server)

用获取前台窗体句柄的API 返回值  的的确确是0, 不可能有错


   继续请教
rainstormmaster 2005-12-10
  • 打赏
  • 举报
回复
//获取Ctrl + Alt + Del 后出现的窗体 hwnd 确实为0
而且窗体标题栏也为空

是任务管理器吗?

//hwnd不可能获取错误
对不对,你用spy++看看就知道了


顺便问一下,你打算做什么呢?


biku 2005-12-10
  • 打赏
  • 举报
回复
你是获取了哪个窗体,能说说吗?最好把相关获得HWND的代码也帖出来。
weiyulin 2005-12-09
  • 打赏
  • 举报
回复
hwnd不可能获取错误
我和获取前台窗体句柄API 获取Ctrl + Alt + Del 后出现的窗体 hwnd 确实为0
而且窗体标题栏也为空
rainstormmaster 2005-12-08
  • 打赏
  • 举报
回复
//那是你没有正确获取到对象的HWND

也有可能是轻权控件,本身就没有句柄




发送按键用sendkeys就可以了,关键是你的程序不能转移输入焦点
yinweihong 2005-12-08
  • 打赏
  • 举报
回复
但如果对象的Hwnd为0,我该怎么发送
///那是你没有正确获取到对象的HWND
northwolves 2005-12-07
  • 打赏
  • 举报
回复
或许对你有帮助:

http://www.vbaccelerator.com/home/VB/Tips/SendKeys_using_the_API/SendKeys_Demonstration_zip_cSendKeys_cls.asp
northwolves 2005-12-07
  • 打赏
  • 举报
回复
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)

1,486

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧