Entwickler-Ecke
Internet / Netzwerk - Browser Größe festlegen
P@u1 - Mi 17.02.10 11:31
Titel: Browser Größe festlegen
Hallo,
ist es möglich, die Größe des Browsers (am besten Firefox, zur Not aber auch ein anderer) auf eine bestimmte Größe festzulegen?
Am besten mit Delphi, zur not auch anders (html datei oder so)
Also am besten wär wenn ich ein bereits geöffnetes Fenster aufeine bestimmte Größe umstellen kann, zur not sonst auch ein Fenster neu öffnen mit einer bestimmten Größe.
Ich weiß, dass es dazu ein topic gibt, das ist aber von 2005 und vll hat sich in der zeit ja was geändert :D
Vielen Dank für eure Hilfe!
Gausi - Mi 17.02.10 12:21
In dem Topic, was du netterweise nicht verlinkt hast, was steht denn da? So grob fällt mir ein, dass man sich über die API das Fensterhandle holt und dann entsprechende Resize-Messages dahin schickt.
Aber der User wird (sollte) die Größe des Fensters immer verändern können - alles andere wäre im Bereich Schadsoftware einzuordnen. ;-)
P@u1 - Mi 17.02.10 14:15
Dann hier die Verlinkung:
http://www.delphi-forum.de/viewtopic.php?t=49353&highlight=browser+gr%F6%DFe+festlegen
Kannst du das mit der Resize Message noch ein bischen ausführen plz? Ein Codeschnipsel wäre nett.
Und wie ist das mit dem Resize, das ändert doch die Größe des gesamten Fensters, richtig?
Ich möchte nur die Anzeigefläche, also das wo man etwas von einer seite sieht (und nicht die toolbars usw. die je nach konfiguration eine variable größe haben kann) umstellen.
Das man die Größe selbst wieder zurückstellen kann ist kein Problem.
Also damit ihr mir besser helfen könnt, werde ich ein wenig den Sinn dahinter ausführen:
Ich habe ein Programm, dass bestimmte Inhalte im Browser erkennt durch vergleichen von Bildern mit Bildern die ich zuvor durch einen Ausschnitt aus einem Screenshot erstellt habe.
Allerdings müssen dafür die Bilder die verglichen werden exakt die richtige Größe haben.
Deswegen wäre es gut, wenn ich diese Größe auf einen bestimmten Wert festlegen kann.
Dadurch möchte ich auch erreichen, dass das Programm mit verschiedenen Auflösungen läuft.
Gausi - Mi 17.02.10 14:29
Näher ausführen kann ich das leider nicht, aber das Manipulieren von fremden Fenstern geht nunmal über Messages, die unter Windows so hin- und her geschickt werden. Irgendeine ist bestimmt auch für das setzen der Größe zuständig. Müsste man mal im MSDN suchen. :D
Zu deinem Vorhaben: Mach das lieber anders, denn das exakt hinzubekommen, dürfte schwierig sein. Dafür müsstest du z.B. auch unterschiedliche Rahmendicken bei XP und Win7 einrechnen. Versuche lieber, die kleinen Bilder so in dem großen Bild zu finden.
BenBE - Mi 17.02.10 14:40
Das ändern der Größe geht am Einfachsten über
SETWINDOWPOS ...
P@u1 - Mi 17.02.10 14:46
Gausi hat folgendes geschrieben : |
Zu deinem Vorhaben: Mach das lieber anders, denn das exakt hinzubekommen, dürfte schwierig sein. Dafür müsstest du z.B. auch unterschiedliche Rahmendicken bei XP und Win7 einrechnen. Versuche lieber, die kleinen Bilder so in dem großen Bild zu finden. |
Also eine Funktion die kleine Bilder in einem großen findet habe ich bereits.
Aber leider hilft das hier nicht weiter, denn:
Wenn man die Größe ändert, wird das Bild um das es geht neu skaliert, also ändert sich das Bild selbst und wird nicht mehr erkannt beim Vergleich.
SetwindowPos werd ich mir mal angucken.
Aber da bleibt ja immer noch das Problem mit dem Rahmen und den Toolbars und so, die dabei nicht beachtet werden sollen.
Hat jemand eine Idee, wie man das lösen kann?
platzwart - Mi 17.02.10 16:15
Das mit dem Skalieren ist eine gaaaanz schlechte Idee, weil möglicherweise Informationen verloren gehen (durch Stauchen), oder aber hinzukommen (durch Strecken). Solang es keine Vektorgrafiken sind, wirst du da nicht weiterkommen. Als Lösungsansatz fällt mir hier nur ein, eine Mustererkennung zu implementieren, die unabhängig von der Größe eines Objektes einen mehr oder weniger eindeutigen "Fingerabdruck" erzeugt...
P@u1 - Mi 17.02.10 17:44
das mit dem Skalieren hast du falsch verstanden. Das kommt nicht durch eine meiner Funktionen, sondern das ist bei der Seite so, dass die automatisch skaliert wird, wenn man die Größe ändert.
Jemand noch ne andere Idee?
Das mit der Mustererkennung könnte schwierig werden, das werde ich sehr sehr sehr wahrscheinlich nicht machen.
Edit: Hab gerade beim googlen einige firefox addons zum resizen entdeckt, ich werd mal nen paar testen, ob man damit auch nur die größe des html bereichs umstellen kann.
Für alternative Ideen bin ich immer noch dankbar!
platzwart - Mi 17.02.10 18:09
Ansonsten Bilder aus dem HTML-Code parsen, in ein temporäres Verzeichnis lokal speichern, dann sind die dort in Originalgröße...
P@u1 - Mi 17.02.10 18:19
das wäre richtig gut!
Nur wie geht das? :D
Ist das viel Aufwand (das zu lernen) ?
Edit: Geht das auch bei Flash-Inhalten?
platzwart - Mi 17.02.10 18:50
P@u1 hat folgendes geschrieben : |
das wäre richtig gut!
Nur wie geht das? :D |
> Forensuche, Ergebnisse und Codebeispiele ohne Ende...
P@u1 - Mi 17.02.10 23:19
also auf die schnelle find ich leider nichts was mir großartig hilft.
Hab da nur ein paar Sachen gefunden zum HTML text auslesen und so, aber ich will ja Bilder und die aus ner Flashbasierten Anwendung.
WICHTIG: geht das mit Flash?
platzwart - Mi 17.02.10 23:54
Kannst du mal einen Beispiellink geben?
platzwart - Do 18.02.10 00:10
Hast es richtig verstanden. Mit Flash dürfte es sehr schwierig werden...
P@u1 - Do 18.02.10 00:11
ok, dann werde ich wohl eher das mit der größe festlegen weiterverfolgen und ma schaun ob das zu was führt.
Problem ist nur, dass die addons die ich bisher getestet habe die gesamtgröße des fensters setzen, nicht nur den anzeigebereich.
Und wenn die Größe der Leisten usw. bei verschiedenen versionen von windows oder firefox variiert, wird es schwierig das rauszurechnen
Jakob_Ullmann - Do 18.02.10 16:02
Könnte man das nicht regeln, indem man vorher ein JavaScript lädt? Soweit ich weiß, gibt es da document.width. Das sollte sich dann doch auf den Inhalt beziehen. (EDIT: Ah, das ist ja offenbar das, was du nicht willst)
P@u1 - Do 18.02.10 17:08
Hab gerade das hier gefunden:
http://www.hypergeneric.com/corpus/javascript-inner-viewport-resize/
Das klappt super mit Javascript.
Hab gelesen, dass man mit ExecuteScript auch über Delphi einen Javascript ausführen kann.
Damit will ich dann den Script von der Seite ausführen.
Also wenn man auf der linken Seite was bei inner width und so eingibt und dann auf den button drückt, wird der innere bereich gesetzt, das ist das was ich will.
Ich werd nochma nen bischen googlen und mir das angucken wie ich das jetzt über delphi mache.
Wenn ihr zuviel Zeit habt oder so, könnt ihr mir ja bei helfen^^
---
Moderiert von
Narses: Beiträge zusammengefasst---
also ich hab was rumprobiert und wenn ich
Quelltext
1:
| javascript: window.innerWidth=800; javascript: window.innerHeight=600; javascript: window.moveTo(0,0); |
in die Adressbar von firefox eingebe klappt alles wunderbar (die anzeigefläche wird auf 800*600 gesetzt und das fenster nach ganz oben links verschoben).
Ich kriegs nur aus Delphi heraus nicht hin.
Wie kann ich mit delphi einen Javascript in firefox ausführen? Hab da bisher noch nichts wirklich gutes zu gefunden.
---
Moderiert von
Narses: Beiträge zusammengefasst---
das problem bei den sachen die ich finde ist, dass die sich immer nur auf eine TWebBrowser komponente oder sowas ähnliches beziehen, also eine komponente von delphi, aber wie kann ich das dann auf firefox anwenden?
platzwart - Do 18.02.10 23:25
Dann steuer doch einfach die Seite im TWebbrowser an? Für Delphi gibt es auch eine Firefox Komponente...
DonManfred - Fr 19.02.10 12:33
P@u1 hat folgendes geschrieben : |
Dann hier die Verlinkung:
Allerdings müssen dafür die Bilder die verglichen werden exakt die richtige Größe haben.
Deswegen wäre es gut, wenn ich diese Größe auf einen bestimmten Wert festlegen kann.
Dadurch möchte ich auch erreichen, dass das Programm mit verschiedenen Auflösungen läuft. |
Aehm, ein bild, welches KORREKT in HTML eingebunden wird, hat die ausmasse in der es hochgeladen wurde. Es sei denn man verändert das mit html-tags und dadurch würde ein verkleinertes bild angezeigt... Hier würdes es dann nur helfen, wenn man alle eingebundenen Bilder aus dem html-Quelltext ermittelt, diese runterlädt und DANN vergleicht. Also das bild ins programm einladen und mit dem wunschbild vergleichen...
Aber unabhängig davon sind 500pixel 500pixel; egal, in welcher Auflösung man arbeitet. Es macht also keinen sinn ein Browserfenster auf eine bestimmte Grösse zu bringen. ein 500 Pixel breites Bild ist auch in einem 100 Pixel breitem Browser 500 Pixel breit.
P@u1 - Fr 19.02.10 13:25
es geht ja um eine flashanwendung!
Hatte leider zunächst vergessen das zu erwähnen.
Und Flash skaliert automatisch.
Also seh ich das jetzt richtig, dass es nicht möglich ist, über delphi auf firefox zuzugreifen, so dass firefox einen javascript ausführt?
Also ich rede jetzt vom echten Browser und keiner firefox delphi komponente.
Kann die firefox delphi komponente auch flashinhalte darstellen/widergeben?
DonManfred - Fr 19.02.10 18:59
Die Delphikomponente bietet dir halt die möglichkeit firefox in delphi als webbrowser zu benutzen... Es wird alles dargestellt, was firefox halt darstellen kann. angezeigt wird es ja von firefox, nicht von der komponente... Die Komponente ist nur mittel zur Steuerung.
Jakob_Ullmann - Fr 19.02.10 19:07
Naja, direkt ist dein Vorhaben nicht ohne weiteres möglich. Aber du kannst zum Beispiel ein ShellExecute auf firefox.exe "file://c:/.../dings.html" machen, in der dann die Größe angepasst wird und anschließend auf dein Flash-File gelinkt wird (dürfte mit document.location gehen, ich glaube so hieß das).
edit: sorry, es ist window.location.href und screen.width.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!