2009-08-23 8 views
1

Comment un programme externe peut-il communiquer avec un navigateur? J'espère que cela sera utile aux autres: j'énumère un certain nombre d'options que j'ai vues ou essayées tout en essayant de faire fonctionner cela sans succès. Si vous connaissez d'autres personnes, veuillez les poster.Communication par navigateur et application externe? (URL et référent actuels de Chrome sous Windows?)

  • Si Mac, utilisez AppleScript (info/solution à q.263741, essayez this search)
  • utiliser ou créer une extension pour Firefox (iMacros?, q.410411), Chrome (?)
  • Utilisez un WebBrowser Control pour accueillir une instance IE (certains conseils à q.1143187)
  • Si vous possédez le site, cela peut être fait avec un script ajax fond

Ma question: comment puis-je obtenir l'adresse URL (Chrome, spécifiquement) de l'explorateur de premier plan et le référent d'une application Windows externe, sans modifier le navigateur?

J'ai essayé d'utiliser GetWindowText de User32, qui récupère le titre (en utilisant jNative pour Java). Cela me laisse souvent deviner le serveur. Il est peut-être possible d'écrire un proxy local qui mappera les titres aux URL, mais c'est beaucoup de travail. J'ai écrit une extension FireFox pour truquer le titre de la fenêtre avec cette information, mais elle est devenue obsolète, et j'en ai besoin pour Chrome maintenant. Je préférerais ne pas ajouter d'ordure au navigateur, à moins d'être utile. Peut-être que je pourrais déposer une demande de fonctionnalité pour une api semblable à un applescript pour chrome sur Windows. AHK Window Info 1.7 parvient à saisir l'URL (mais pas référencer) sous texte visible/masqué, mais je ne sais pas comment porter le code qu'il utilise.

(Quelques infos pour FF/C# à q.990409 & here, quelques informations IE à q.823755 (réoriente à q.352236) Pas d'info sur q.1107978 Ignorer ceci:.. Questions connexes: Comment puis-je contrôler Firefox avec une macro Comment?)

Des idées, des exemples de code, des pointeurs vers des questions potentiellement pertinentes et des réponses à ma question spécifique sont: tous appréciés.

Répondre

1

Solution rapide et sale (vous pouvez le convertir de Delphes à votre langue):

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; 

Merci pour la question;) - vient d'être ajouté à notre WorkTime - time tracking software

Questions connexes