2009-10-06 41 views
16

Sau khi khởi chạy một ứng dụng bằng cách sử dụng lớp Process, tôi muốn làm cho cửa sổ đó ở trên cùng. Hiện tại, ứng dụng của tôi là cửa sổ trên cùng nên khi tôi khởi chạy ứng dụng khác nó không hiển thị. Một điều cần lưu ý là tôi có thể đặt topmost = false cho ứng dụng của mình trước khi khởi chạy quy trình, vấn đề với điều này là tôi muốn cung cấp cho quá trình nhiều thời gian để tải lên trước khi hiển thị cho người dùng, vì vậy tôi muốn kiểm soát nhiều hơn khi tôi chuyển ứng dụng khác lên trên cùng.Tạo một cửa sổ trên cùng bằng cách sử dụng tay cầm cửa sổ

Trả lời

48

Bạn cần phải sử dụng P/Invoke with SetWindowPos để accopmlish này:

[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

Cảm ơn vì điều đó, nên làm các trick! User32 có hợp lệ trên hệ thống 64 bit không? –

+0

Vâng. Nó cũng sẽ hoạt động trên các hệ thống 64bit. –

Các vấn đề liên quan