2010-04-12 101 views
3

我們有一個用於編輯/呈現自定義HTML文檔的.Net應用程序。它使用AxSHDocVw.AxWebBrowser控件在IE中進行託管。我們首先導航到「about:blank」頁面,然後通過將自定義值寫入其中來更改Document。我們面臨的問題是如果我們不啓用Internet安全區域中的IE安全設置(腳本 - >允許編程訪問剪貼板),對IHTMLTxtRange.execCommand(「Copy」,false,null)的調用失敗。由於IE設置,IHTMLTxtRange.execCommand(「Copy」,false,null)失敗

爲了繞過安全設置,我試圖在導航時最初指向一個本地html文件。但是,只要我修改文檔,就會失敗。

我想使用IHTMLTxtRange.execCommand(「Copy」,false,null)命令,以便我可以自定義我們的複製/粘貼操作。 有沒有其他辦法可以做到這一點。 請分享您的想法,以克服這種情況。 謝謝。 Sriram

+0

我相信你的意思是你在你的應用中託管IE。 – SLaks 2010-04-12 15:52:28

回答

0

據我所知,沒有用戶許可,沒有辦法做到這一點。它的安全/隱私漏洞允許訪問剪貼板,而瀏覽器自然也保護它。

  1. 你已經嘗試了ActiveX和它不工作
  2. 使用Flash,您可以用系統剪貼板互動 - 但只有的事件處理程序的一部分。請參閱Flash Player 10 Security
  3. JavaScript不公開訪問剪貼板的方式。
  4. 不知道silverlight,但我猜它也會限制對剪貼板的訪問。

總之,用戶必須明確地給你的應用程序/網站訪問剪貼板的權限。

1

在您的瀏覽器控制主機上嘗試implement IInternetSecurityManager,處理ProcessUrlAction中的URLACTION_SCRIPT_PASTE。 請注意,a bug in earlier versions of IE會導致webbrowser忽略主機的URLACTION_SCRIPT_PASTE處理。

+1

感謝您的建議。我嘗試了這種方法。實現了IInternetSecurityManager和IOleClientSite接口到我的測試窗體。但是當我運行我的測試窗體時,我的ProcessUrlAction沒有得到命中。我不確定我是否缺少一些步驟。 我遵循另一個方法.ie使用IInternetSecurityManager中的SetZoneMapping將about:blank的安全區更改爲本地計算機...它工作。 我的計劃是在應用程序運行時區設置爲本地和重置應用程序退出時.. 你看,這是一個正確的方法.. 感謝 斯利拉姆 – user314682 2010-04-14 15:55:37

+0

從文章上面鏈接:MSHTML調用IOleClientSite接口上的QueryInterface方法來獲取IServiceProvider接口。調用IServiceProvider :: QueryService以獲取IInternetSecurityManager接口。 – 2010-04-14 17:53:33