请教一个高难度问题:如何用向另一程序的非焦点的窗口发送组合键?比如:向另一个非焦点窗口(最小化,不是当前窗口)模拟发送一个‘F5’键。'F5'是刷新,这样可以当这个窗口执行一个刷新操作。我试验了很多次,只能在这个窗口是当前窗口时,才能接收到这个'F5',如果这个窗口最小化,或不是当前窗口,就不能收到这个消息。各位大侠有什么好的办法没?

解决方案 »

  1.   

    取得句柄可以用进程快照CreateToolHelp32SnapShot遍历,然后showwindow就可以获得焦点了
      

  2.   

    你模拟发送"F5"是模拟键盘操作?如果是模拟键盘,哪键盘是对当前获得焦点窗口有效。你可以先把窗口用ShowWindow获得焦点,然后再模拟键盘操作。
      

  3.   

    用ShowWindow获取焦点,会导致这个窗口到最前面来吗?
    比如我在用暴风影音看电影,我想做个程序向另一个程序发送F5(刷新),如果我用了ShowWindow,导致这个窗口到最前面来,岂不是影响我看电影?
      

  4.   

    http://topic.csdn.net/u/20090730/14/f2bfb852-c171-4334-9ee2-3b492d3e3692.html
      

  5.   

    现在的难点是:
    应用程序有好几个MDI窗口,我要向其中某一个MDI窗口发模拟键盘消息'F5'。
    如果这个MDI是在最前端,那么它可以收到这个消息'F5'。但如果这个MDI是在后端,它就收不到,这该如何是好啊?