none
关于sendkeys的问题 RRS feed

  • 问题

  • 我有一个疑惑。我想利用c#做一个格斗游戏的组合热键程序, 用sendkeys向记事本发送的时候能实现,比如sendkeys.send("w");    W建在游戏中代表跳跃,但是为什么用sendkeys发送的的不起作用呢?
    2010年9月9日 12:57

答案

  • 你需要确定接收键盘消息的窗口句柄是否找对了.

    可以使用SendMessage试试看.

    另外,在模拟击键的时候,最好保证游戏主窗口能够获得焦点,否则消息可能被游戏忽略.

    也就是说,你的击键模拟需要有一种激活的手段,不能自己写个程序,点个按钮就指望把消息发过去,

    也许发过去了,但是游戏本身可能忽略消息,因为他没有焦点,各种不同的游戏有不同的处理方法,

    比如完美世界,一旦游戏窗口失去焦点,按键就不管用,SendKey自然 也不管用.

    2010年9月10日 1:53
  • 也得看对方是否认消息。如果是游戏的话,很多不处理消息,直接访问键盘驱动的。

    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP
    2010年9月15日 0:26
    版主

全部回复

  • 你需要确定接收键盘消息的窗口句柄是否找对了.

    可以使用SendMessage试试看.

    另外,在模拟击键的时候,最好保证游戏主窗口能够获得焦点,否则消息可能被游戏忽略.

    也就是说,你的击键模拟需要有一种激活的手段,不能自己写个程序,点个按钮就指望把消息发过去,

    也许发过去了,但是游戏本身可能忽略消息,因为他没有焦点,各种不同的游戏有不同的处理方法,

    比如完美世界,一旦游戏窗口失去焦点,按键就不管用,SendKey自然 也不管用.

    2010年9月10日 1:53
  • 敢问你向完美世界发信息的时候用的什么? SENDKEY,SENGMESSAGE?  还有你发的时候是向哪个窗体发的,是最大的窗体的嘛?

    2010年9月13日 12:16
  • 也得看对方是否认消息。如果是游戏的话,很多不处理消息,直接访问键盘驱动的。

    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP
    2010年9月15日 0:26
    版主