[英]How to make Internet Explorer ActiveX dialog visible
我有一個用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;
}
}
}
請參閱本文以獲得更完整的討論。
您似乎無法為ShowAcquireImage
指定父窗口。 如果彈出窗口的標題是靜態的,則可以使用FindWindow查找彈出窗口的句柄。 如果ShowAcquireImage
是阻塞調用(直到關閉彈出窗口才會返回),則在調用它之前,您需要設置一個計時器並在發生計時器事件時調用FindWindow
。 我還懷疑WIA彈出窗口是在其他線程上創建的(您可以使用Spy ++進行檢查)。 在這種情況下,您可以使用以下技巧來使WIA彈出窗口成為焦點。 否則,您只需要執行BringWindowToTop即可 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.