代码之家  ›  专栏  ›  技术社区  ›  adeel825

使用C将鼠标单击发送到任务栏中的按钮#

  •  7
  • adeel825  · 技术社区  · 16 年前

    在我目前正在开发的应用程序中,要求将外部应用程序的窗口置于前台。进行win32 api调用(如bringwindowtotop和setforeground window)并不总是有效。这是由于Windows XP中的某些限制造成的。我要做的是发送模拟鼠标点击任务栏上的窗口按钮,我希望它能把窗口带到前面。有人知道这是怎么可能的吗?

    4 回复  |  直到 12 年前
        1
  •  5
  •   Joel Lucsy    16 年前

    查看“How to steep focus on 2K/XP”部分,网址为 http://www.codeproject.com/KB/dialog/dlgboxtricks.aspx 因为这正是你需要的。我不会走任务栏路线,因为任务栏可能被隐藏或根本不在那里。

        2
  •  2
  •   NoNaMe    12 年前

    这是可能的。但非常粗略。您的应用程序也可能会与下一个版本的Windows中断,因为它是未经记录的。您需要做的是找到任务栏的窗口句柄,然后找到表示该按钮的子窗口的窗口句柄,然后向它发送一条wm mousedown(我认为)消息。

    下面介绍如何找到任务栏的窗口句柄:

    http://www.codeproject.com/

    fwiw,对bringwindowtotop/setforeground的限制是存在的,因为当一个窗口窃取焦点时会很恼人。如果你在一个企业环境中工作,这可能无关紧要。记住这一点。:)

        3
  •  1
  •   Nelson Miranda    16 年前

    我在一个程序中使用这个,在这个程序中我需要模拟点击和鼠标移动;

    Global Mouse and Keyboard Library

        4
  •  1
  •   Ryan Farley    16 年前

    老实说,在XP/Vista/2003/2000上,我从未遇到过将窗口带到前台的问题。

    您需要确保执行以下操作:

    1. 检查Isiconic(最小化)
    2. 如果1结果为真,则调用 ShowWindow通过软件恢复
    3. 然后调用SetForegroundWindow

    我从来没有遇到过可以用这些步骤来完成的问题。