2012-11-17 2 views
0

배경을 최대화해야합니다. 즉, 활성화 (초점 맞춤)하지 않고 의미합니다. SetWindowPlacement 함수가 제공하지 않습니다 .. 아이디어가 있으십니까?백그라운드에서 창을 최대화하는 방법은 무엇입니까?

 WINDOWPLACEMENT wp = new WINDOWPLACEMENT(); 
     GetWindowPlacement(hwnd, ref wp); 

     wp.showCmd = 3; 
     SetWindowPlacement(hwnd, ref wp); 
+0

u는 Windows 양식을 최대화하고자 함을 의미합니다. – Sohail

답변

-1

(VB 죄송!)

private void Form1_Load(object sender, EventArgs e) 
    { 
     this.WindowState = FormWindowState.Maximized; 

    } 

이것은 당신의 창

+0

나는 내 응용 프로그램이 아닌 다른 응용 프로그램을 최대화해야한다는 것을 잊어 버렸습니다. 죄송합니다. – user1307346

+0

다른 응용 프로그램에서 무엇을 의미합니까? – Sohail

+0

내 응용 프로그램에서 다른 창을 최대화하고 싶습니다. SetWindowPlacement API 사용하기. 그냥 활성화하지 않고 (다른 창). – user1307346

1

난이 있었다 할 찾을 수있는 가장 좋은 방법을 극대화 창로드시에 아래의 코드를 사용하십시오;

longForeHWnd = GetForegroundWindow 
Call ShowWindow(longBackHWnd, SW_SHOWMAXIMIZED) 
SetForegroundWindow (longForeHWnd) 

이 단지 업무 주위의 배경 창 그렇게 활성화 (간단히) 때문에 Z-주문

1

http://www.pinvoke.net에서이 사용 정의를 시도까지 추진됩니다입니다 :

WINDOWPLACEMENT placement; 
if (GetWindowPlacement(hWnd, out placement)) 
{ 
    if ((GetWindowLong(hWnd, GWL_EXSTYLE) & WS_EX_TOOLWINDOW) == 0) 
    { 
     var l = GetWindowLong(hWnd, GWL_STYLE); 
     SetWindowLong(hWnd, GWL_STYLE, (l | WS_MAXIMIZE) & (~WS_MINIMIZE)); 
     var maxPos = placement.MaxPosition; 
     SetWindowPos(hWnd, IntPtr.Zero, maxPos.X, maxPos.Y, 0, 0, SetWindowPosFlags.AsynchronousWindowPosition | SetWindowPosFlags.DoNotActivate | SetWindowPosFlags.FrameChanged | SetWindowPosFlags.IgnoreResize | SetWindowPosFlags.IgnoreZOrder); 
    } 
} 

에게 트릭은 SetWindowLong을 사용하여 윈도우 상태를 변경하고 SetWindowPosFlags.FrameChanged를 사용하여 윈도우 상태를 다시 그리는 것입니다. 그리고 SetWindowPosFlags.DoNotActivate를 사용하면됩니다.

관련 문제