更新された回答:
コメントで指摘されているように、明らかにネイティブ メッセージングを使用しています。私が理解できないのは、彼らが何をしているのかです。プロジェクトはオープン ソース (および GPL) であると主張していますが、ソースはリンクされたレポにありません。最新のコミットは 12 月 13 日で、これはあまり役に立ちません。
拡張コードを見ると、Chrome で長期的にサポートされていない可能性のあるシステム API を使用したある種の興味深いハッカー、またはある種の文書化されていない API のいずれかを何らかの方法で使用していると推測できます。ドキュメントのタイトルに 'ietaba:' + IE タブ ID が含まれるように設定し、その情報を含むメッセージをネイティブ メッセージ ホストに投稿します。
chrome.tabs.getCurrent(function(tab) {
// We can't attach if we don't have a window id or aren't active
if (!tab.active || !this.windowId) {
this.restoreTitle();
return;
}
// Remember the title change is asynchronous, so don't keep changing it or the helper
// will never find it. We may have to retry several times to find the window after
// a single title change
if (document.title.indexOf('ietaba:') == -1) {
this.realTitle = document.title;
document.title = 'ietaba:' + Background.getNextIETabId();
}
var msg = {
type: 'ATTACH',
tabTitle: document.title,
innerWidth: this.getIEWidth(),
innerHeight: this.getIEHeight()
}
NativeHost.postMessage(msg);
}.bind(this));
私が理解できないのは、彼らがそれを使用してそれに接続する方法です。彼らはどういうわけかそのセクションの HWND を取得しているようです。Google が彼らに特別な API を与えたのか、それとも何か巧妙なハックを見つけたのか、疑問に思います。「GPL」プロジェクトがそのコードを公開していないのは少し疑わしいようです...
アップデート
さらに掘り下げた結果、システムで開いている HWND を列挙して、起動中のタブの HWND を取得できることがわかりました。タイトルに一意のタブ ID を設定するため、必要なタブが見つかるまで HWND を列挙するだけです。その後、彼らはその場所にactivexコントロールをインスタンス化するだけだと思います。
とは言っても、Chrome が間違ったことを変更すると、これはかなり簡単に壊れてしまう可能性があるように思えます。また、ページの特定の部分を簡単にターゲットにする方法もわかりません。特定の領域に描画する必要があり、すべてを適切に描画するのは困難です。私はこのようにしたいとは思いませんが、彼らがどのようにそれをしなければならないかはわかります。
そうしないと GPL に違反することになるため、誰かがコードをリリースするようせがむ必要があります。
さらに更新
確認のために、代わりに「ATTACH」イベントを「Developer Tools」にアタッチするように変更してみました。その結果、開発者ツールのクロム ウィンドウが開き、Web ページが表示されるようになりました。