Tôi có một loạt các ứng dụng khá phức tạp phụ thuộc vào khả năng chuyển đổi các ứng dụng ở nền trước.Win32 SetForegroundWindow không đáng tin cậy
Vấn đề của tôi là mỗi 5 hoặc 6 lần chuyển đổi các ứng dụng ở nền trước, nó đơn giản là không đưa ứng dụng lên phía trước. GetLastError không báo cáo bất kỳ vấn đề nào. Thông thường, tôi thấy đèn flash ứng dụng chính xác ở nền trước trong giây lát thì ứng dụng trước đó có thể nhìn thấy.
Tôi có ứng dụng Trình quản lý mà tôi có nguồn, nó sinh ra và kiểm soát khoảng 4 ứng dụng mà tôi không có nguồn. một trong những ứng dụng mà nó sinh ra/điều khiển cũng là một người quản lý để sinh ra/kiểm soát khoảng 5 ứng dụng.
Đây là một loại thiết kế kiosk để người dùng thậm chí không có bàn phím hoặc chuột, chỉ cần một màn hình cảm ứng.
Tôi đã thử mọi sự kết hợp của các cuộc gọi Win32 để kiểm soát chúng tôi chỉ là ngoài ý tưởng.
nỗ lực đầu tiên của tôi là:
SetWindowPos(hApp, HWND_TOPMOST, NULL, NULL, NULL, NULL, SWP_NOMOVE | SWP_NOSIZE);
SetWindowPos(hApp, HWND_NOTOPMOST, NULL, NULL, NULL, NULL, SWP_NOMOVE | SWP_NOSIZE);
nỗ lực thứ hai của tôi là:
SetForegroundWindow(hApp);
SetActiveWindow(hApp);
SetFocus(hApp);
nỗ lực thứ ba của tôi: DWORD dwThreadID = GetWindowThreadProcessId (Happ, NULL); AttachThreadInput (dwThreadID, GetCurrentThreadId(), true);
SetForegroundWindow(hApp);
SetActiveWindow(hApp);
SetFocus(hApp);
AttachThreadInput(dwThreadID, GetCurrentThreadId(), false);
nỗ lực ra tôi:
DWORD dwThreadID = GetWindowThreadProcessId(hApp, NULL);
AttachThreadInput(dwThreadID, GetCurrentThreadId(), true);
SetWindowPos(hApp, HWND_TOPMOST, NULL, NULL, NULL, NULL, SWP_NOMOVE | SWP_NOSIZE);
SetWindowPos(hApp, HWND_NOTOPMOST, NULL, NULL, NULL, NULL, SWP_NOMOVE | SWP_NOSIZE);
SetForegroundWindow(hApp);
SetActiveWindow(hApp);
SetFocus(hApp);
AttachThreadInput(dwThreadID, GetCurrentThreadId(), false);
tôi cảm thấy như tôi đang thiếu một Gotcha quan trọng khi nói đến việc chuyển đổi cửa sổ. Tôi biết rằng chỉ có quy trình nền trước mới có thể chuyển đổi cửa sổ nhưng chương trình chính của tôi là sinh sản và bắt đầu tất cả các quy trình khác mà tôi cần kiểm soát, tôi cảm thấy nó có khả năng di chuyển các cửa sổ này xung quanh. Bất kỳ đề xuất hoặc lời khuyên nào được đánh giá cao.
Đầu tiên bước, đọc và hiểu điều này: http://blogs.msdn.com/b/oldnewthing/archive/2009/02/20/9435239.aspx –
Ngoài ra: http://blogs.msdn.com/b/oldnewthing/archive /2008/08/01/8795860.aspx –
Hãy thử giảm thiểu theo sau bằng cách khôi phục. –