如果在控制面板中设置了“防止应用程序盗取焦点”,则通常只会闪烁标题栏和任务栏,实际并没有设为前台,怎样强行将程序在前台显示?

解决方案 »

  1.   

    ::SetForegroundWindow(HWND hwnd);
      

  2.   

    98/2000下切换前台窗口--转载作者:陆麟 
    转载请征得作者同意. 98/2000下,有个公开的函数SetForegroundWindow,用于切换前台窗口.但是事实上,SetForegroundWindow并不能用于和其他进程的窗口协同工作,通常情况下SetForegroundWindow会调用FlashWindowEx来闪烁目标窗口,代表已经切换了窗口,但是这不是我们需要的.网络上有一些顶尖高手使用修改窗口切换的系统规则后,用SetForegroundWindow切换到其他进程的窗口,但是现在,我们有了UNDOCUMENTED的另外一个USER32函数: SwitchToThisWindow(...); 
    来完成这项工作. 
    那么原型是怎么的呢? 下面就来揭晓了...... 
    void WINAPI SwitchToThisWindow ( 
    HWND hWnd, // Handle to the window that should be activated 
    BOOL bRestore // Restore the window if it is minimized 
    ); 
    由于没有原型和库,我们在使用时通常用动态联接法. 
    typedef void (WINAPI *PROCSWITCHTOTHISWINDOW) (HWND, BOOL); 
    PROCSWITCHTOTHISWINDOW SwitchToThisWindow; 
    HMODULE hUser32 = GetModuleHandle("user32"); 
    SwitchToThisWindow = (PROCSWITCHTOTHISWINDOW)GetProcAddress(hUser32, 
    "SwitchToThisWindow"); 
    这样,我们的任务就完成了. 
      

  3.   

    it needs test....Good luck   :)
      

  4.   

    If u have a suitable result....tell us ....