我的程序想向另外一个游戏程序发送组合键.我知道sendkeys可以实现,但那需要那个游戏程序处于活动状态,在最前面.这样我就做不了别的事了.我就想用postmessage实现.因为postmessage是对hwnd操作,不是对活动窗口操作.用postmessage发送ctrl+HOME 怎么写?
PostMessage m_hScrWindow, WM_KEYDOWN, 17, 0
PostMessage m_hScrWindow, WM_KEYDOWN, 36, 0这样写好像不对啊?(我dubug发现,ctrl是17 home是36的)不用sendkeys,就想用postmessage,或者看sendmessage能实现不.我需要的是那个游戏程序自已运行,不要总在处于活动状态,处在在最前面的状态?

解决方案 »

  1.   

    Private Declare Function PostMessage Lib "user32.dll" Alias "PostMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    Private Const WM_KEYUP As Long = &H101
    Private Const WM_KEYDOWN As Long = &H100PostMessage hWnd, WM_KEYDOWN, 17, 0
    PostMessage hWnd, WM_KEYDOWN, 36, 0
    PostMessage hWnd, WM_KEYUP, 36, 0
    PostMessage hWnd, WM_KEYUP, 17, 0
      

  2.   

    可是运行效果出不来啊,在记事本中ctrl+home是光标回到文首,我用上面代码,只产生了home的效果,回到行首.怎么回到文首?
      

  3.   

    别忘了在记事本中要给子窗体(Edit)发消息。
      

  4.   

    是给子窗体发的啊.都可以产生home效果回到行首得嘛.但是就是产生不了ctrl+home的效果,回不到屏首,麻烦你帮我试试呢.