我有一个用 C# 编写的 ActiveX 控件,它使用 WIA 从浏览器操作扫描仪。除了在浏览器窗口下弹出 WIA CommonDialog 外,一切正常。如何让它显示在浏览器顶部?
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;
}
}
}
有关更完整的讨论,请参阅本文。