2009-06-16 11 views

Antwort

3

Dies sollte die Arbeit machen:

[DllImport("user32.dll", EntryPoint="SystemParametersInfo")] 
public static extern bool SystemParametersInfo(uint uiAction, uint uiParam, uint pvParam, uint fWinIni); 

[DllImport("user32.dll", EntryPoint="SetForegroundWindow")] 
public static extern bool SetForegroundWindow(IntPtr hWnd); 

[DllImport("User32.dll", EntryPoint="ShowWindowAsync")] 
private static extern bool ShowWindowAsync(IntPtr hWnd, int cmdShow); 
private const int WS_SHOWNORMAL = 1; 
private const int SW_SHOWMAXIMIZED = 3; 

[DllImport("user32.dll")] 
[return: MarshalAs(UnmanagedType.Bool)] 
static extern bool GetWindowPlacement(IntPtr hWnd, ref WINDOWPLACEMENT lpwndpl); 

private struct WINDOWPLACEMENT 
{ 
    public int length; 
    public int flags; 
    public int showCmd; 
    public System.Drawing.Point ptMinPosition; 
    public System.Drawing.Point ptMaxPosition; 
    public System.Drawing.Rectangle rcNormalPosition; 
} 

Process[] processes = Process.GetProcesses(); 
foreach(Process p in processes){    
if(p.MainWindowTitle.Contains("nice_title")){ 
    WINDOWPLACEMENT wp = new WINDOWPLACEMENT(); 
    placement.length = Marshal.SizeOf(placement); 
    GetWindowPlacement(p.MainWindowHandle, ref placement); 

    int proposedPlacement = wp.showCmd; 

    if (wp.showCmd == SW_SHOWMINIMIZED) 
    proposedPlacement = SW_SHOWMAXIMIZED; 

    SystemParametersInfo((uint) 0x2001, 0, 0, 0x0002 | 0x0001); 
    ShowWindowAsync(p.MainWindowHandle, proposedPlacement); 
    SetForegroundWindow(p.MainWindowHandle); 
    SystemParametersInfo((uint) 0x2001, 200000, 200000, 0x0002 | 0x0001);  

}            
} 
+0

Süße. Und das Fenster in den Vordergrund zu bringen? – AngryHacker

+0

Nur den Code aktualisiert. Es sollte jetzt ein voll funktionierendes Beispiel sein. Irgendwelche Probleme bis jetzt? – merkuro

+0

Das ist großartig, aber es gibt einen kleinen Fehler. Wenn das Fenster maximiert oder minimiert ist, stellt der Code es wieder her. Ich denke, es wäre cool, wenn der Code das Fenster nur wiederherstellen würde, wenn es minimiert wäre. – AngryHacker

Verwandte Themen