我有一个应用程序 A (.NET/WPF),它通过 WinAPI 调用控制应用程序 B。
根据要求,应用程序 A 必须始终是最顶层的窗口。这意味着
- 如果应用程序 A 的窗口与应用程序 B 的窗口位于同一位置,
- 那么应用程序 A 的窗口应该是可见的,并且
- 应用程序 B 的窗口必须不可见。
除一种情况外,所有情况均满足此要求。当应用程序 A 以编程方式从应用程序 B 的组合框中选择一个元素时,该组合框会暂时可见。选择一个元素后,它会再次隐藏。
但是组合框可见(即使是片刻)违反了要求。
如何确保应用程序 A 的窗口始终是最上面的窗口(即使在选择组合框项目期间)?
注意:应用程序 A 每 200 毫秒收回一次焦点(激活自身)。我试图将该间隔减少到 100 毫秒,但它没有帮助。
更新 1:使用以下 WinAPI 调用选择组合框项。
SendMessage(Self.MyFlightComboBox, CB_SHOWDROPDOWN, WPARAM(true), 0);
ItemIndex := SendMessage(Self.MyFlightComboBox, CB_FINDSTRING, -1, integer(@MyValue[1]));
OutputDebugString(PChar('ItemIndex: ' + IntToStr(ItemIndex)));
SendMessage(Self.MyFlightComboBox, CB_SETCURSEL, ItemIndex, 0);
SendMessage(Self.MyFlightComboBox, CN_COMMAND, MakeWParam(0, CBN_SELCHANGE), 0);
SendMessage(Self.MyFlightComboBox, WM_LBUTTONDOWN, 0, -1);
SendMessage(Self.MyFlightComboBox, WM_LBUTTONUP, 0, -1);