Zum Forum springen
Windows-Programmier...
 
Benachrichtigungen
Alles löschen

Windows-Programmierer, Expertenfrage

14 Beiträge
6 Benutzer
0 Reactions
1,643 Ansichten
Santalino2
Beigetreten: 08.06.2007

Schon etwas länger her, als ich mich zum letzten mal mit Windows-Programmierung beschäftigte und komme gerade (für schönere Lösung) nicht weiter, also poste ichs mal hier, evtl. gibts ja hier Experte der das weiß.

Wie kann ich die Texte aus der Stars-Msgbox abfragen.

Problem ist das Stars anscheinend keine normale msgbox wie andere Programme verwendet (sonst wäre es kein Problem) und es für die Texte kein eigenes control handle gibt (wenn ich mir das z. B. über spy++ anschaue) und ich daher Text über WM_GETTEXT nicht auslesen kann. Hat wer eine Idee, Sprache ist eigentlich egal, dürfte sowieso nur über Windows api gehen oder? Bzw. wenn nicht dann am besten für c++, java oder vb(a).

PS: Eine unschöne Lösung wäre natürlich einfach die Fenstergröße abzufragen (die 3 oben gezeigte haben ja verschiedene Breiten) und es darüber zu regeln, aber irgendwie ist das ja pfusch und gefällt mir nicht, außerdem interessierts mich auch wirklich wie man diesen verdammten Text richtig rauslesen kann.


Antwort
Zitat
13 Antworten
Guennilicous
Beigetreten: 16.09.2006

Möp, hab ein ähnliches Problem.
Wäre nett falls jemand was fundiertes dazu schreiben könnte.


Antwort
Zitat
pg89
Beigetreten: 05.04.2008

Hab auch schon mehrmals versucht was aus der Stars Software auszulesen, bisher erfolglos. Wäre echt mal interessant, wie sowas geht.


Antwort
Zitat

Wenn das wirklich auf herkömmlichen Weg nicht geht, muss man das anders lösen, z.B. warten bis Box erscheint, Screenshot von Box machen, Text im Screenshot mit OCR auslesen, weiterverarbeiten.


Antwort
Zitat
pg89
Beigetreten: 05.04.2008

Ich wage mal zu behaupten, dass es sich schon um ein windows-fenster handelt, in dem ein text ausgegeben wird. Nur findet man das handle nicht so einfach auf herkömmlichem weg (spy++ etc.).
Ich stecke jetzt auch nicht so tief in der windows-programmierung, aber stars wird da sicherlich nicht das rad neu erfunden haben, davon haben sie ja auch nichts..


Antwort
Zitat

Original von pg89
Ich stecke jetzt auch nicht so tief in der windows-programmierung, aber stars wird da sicherlich nicht das rad neu erfunden haben, davon haben sie ja auch nichts..

Doch, sie haben davon, dass sie Bot-Programmierern das Leben schwer machen.


Antwort
Zitat
Santalino2
Beigetreten: 08.06.2007

Noch bißchen rumgeforscht, sind wohl lightweight controls, die haben kein eigenes windows handle und sind mit normalen Mitteln (wie wm_gettext) nicht abfragbar. Einzige Möglichkeit (abgesehen von ocr) ist wohl api hoocking und dll injecten und versuchen Texte von der Output-Funktion abzufangen, wobei das nicht wirklich wartungsfreundlicher und zukunftssicher (vor Stars updates) ist...abgesehen davon ists auch nicht ganz trivial und man müßte erst mal x Tage die Stars Software auseinandernehmen (ka ob erlaubt oder ob man dadurch evtl. sogar indirekt gegen irgendeine Stars T&C oder Copyright verstößt, Stars es zufällig rausfindet durch ihren eingeschleussten Kontroll-Überwachungs-Virus und du dann zwar das perfekte Programm hast, aber es wegen Lifetime-Bann nicht mehr wirklich nutzen kannst^^). Im Augenblick interessiert mich jedenfalls das Thema (noch) zu wenig um da jetzt mehr Energie reinzustecken (die Registrierungsfunktion ist auch nur nice-to-have-Nebenprodukt...).

Die andere Murks-Lösung (Breite auslesen) klappt übrigens ganz gut und würde anderen die das gleiche brauchen dann diese Methode empfehlen (beim Breite abfragen nur Sicherheitsschleife drumherum bauen, dass Abfrage solange erfolgt bis Popup paar Millisekunden auf Bildschirm war...wenn man das vorher abfrägt wenns irgendwie bereits im Windows-Universum entstanden aber noch nicht auf Bildschirm ist, dann stimmt die Breite nicht...).

Wenn wer noch eine andere Lösung hat darf er sie hier natürlich auch gerne posten und wenn sie mir gefällt, dann shippe ich dafür bißchen was auf ft (bin aber relativ sicher, dass es nix anderes mehr gibt....aber ok, man weiß es ja nie, evtl. gibts ja hier doch noch einen Super-Experten der es uns allen zeigt und uns mit seinen Ideen/Können überrascht). Und achso, ich plane nix kommerzielles und bin keine Konkurrenz für andere Software, ist nur Eigenlösung weil ich scheinbar in manchen Punkten doch irgendwie andere Ansprüche als andere habe (daher existiert ungefähr eine weltweite Nachfrage von 1 dazu und keiner hat für diese gewaltige Nachfrage natürlich bisher was entwickelt => Eigenlösung^^).


Antwort
Zitat
sh1n
Beigetreten: 18.04.2007

Man müsste schon genauer wissen was du vor hast, denn es gibt vielleicht auch andere Möglichkeiten um das gleiche Ziel zu erreichen.

Des Weiteren muss man beachten, wenn man die Daten von Stars ausließt, kann man evtl die AGB's verletzten und man wird gesperrt, obwohl es eigentlich harmlos ist.

P.S. Ein Crawler wäre so eine Alternative.


Antwort
Zitat
Santalino2
Beigetreten: 08.06.2007

Wie gesagt Ziel (sicherstellen das automatische Registrierung erfolgreich war) ist mit der Breite-auslesen-Methode erreicht (166 Pixel = "Registered") nur der verwendete Weg gefällt mir nicht (ich möchte die Infos die ich von der Software erhalte lieber richtig lesen und z. B. in Logfile sichern können und wenns mal Updates gibt dann fällt zukünftige Wartung usw. auch einfacher...). Und naja, habe da wohl psychische Leaks und vor paar Jahren hätte mich der Breite-Pfusch-Weg jedenfalls so geärgert dass ich noch endlos Energie reingesteckt hätte, bis ich schöneren Weg gefunden hätte, aber man wird halt älter und denkt dann langsam praktischer^^.


Antwort
Zitat
sh1n
Beigetreten: 18.04.2007

Stars loggt es in einem File wo du geregt bist. Nimm doch dann diesen Weg.


Antwort
Zitat
Santalino2
Beigetreten: 08.06.2007

Danke, interessante Idee um Popups zu verhindern. Werde ich mir wenn ich mehr Zeit habe auf jeden Fall noch genauer anschauen (hatte früher auch mal anderen Fall wo ich das hätte gebrauchen können...verdammter Drucker der immer Meldungen rausgehauen hat...).

Und Logfiles, naja, ich verwende gerne eigene Logfiles aber ich wurstel nicht gerne in fremden herum. Ist halt bißchen der Entwickler-Spielplatz wo sie sich austoben und laufend was ändern können (während beim direkten User-Interface halt schon vorsichtiger agiert wird...). Gerade gestern mal wieder kurz ins Logfile reingeschaut um zu schauen ob Timebank-Auslösung protokolliert wird (Pixelabfrage klappt dort noch nicht zuverlässig, keine Ahnung warum, aber Stars verwendet da scheinbar laufend minimal andere Pixelfarben, während es z. B. beim I-am-Back-Button super klappt, immer gleiche Farbe...kann aber auch sein dass es an win-aeros-liegt oder weil Timebank ja runterläuft und sich da verändert...erst gestern gemacht, muß ich noch genauer erforschen...bzw. wenn wer dazu eine Idee/Lösung hat, darf er sie natürlich auch gerne posten^^) jedenfalls auf die schnelle konnte ich das im Logfile jetzt z. B. nicht identifizieren.

Noch kurz zur Stars-Lobby. Die hat mich natürlich auch schon genervt, man kann sie halt nicht minimieren da sonst Spieler-Lobby usw. nicht aktualisiert wird (außerdem taucht nach Prozess auslösen dann immer die fette Lobby in Bildschirm-Mitte auf...). Habe es jetzt erst mal so gemacht das ichs nicht minimiere, sondern Lobby nur auf nicht sichtbaren Desktop-Bereich verschiebe (Lobby taucht dann nimmer auf, nur am äußersten sichtbaren Rand der am nähsten zur Lobby liegt sieht man dann paar Millisekunden die Popups...beim Spielen und größerem Bildschirm fällts jetzt nicht sooo stark auf, aber irgendwie störs mich natürlich trotzdem noch...).


Antwort
Zitat
Santalino2
Beigetreten: 08.06.2007

Danke :) und ok, hast mich überzeugt, ich werde mir das Logfile doch noch mal genauer anschauen...


Antwort
Zitat