У меня есть элемент управления ActiveX, написанный на C#, который управляет сканером из браузера с использованием WIA. Все работает отлично, за исключением того, что WIA CommonDialog появляется под окном браузера. Как я могу заставить его отображаться поверх браузера?Как сделать диалоговое окно ActiveX Internet Explorer видимым
wiaDialog = new WIA.CommonDialog();
wiaImage = wiaDialog.ShowAcquireImage(WiaDeviceType.ScannerDeviceType, WiaImageIntent.UnspecifiedIntent, WiaImageBias.MaximizeQuality, wiaFormatJPEG, false, false, false);
[Редактировать]
Большое спасибо к Noseratio за поставив меня на правильный путь. Предложение использовать BringWindowToTop, вызванное с помощью таймера перед появлением диалогового окна, не совсем работает. Вместо этого используется функция SetForegroundWindow. Код выглядит следующим образом (вызывается из System.Timer.Timer до открытия диалогового окна сканирования):
public static void scanDialogToTop(Object caller, EventArgs theArgs) {
scanner.theTimer.Stop();
foreach (Process p in Process.GetProcesses()) {
if (p.MainWindowTitle.StartsWith("Scan using")) {
SetForegroundWindow(p.MainWindowHandle);
break;
}
}
}
См this article для более полного обсуждения.