2010-06-02 8 views
5

Ich habe mehrere Tabs in Firefox geöffnet. Ich möchte, dass AutoIt eine bestimmte Registerkarte in Firefox aktiviert. Wie kann das gemacht werden?AutoIt mit Firefox

Antwort

-4

Ich habe nicht AutoIt in den Jahren berührt, aber IIRC wird es sein:

setMousePos(x, y) // tab position 
click("left") 
+2

ich möchte es aktiv ein Register basierend auf seinen Namen, nicht auf seiner Position. – neuromancer

+1

MouseClick ("Links", x, y,) wäre, wie Sie links in AutoIt v3 irgendwo klicken würden. – Copas

5

Geben Sie das gesamte Browser-Fenster Fokus, dann den Sendebefehl verwenden, um es wiederholt cntl-Register zu senden, bis der Titel des Fensters ist der Name der gewünschten Registerkarte (mit - Mozilla Firefox am Ende).

+1

Es ist Strg + Tab, oder? – grossvogel

+1

Ich habe jemanden gesehen, der es gemacht hat, ohne alle Fenstertitel mit autoit alt-tab durchzublättern, aber ich weiß nicht, wie sie das gemacht haben, weil ich die Quelle nicht gesehen habe. – neuromancer

5

Es gibt eine UDF (Benutzerdefinierte Funktionen - Include-Datei) mit dem Namen FF.au3. Sieht aus wie die Funktion, die Sie wünschen, ist _FFTabSetSelected(), viel Glück!

Unten ist ein Beispiel für die Methode von Jeanne Pindar. So würde ich es machen.

#include <array.au3> 

Opt("WinTitleMatchMode", 2) 

activateTab("Gmail") 
Func activateTab($targetWindowKeyphrase) 
    WinActivate("- Mozilla Firefox") 
    For $i = 0 To 100 
     If StringInStr(WinGetTitle(WinActive("")),$targetWindowKeyphrase) Then 
      MsgBox(0,"Found It", "The tab with the key phrase " & $targetWindowKeyphrase & " is now active.") 
      Return 
     EndIf 
     Send("^{TAB}") 
     Sleep(200) 
    Next 
EndFunc 
+3

Die FF.au3-Include erfordert, dass MozRepl installiert wird, Sie können es hier erhalten: https://github.com/bard/mozrepl/wiki. – MaQleod

3

Hier gehen Sie ...

AutoItSetOption("WinTitleMatchMode", 2) 

$searchString = "amazon" 

WinActivate("Mozilla Firefox") 
For $i = 0 To 100 
    Send("^" & $i) 
    Sleep(250) 
    If Not(StringInStr(WinGetTitle("[ACTIVE]"), $searchString) = 0) Then 
     MsgBox(0, "Done", "Found it!") 
     ExitLoop 
    EndIf 
Next 

einfach die MsgBox löschen und du bist fertig!

2

Wie Copas sagte, verwenden Sie FF.au3. Die Funktion _FFTabSetSelected($regex,"label") wählt die erste Registerkarte mit dem angegebenen Namen $regex.

+0

+1 über 1 Zeilencode & +1 über keine Ereignisse senden. Im Gegensatz zu jedem 'Senden' oder' Klicken' zu aktiven Fenstern, wenn Sie Objekte verwenden können. Dies ist die korrekte Methode zum Festlegen der ausgewählten Registerkarte. Dadurch können Sie eine Registerkarte schließen, ohne andere Fenster zu stören, auch wenn das Windows mit der Registerkarte ausgeblendet ist. – erm3nda

0

Nop ... Das Skript ist Buggy ^^‘... keine Notwendigkeit, auf 100 zu zählen, und es gibt ein Problem mit dem‚Senden‘, nachdem es:

Wenn Sie Strg + Nummer senden = > die Zahl darf nicht größer als 9 sein ... Da zehn eine Zahl mit 2 Zeichen ist, kann Firefox Tab 10 nicht mit Verknüpfung aktivieren.

Und nebenbei, wenn das Skript funktioniert, gibt es einen Moment, er die CTRL-Taste loslassen. Es senden nicht zehn, aber Ctrl und 1 Ende Null ... und platsch !!! Es sendet nur die Nummer im Fenster. Also müssen wir zu dem Skript lernen, dass das zweite Mal, wenn er zurück zu $ ​​i = 0 oder eins, alle Registerkarten gesehen wurde, keine Notwendigkeit, fortzufahren, auch wenn der gesuchte Text nicht gefunden wurde. Also habe ich mein eigenes Drehbuch basiert auf dem alten:

## 
AutoItSetOption("WinTitleMatchMode", 2) 

$searchString = "The string you're looking for" 
Local $o = 0 
WinActivate("The Name of the process where you're searching") 
For $i = 0 To 9 
    Send("^" & $i) 
    Sleep(250) 
     if ($i = 9) Then 
     $o += 1 
     EndIf 
     If not (StringInStr(WinGetTitle("[ACTIVE]"), $searchString) = 0) Then 
      MsgBox("","","Found it !") ;your action, the text was found. 
      ExitLoop 
     ElseIf ($o = 1) Then 
      MsgBox("","","All tab seen, not found...") ;your action, the text was not found, even after looking all title. 
      ExitLoop 
     EndIf 
    Next 
##