JBTALKS.CC

标题: VB.NET 疑问 - notepad minimize, sendkey去minimized的notepad [打印本页]

作者: goodhermit95    时间: 2011-3-27 02:05 PM
标题: VB.NET 疑问 - notepad minimize, sendkey去minimized的notepad
  1. dim proc as process() = system.diagnostics.process.getprocesses()
  2. for i as integer = 0 to proc.count - 1
  3. if proc(i).processname = "notepad" then
  4. PostMessage(proc(i).MainWindowHandle,WM_CHAR,keys.H,0)
  5. end if
  6. next
  7. Public Const WM_CHAR = &H102
复制代码
请问哪里错?出现api invalid parameter exception
作者: goodhermit95    时间: 2011-3-27 03:12 PM
又是API问题,弄好了'

  1. Private Declare Function PostMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As IntPtr, _
  2. ByVal wMsg As IntPtr, ByVal wParam As IntPtr, ByVal lParam As String) As Long
  3.     Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Integer

  4. Dim hwnd As Long = FindWindow(vbNullString, "Untitled - Notepad")
  5.         If CheckBox1.Checked = True Then PostMessage(hwnd, WM_KEYDOWN, VK_1, vbNullString)
复制代码
为什么没有反应?
作者: shippo    时间: 2011-3-27 10:57 PM
又是老毛病,你如果不把VK_1,WM_KEYDOWN post出,谁想看这种不完整的code。

btw,你的问题在于notepad 是由多个window组成的,你找的是parent,你必需找出打字的 child window。
作者: shippo    时间: 2011-3-27 11:27 PM
本帖最后由 shippo 于 2011-3-27 11:29 PM 编辑

刚试了没问题,vb 真麻烦。。。
  1. Private Const WM_CHAR = &H102
  2. Private Const WM_KEYDOWN = &H100
  3. Private Const VK_RBUTTON = &H9

  4. Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (_
  5. ByVal hwnd As Int32, ByVal wMsg As Int32,_
  6. ByVal wParam As Int32, ByVal lParam As Int32) As Int32

  7. Private Declare Auto Function FindWindow Lib "user32" (ByVal lpClassName As String, _
  8. ByVal lpWindowName As String) As IntPtr

  9. Private Declare Auto Function FindWindowEx Lib "user32" (ByVal hWnd1 As IntPtr, _
  10. ByVal hWnd2 As IntPtr, ByVal lpsz1 As String, ByVal lpsz2 As String) As IntPtr

  11. Dim hwnd As Long = FindWindow(vbNullString, "Untitled - Notepad")
  12. Dim editwnd As Long = FindWindowEx(hwnd, 0, "Edit", vbNullString)
  13. PostMessage(editwnd, WM_KEYDOWN, VK_RBUTTON, 0)
复制代码

作者: goodhermit95    时间: 2011-4-7 06:35 PM
谢谢你,我已经弄到很久了,只是没有空来这里




欢迎光临 JBTALKS.CC (https://jbtalks.my/) Powered by Discuz! X2.5