我现在以获取目标窗体句柄,窗体本身是不显示在当前桌面的,请问怎样在知道其句柄的情况下激活它 让它显示出来!
谢谢

解决方案 »

  1.   

    var hwnd:THandle;
    ShowWindow(hwnd,SW_SHOW);
      

  2.   

    使用 SetForegroundWindow(hwnd) 试下;
    但是在有最小化的时候只会闪一下,并不会真的激活到前面来。用下面的方法可以解决这个,不过不是DELPHI,你自己改下HWND   hForegdWnd   =   ::GetForegroundWindow();   
      DWORD   dwCurID   =   ::GetCurrentThreadId();   
      DWORD   dwForeID   =   ::GetWindowThreadProcessId(hForegdWnd,   NULL);   
      ::AttachThreadInput(dwCurID,   dwForeID,   TRUE);   
      ::SetForegroundWindow(m_hWnd);   
      ::AttachThreadInput(dwCurID,   dwForeID,   FALSE);   
      

  3.   

    先 ShowWindow  再 SetForegroundWinow
    就行了。
      

  4.   

        if IsIconic(hCurrentWindow) then
        begin
          SendMessage(hCurrentWindow, WM_SYSCOMMAND, SC_RESTORE, 0);
          SetForegroundWindow(hCurrentWindow);
        end
        else
        begin
          SetForegroundWindow(hCurrentWindow);
        end;
    这个代码里,hCurrentWindow是窗口句柄。
    如果窗口被最小化,则将其恢复。否则直接提到前端显示。