Tôi đang cố gắng để mang lại một cửa sổ foreground. Tôi đang sử dụng mã này. Nhưng nó không hoạt động. Ai đó có thể vui lòng giúp đỡ?Làm thế nào để mang một tiền cảnh cửa sổ bằng cách sử dụng C#?
ShowWindowAsync(wnd.hWnd, SW_SHOW);
SetForegroundWindow(wnd.hWnd);
// Code from Karl E. Peterson, www.mvps.org/vb/sample.htm
// Converted to Delphi by Ray Lischner
// Published in The Delphi Magazine 55, page 16
// Converted to C# by Kevin Gale
IntPtr foregroundWindow = GetForegroundWindow();
IntPtr Dummy = IntPtr.Zero;
uint foregroundThreadId = GetWindowThreadProcessId(foregroundWindow, Dummy);
uint thisThreadId = GetWindowThreadProcessId(wnd.hWnd, Dummy);
if (AttachThreadInput(thisThreadId, foregroundThreadId, true))
{
BringWindowToTop(wnd.hWnd); // IE 5.5 related hack
SetForegroundWindow(wnd.hWnd);
AttachThreadInput(thisThreadId, foregroundThreadId, false);
}
if (GetForegroundWindow() != wnd.hWnd)
{
// Code by Daniel P. Stasinski
// Converted to C# by Kevin Gale
IntPtr Timeout = IntPtr.Zero;
SystemParametersInfo(SPI_GETFOREGROUNDLOCKTIMEOUT, 0, Timeout, 0);
SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT, 0, Dummy, SPIF_SENDCHANGE);
BringWindowToTop(wnd.hWnd); // IE 5.5 related hack
SetForegroundWindow(wnd.hWnd);
SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT, 0, Timeout, SPIF_SENDCHANGE);
}
Mã Explained
Làm một cửa sổ cửa sổ foreground đòi hỏi nhiều hơn là chỉ gọi API SetForegroundWindow. Bạn phải trước tiên xác định chủ đề tiền cảnh và đính kèm nó vào cửa sổ của bạn, sử dụng AttachThreadInput, sau đó gọi SetForegroundWindow. Bằng cách đó, họ có thể trạng thái nhập chia sẻ.
Trước tiên, tôi gọi GetForegroundWindow để lấy tay cầm của cửa sổ tiền cảnh hiện tại. Sau đó, một vài cuộc gọi đến GetWindowThreadProcessId truy xuất các chủ đề được liên kết với cửa sổ tiền cảnh hiện tại và cửa sổ I muốn mang đến nền trước. Nếu các chủ đề này giống nhau, hãy gọi đơn giản tới SetForegroundWindow là tất cả là cần thiết. Nếu không, chủ đề tiền cảnh được gắn vào cửa sổ mà tôi sẽ đưa đến trước và tách ra khỏi cửa sổ tiền cảnh hiện tại. API AttachThreadInput xử lý việc này.
Nội dung Lấy từ here Cảm ơn.
Mã số ác, bỏ phiếu để đóng. –
Tôi cũng không thể hiểu được mã. Nhưng tôi nghĩ rằng chủ đề sẽ không được đóng lại. Im đang đợi các giải pháp có thể có –
@Nikil, mayb chỉ giữ tiêu đề và xóa (quên) mã đó? –