2009-08-23 37 views
1

外部程序如何與瀏覽器通信?希望這會對其他人有用:我列出了許多我見過或嘗試過的選項,但未能成功完成此項工作。如果您瞭解他人,請張貼他們。瀏覽器和外部應用程序通信? (Chrome的當前網址和推薦鏈接在Windows上)

  • 如果MAC地址,使用的AppleScript(在q.263741信息/解決方案,嘗試this search
  • 使用或創建一個用於Firefox的擴展(iMacros?,q.410411),鉻(?)
  • 使用WebBrowser Control主辦一個IE實例(一些提示,在q.1143187
  • 如果您有自己的網站,這可以與後臺AJAX腳本
進行

我的問題:如何在不修改瀏覽器的情況下從外部Windows應用程序獲取當前前景瀏覽器(Chrome,特定的)URL和引用來源?

我試過使用User32的GetWindowText,它抓住標題(使用jNative for Java)。這經常讓我猜測服務器。編寫一個將標題映射到URL的本地代理也許是可能的,但這是很有用的。我已經編寫了一個FireFox擴展,用這些信息來修改窗口標題,但它已經過時了,現在我仍然需要Chrome。我不想添加垃圾到瀏覽器,除非廣泛有用。也許我可以在Windows上提交一個功能請求,用於在Chrome上顯示類似蘋果的API。 AHK Window Info 1.7設法獲取可見/隱藏文本下的URL(但不是引用者),但我不知道如何移植它使用的代碼。

(在q.990409 & here爲FF/C#的一些信息,在q.823755一些IE信息(重定向到q.352236)沒有在q.1107978信息 忽略這一點:。相關的問題:我如何控制火狐宏如何?我如何獲得瀏覽器信息?我如何獲得當前的瀏覽器URL?如何從外部應用程序獲取Chrome的當前URL?

想法,代碼示例,指向潛在相關問題的指針以及對特定問題的答案是所有讚賞。

回答

1

快速和骯髒的解決方案(你可以從德爾福轉換成你的語言):

var 
h : HWND; 
pCh : array [0..255] of char; 
begin 
Result := ''; 
h := GetForegroundWindow; // or pass main Chrome window here 
if h = 0 then exit; 

h := GetWindow(h,GW_CHILD); 
if h = 0 then exit; 

h := GetWindow(h,GW_HWNDNEXT); 
if h = 0 then exit; 

SendMessage(h, WM_GETTEXT, SizeOf(pCh), integer(@pCh)) ; 
Result := pCh;    // <-- URL is here! 
end; 

謝謝了問題) - 剛剛加入到我們的工作時間 - time tracking software

相關問題