簡體   English   中英

如何使Internet Explorer ActiveX對話框可見

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM