程序最小化运行(或缩到托盘中),需要模拟鼠标点击,是不是必须最大化?
如果这样的话,假如我正在用Word,焦点就失去了,
这个问题是不是无解?

解决方案 »

  1.   

    hWnd: 程序窗口句柄
    x,y: 位置SendMessage(hWnd, WM_LBUTTONDOWN, 0, x shl 16 + y);
    SendMessage(hWnd, WM_LBUTTONUP, 0, x shl 16 + y);
      

  2.   

    可以先通过找到主窗口的句柄,然后给发鼠标点击的消息就可以。这要在另外一个程序来做。不过不是很明白“假如我正在用Word”的话,鼠标点击也点击你的程序? 
    如果是这样,建议你在程序中注册鼠标钩子,把所有的鼠标点击消息都截获,然后处理发消息给年你的程序,这样,不管你运行什么程序,鼠标点击都会点的你的程序。总之你的需求不是很明白,上面的两种方法应该可以解决你的问题。
      

  3.   

    是这样的:
    假如有两个程序在运行,word和test,test已最小化自动运行,我正在编辑word文件,到某个特定时间,需要鼠标模拟点击test程序中的一个button,现在我做的程序只能作到:
    1.把test最大化
    2.模拟点击
    3.把test最小化
    但问题是当test再次最小化之后,word是先失去了焦点再获得了焦点,这样一来正在输入的文字有可能发生变化,例如我用拼音输入“中”,已经用键盘输入了 z,h,o,n,只差最后一个g,如果正巧这时word先失去了焦点再获得了焦点,那么原先输入的 z,h,o,n 就都没有了,需要我重新输入。不知道我的意思您明白没有?
      

  4.   

    无解
    不可见的窗口不能点击
    点击可见的,Enable的普通窗口,肯定会抢走焦点
      

  5.   

    通过FindWindows来查找你这个程序的句柄,然后找到那个按扭的句柄,给那个按扭发鼠标点击的消息,最小话以后也能找到主窗体句柄的。如果那个程序也是你写的话,可以重载CreateParams来个程序主窗体设置类名,这样FindWindows查找的内容就可以自定义。