2009-10-06 12 views
16

Nach dem Starten einer Anwendung mit der Prozess-Klasse möchte ich dieses Fenster oben zu machen. Momentan ist meine App das oberste Fenster. Wenn ich die andere App starte, wird sie nicht angezeigt. Eine Sache, die mir in den Sinn kam, war, dass ich für meine Anwendung topmost = false setzen konnte, bevor ich den Prozess startete. Das Problem dabei ist, dass ich dem Prozess genügend Zeit zum Laden gebe, bevor ich ihn dem Benutzer zeige mehr Kontrolle, wenn ich die andere Anwendung ganz nach oben verschiebe.Machen Sie ein Fenster oben mit einem Fenster-Handle

Antwort

48

Sie müssen P/Invoke with SetWindowPos verwenden, um dies zu accopmlish denn das

[DllImport("user32.dll")] 
static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags); 

static readonly IntPtr HWND_TOPMOST = new IntPtr(-1); 
const UInt32 SWP_NOSIZE = 0x0001; 
const UInt32 SWP_NOMOVE = 0x0002; 
const UInt32 SWP_SHOWWINDOW = 0x0040; 

// Call this way: 
SetWindowPos(theWindowHandle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW); 
+0

Danke, sollte es tun! Ist user32 auch auf 64-Bit-Systemen gültig? –

+0

Ja. Es funktioniert auch auf 64-Bit-Systemen. –

Verwandte Themen