2010-10-07 57 views
3

我發現了幾個類似於我的問題,但沒有答案是令人滿意的,他們是幾歲。所以我希望自那時以來,在這方面可能取得了一些進展。選擇並複製到C或C++的剪貼板的Firefox內容

我感興趣的是能夠訪問活動的Firefox窗口的內容並將其複製到剪貼板 - 使用C或C++代碼。

在Internet Explorer中,我可以使用COM的IHTMLDocument2來訪問瀏覽器的內容DOM

Firefox中有類似的東西嗎?如果是這樣,我該怎麼做?

順便說一下,我目前的(醜陋的)解決方法是通過發送虛擬按鍵來模仿Ctrl + A,Ctrl + C,但這不是一個真正強大和優雅的解決方案。

想法,技巧,見解,知識將不勝感激。

謝謝。

注意:爲了進一步澄清挑戰,我想指出我對基於JavascriptFlash的解決方案不感興趣。相反,我對C/C++解決方案感興趣,即使它僅限於Microsoft Windows平臺。

+1

你真的需要從Firefox竊取內容嗎? ** my ** firefox中的內容與作者在某些頁面上的意圖完全不同。也許你真的想要在一個特定的網址提供數據... – pmg 2010-10-07 13:38:46

+0

大聲笑,「偷」不是我正在嘗試做的正確的名詞。是的,我需要向用戶展示她目前正在查看的相同頁面,但方式不同。有些網頁沒有唯一的網址,您知道......所以,我唯一的辦法是通過複製粘貼來抓取瀏覽器的內容,然後重新解釋它。我最初讓用戶手動複製和粘貼(Ctrl + A,Ctrl + C),但他們抱怨說這不是用戶友好的。 +1爲思考開箱即用。 :) – 2010-10-08 13:49:49

回答

3

在Firefox DOM經由XPCOM暴露於C++但要注意,不像MSHTML(在IE)在Mozilla的界面並不總是冷凍解凍接口是特定於版本的,並且可以因版本而改變。

IHTMLDocument2的XPCOM相當於nsIDOMDocument

XPCOM非常相似,COM,基類被稱爲nsISupports並具有完全相同的語義IUnknown(包括相同的二進制佈局和GUID),但不承擔因COM一切映射到XPCOM(例如有在XPCOM中不是IDispatch)。

+0

這是一個了不起的答案,非常感謝!我已經給你+1了,我打算把它作爲接受的答案。我只需要更多信息:由於XPCOM是開源的,是否意味着如果我使用它(原樣,沒有任何修改),我還必須提供我的應用程序的源代碼? – 2010-10-08 13:53:02

+1

@Android Mozilla公共許可證並不那麼嚴格,如果您對Firefox的代碼進行了更改,則必須將其返回給社區,但您自己的任何代碼都可以保密。這是[常見問題](http://www.mozilla.org/MPL/mpl-faq.html),它涵蓋了這一點。 – Motti 2010-10-09 18:55:53