用VB记事本程序发送F5键不成功,请求帮助

来源:百度知道 编辑:UC知道 时间:2024/05/19 03:01:05
这是我用VB6。0,windows 2003下编的程序:
Dim hWnd2 As Long
Dim rst As Long
hWnd2 = FindWindowa(vbNullString, "ffff.txt - 记事本")
SetWindowPos hWnd2, HWND_TOP, 0, 0, 0, 0, SW_NORMAL
' 设置已知进程的窗口为最前窗口,并得到焦点
rst = SendMessage(hWnd2, WM_KEYDOWN, VK_F5, 0&)

rst 的值返回是0,表示不成功,(句柄已得到,SetWindowPos也能顺利执行)

这是因为记事本中接收键盘消息的不是主窗口,而是编辑窗口,编辑窗口是个Edit类,你需要向这个编辑窗口SendMessage才可以实现你要的功能。

找到编辑窗口的方法是通过EnumChildWindows回调函数来实现,如果你对回调函数不太了解还是先学一学这方面的东西吧。

其实利用消息来进行编程前,最好使用VS6带的spy++来捕获一下程序所涉及的消息比较好。

hWnd2 = FindWindowa(vbNullString, "ffff.txt")