Firefox (zusätzlich) und unsichtbar starten

  • Hallo,

    ich würde gerne wissen wie ich Firefox unsichtbar starte und - falls bereits geöffnet - nicht im Hauptfenster.
    Mein Ansatz ist folgender:

    [autoit]

    ShellExecute("firefox.exe", $link)

    [/autoit]


    Jetzt muss nur noch "versteckt" eingebaut werden (über Winsetstate geht es auch aber es gibt sicher eine elegantere Lösung) und das größere Problem: Es soll nicht das "Hauptfenster" von Firefox genutzt werden. Damit meine ich das, was bei einem normalen Firefoxstart durch den Anwender mit den Tabs der letzten Sitzung geöffnet wird.

    Ziel ist es den Quellcode des Links zu bekommen. Falls die Frage aufkommen sollte "Benutz doch die FF.au3 dafür?": man brauch dazu leider das Addon, was mit Sicherheit niemand installiert hat...

    Vielen Dank für eure Hilfe,
    Aquaplant

    Edit: Das Verstecken klappt irgendwie nicht wenn ich es so ausführe:

    [autoit]

    ShellExecute("firefox.exe", $sLink, "", "", @SW_HIDE)

    [/autoit]

    Einmal editiert, zuletzt von Aquaplant (24. Mai 2011 um 01:32)

  • Ziel ist es den Quellcode des Links zu bekommen. Falls die Frage aufkommen sollte "Benutz doch die FF.au3 dafür?": man brauch dazu leider das Addon, was mit Sicherheit niemand installiert hat...


    Quellcode eines Links könnte man auch mit InetRead() abrufen.

    Beispiel
    [autoit]

    $sSource = BinaryToString(InetRead("http://www.autoit.de/"))

    [/autoit]
  • Du hast da denke ich multiple Probleme:

    1. Wenn bereits eine FF Instanz läuft kann standardmässig kein weiterer Prozess gestartet werden, stattdessen wird der bestehende Prozess genutzt und dort dann der Link geöffnet. Deswegen dürfte auch das @SW_HIDE nicht greifen, da der Prozess den du startest und versteckst gleich wieder beendet wird und stattdessen der bestehende Prozess übernimmt.

    2. Du kannst nicht verhindern, dass FF auf einem dir fremden System beim Start gewisse Tabs lädt die zuvor geöffnet waren oder eben als Startseite(n) eingestellt sind. Das müsste zuvor in den Einstellungen deaktiviert werden, was du ja nur bei dir selbst beeinflussen kannst.

    3. Es gibt andere Wege um eine Datei aus dem Internet zu laden bzw. den Quellcode einer Seite auszulesen. Eine wurde bereits genannt. Die Funktionen der IE.au3 kommen ebenfalls in Frage und funktionieren auch ohne installierte Addons auf nahzu jedem Windowssystem.

    Du kannst aber auch den Weg über die FF.au3 gehen und sämtliche oben genannte Problem umgehen. Wenn du sicherstellen willst, dass dein Script unabhängig von der Konfiguration des Benutzers und dessen installierten Programmen läuft lege einfach eine von dir vorkonfigurierte Portable Firefox Verison in dein Programmverzeichnis. Das bläst dein Programm größentechnisch zwar deutlich auf, allerdings hast du dann volle Kontrolle über die Konfiguration des zu verwendenen Browsers. Die Portable Version kann genau wie ein normal installiertes FF mit MozRepl ausgestattet werden. Ausserdem kann man bei der Portable Version per ini Datei erlauben, dass mehrere Instanzen der firefox.exe laufen dürfen. Das bedeutet du kannst deine Portable Version dann auch starten wenn bereits eine normal installierte Firefox Version läuft. Du kannst desweiteren die Einstellungen so wählen, dass keinerlei Cookies, Browserverläufe, Passwörter usw. gespeichert werden und natürlich auch verhindern, dass alte Sitzungen wiederhergestellt werden (siehe about:config). Einmal konfiguriert und fertig. Ob es Sinn macht musst du selbst entscheiden, solange du nur einen Quellcode auslesen willst wäre es wohl etwas zu viel des guten, wenn später aber auch noch Formulare ausgefüllt werden sollen schaut das etwas anders aus.

    Einmal editiert, zuletzt von misterspeed (24. Mai 2011 um 02:11)

  • Hallo,

    vielen Dank für eure Hilfe.
    Inetread verwendet leider den Internetexplorer. Ich brauche aber einen bestimmten Cookie und der ist nur in Firefox.

    Die Lösung von "Misterspeed" gefällt mir am besten; ich muss nur den Cookie kopieren.

    Edit: Wo befindet sich die Ini? Ich hab sie bisher noch nicht gefunden


    Edit: Ich hab es zwar eingestellt aber funktionieren tut es trotzdem nicht :|

    Spoiler anzeigen

    [FirefoxPortable]
    FirefoxDirectory=App\firefox
    ProfileDirectory=Data\profile
    SettingsDirectory=Data\settings
    PluginsDirectory=Data\plugins
    FirefoxExecutable=FirefoxPortable.exe
    AdditionalParameters=
    LocalHomepage=
    DisableSplashScreen=true
    AllowMultipleInstances=true
    DisableIntelligentStart=false
    SkipCompregFix=false
    RunLocally=false

    2 Mal editiert, zuletzt von Aquaplant (24. Mai 2011 um 10:22)

  • Weitere Möglichkeit:
    - WebTcp.au3

    Beispiel
    [autoit]

    #include <WebTcp.au3>

    [/autoit] [autoit][/autoit] [autoit]

    TCPStartup()
    _AutoItObject_Startup()
    Global $oWebTcp = _WebTCP_Create(False, True)
    $oWebTcp.Useragent = "Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13"

    [/autoit] [autoit][/autoit] [autoit]

    ; Zu einer Seite Navigieren
    $oWebTcp.Navigate("http://www.autoit.de")

    [/autoit] [autoit][/autoit] [autoit]

    ; Cookie setzen
    $oWebTcp.Cookies.Set("Key", "Value")

    [/autoit] [autoit][/autoit] [autoit]

    ; Cookies als String in Variable speichern
    $sCookies = $oWebTcp.Cookies.toString

    [/autoit] [autoit][/autoit] [autoit]

    ; Cookie auslesen
    $sCookie = $oWebTcp.Cookies.Get("Key")

    [/autoit] [autoit][/autoit] [autoit]

    ; Cookie löschen
    $oWebTcp.Cookies.Remove("Key")

    [/autoit] [autoit][/autoit] [autoit]

    ; Quellcode auslesen
    $sQuellcode = $oWebTcp.Body

    [/autoit] [autoit][/autoit] [autoit]

    _AutoItObject_Shutdown()
    TCPShutdown()

    [/autoit]

    Die nötigen Includes sind im Anhang.