Überprüfen ob Prozess bereits läuft.
-
Erstmal Danke für die Antwort.
Das Problem ist das das Formular ein JavaApplet ist. Somit fällt HTML auslesen leider flach. Wie gesagt das Ausfüllen ist auch nicht das Problem sondern eher
das mein Programm wissen soll wann Firefox/die Homepage geladen ist und erst dann
mit dem eigentlich Programm fortfahren soll und das Formluar ausfüllt.Hab mir natürlich überlegt das ganz einfach mit einem Sleep(20000) oder sowas zu machen. Allerdings weiß ich ja nie wielange die Seite zum laden brauch. Und wenn die Seite sofort lädt sitzt man 20 Sekunden da und wartet bis es weiter geht, ist also auch keine zufriedenstellende Lösung.
-
Dieser Thread wurde von Moderator/in Nobuo T aus dem Forum ANSI C in das Forum Rund um die Programmierung verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Du könntest dir die Prozessorzeiten von Firefox besorgen, erst wenn Kernel- und Usertime dauerhaft niedrig sind, ist der Firefox mit dem Starten und Laden der Seite fertig.
Ich weiß aber nicht, ob das eine ganz zuverlässige Methode ist, bei Netwerkfehlern ist die Prozessoraktivität auch niedrig, die Seite dennoch nicht geladen. Ein "Hack" wäre natürlich, dann den Fenstertext auszulesen und bis "- Mozilla Firefox" mit dem Seitennamen zu vergleichen.
-
Steuer den Firefox über die WinAPI an und überprüfe, ob in der Statuszeile Fertig steht.
Aber sauber ist das natürlich auch nicht. Und vorallem ist es plattformabhängig.
-
Ist das nicht sowieso etwas merkwürdig, das Ausfüllen eines Webformulars über einen Browser zu machen? Was hindert dich daran, das Formular direkt in deinem Programm "auszufüllen" und die Daten an den Server zu schicken?
-
Du könntest http://seleniumhq.org/ probieren, damit kannst du Firefox sehr einfach skripten. Ob da mit Java-Applets funktioniert, weiß ich aber nicht.
-
Hallo,
habe mich jetzt mal in WinApi etwas eingelesen, und diese Lösung scheint mir doch recht Sinnvoll.
Da bisher alles anderen garnicht funktioniert hat.
Allerdings komme ich nicht drauf wie die Statusmeldung "Fertig" aus Firefox auslesen soll. Hat mir da vielleicht eine Lösung bzw. einen Vorschlag wie man das machen könnte.
-
Wie steuerst du überhaupt Firefox ohne Selenium o.Ä. wenn man fragen darf...
-
Mit
ShellExecute();
öffne ich die Homepage mit dem Standartbrowser. Ist für mich noch das einfachste und für meine Zwecke eigentlich ausreichend.
-
Nim am Besten
ShellExecuteEx
. Da bekommst du das Handle auf den Prozess gleich geliefert. Mit Spy++ (bei MSVS mitgeliefert) kommst du an die IDs und Klassennamen aller Fenster.
Ich würde dennoch regelmäßig (vielleicht alle 500 ms)GetProcessTimes
aufrufen und schauen, ob der Browser alles erledigt hat.
Ach ja, zwischen verschiedenen Prozessen geht nichtGetWindowText
, um an den Text eines Controls zu kommen. Hier muss explizit eine Nachricht vom TypWM_GETTEXT
gesendet werden.