我做的软件有个界面,想定期让其提前(激活并显示在用户面前),
但又不想用TOPMOST那种置顶方法.
我用了SetForegroundWindow,SetActiveWindow,SHOW_WINDOW都不行:
程序运行后再打开记事本,时间到我的程序只会在任务栏上闪几下,界面根本出不来!!!!!怎么办!!(不用顶极窗口,不用鼠标模拟点击)

解决方案 »

  1.   

    SetForegroundWindow怎么会不行,是不是窗口句柄错了,,,
      

  2.   

    用定时器用SetForegroundWindow,好像是会这样,关注一下
      

  3.   

    SetForegroundWindow,Form1.BringToFront都不行.
    请你们试一下:程序运行后,打开记事本盖在程序上面.
    ONTIME时,只是任务栏上的程序图标闪烁,并不会出现在用户面前.
      

  4.   

    2000/XP 改变了SetForegroundWindow的执行方式,不允许随便把窗口提前,打扰用户的工作。可以用附加本线程到最前面窗口的线程,从而欺骗windows。AttachThreadInput(GetWindowThreadProcessId(GetForegroundWindow),GetCurrentThreadId,True);
    SetForegroundWindow(Application.Handle);
    SetFocus;
    AttachThreadInput(GetWindowThreadProcessId(GetForegroundWindow),GetCurrentThreadId,False);
      

  5.   

    xianggang101的方法可以,
    keyz(keyz)的方法更牛,佩服
      

  6.   

    xianggang101的方法本质上还是TopMost,始终在最前。
      

  7.   

    to:keyz(keyz):
    很感谢你的方法,相应的问题:如何判断窗口已经提前了?
    一解决即结贴.
      

  8.   

    if Self.Handle=GetForegroundWindow then ......