Gelöst: Fenster-Titel als String auslesen

    • Dll

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Gelöst: Fenster-Titel als String auslesen

      Gibt es eine DLL die den Head-Text, also den Titel, des momentan aktiven Fensters anzeigt? Sodas man es als String weiterverarbeiten kann.
      Die Idee stammt aus einem Fun-Programm, das im Hintergrund auf meine Aktivitäten reagierte. Zum Beispiel wusste es, als ich ein Video startete, den Titel und konnte dementsprechend reagieren. War der Titel (Text) nicht in seinem Wörterbuch, machte es nur eine Bemerkung, wie "Naa..? Guckst du ein Schlüpfrigen Film?".
      Aber wenn im Titel zB. "Doku" stand, sagte er zB. "Du Langweiler!".
      So ungefähr funktionierte das Spaßprogramm.

      Also, gibt es eine DLL die den Titel des aktiven Fensters auslesen kann?
      Und/Oder den Titel der soeben gestarteten Datei?

      EDIT: Wäre es vielleicht irgendwie möglich aktive Fenstertitel aus der Registrie zu entnehmen? Immerhin werden doch die Fensterpositionen gespeichert.
      Ich möchte halt gerne eine KI erstellen mit der man interagieren kann.
      Sie soll ungefähr wissen was sich auf deinen PC befindet und dementsprechen reagieren.
      Natürlich werden keine Daten übers Internet versenden. Einfach nur ein stabiles seriöses Programmchen.
      Es soll auch die Fähigkeit habe dazuzulernen. Also das ich dieser KI zB 500 MB von der Festplatte für seine Erinnerungen gebe oder so. Also seine "Gehirn-Kapazität". Und ältere Dinge werden später dann "vergessen" um Platz für neues zu machen.
      Natürlich wäre so ein Programm sehr aufwänding. Aber es würde bestimmt Spaß machen. Und wenn alles so klappt wie man will .... :). Vielleicht muss man fast ein Wörterbuch abschreiben und die Beteutung der Wörter dazu schreiben, damit die KI die deutsche Sprache beherscht ^^.
      Natürlich habe ich noch nicht genau über das nachgedacht. Es ist erstmal eine Idee.
      57 6F 77 2C 20 64 61 73 20 68 61 73 74 20 64 75 20 67 61 6E 7A 20 61 6C 6C 65 69 6E 20 67 65 73 63 68 61 66 66 74 2E 20

      Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von DanielGM61 ()

    • Hi,
      Warum brauchst du eigentlich so viele DLL's? Mindestens schon 10 Threads über "Suche DLL's" hast du schon aufgemacht. Soll das ne Sammlung werden?

      Seit wann liest man den Fenstertitel aus der Registry aus? Da wird wennschon nur die "Default Position" und die "Default Size" abgespeichert. Ich kann dir eine DLL schreiben, die den Fenstertitel des aktiven Fensters ausliest und dann an die Hauptanwendung weiterversendet, aber ich seh irgendwie keinen Sinn darin.

      mfg Critical

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Critical ()

    • DLL's werden mit Programmiersprachen entwickelt, wenn ich das richtig in erinnerung habe. Mit C++ gehts auf jedenfall. Ob mit C#,Visual Basic, Visual Basic .NET usw... es auch geht weiß ich gar nciht so genau.
      Aktuelles Projekt: Aufbau - Strategiespiel.
      Aktueller Entwicklungsschritt: Planung | Grundengine entwickeln.

      Wichtig ist nicht, besser zu sein als alle anderen.
      Wichtig ist, besser zu sein als du gestern warst.





    • @peini: Echt? Ohne C++ eine DLL geschrieben? Naja gut der Assistent ist auch nicht wirklich schwer.
      @DanielGM61: GML hat gar nichts mit den anderen Programmiersprachen zu tun. Also gibt es kein Tutorial darüber.

      Ich habe zurzeit viel zu tun, deshalb kann es noch etwas dauern mit der DLL.
      PS: Wer GML kann, hat trotzdem noch nicht wirklich die Kenntnisse, um sich ne DLL zu schreiben. Kauft euch ein C++ Grundlagenbuch und steigt um. Oder fragt (wie hier gerade) jemanden, ob einer die DLL programmiert.
    • Ja wäre nett wenn du mir eine dll schreibst. Und evtl. noch ein gm6 einbindung (Example).
      Vielleicht auch noch ein DLL Tutorial. "Wie hast du diese DLL geschrieben?". ^^
      57 6F 77 2C 20 64 61 73 20 68 61 73 74 20 64 75 20 67 61 6E 7A 20 61 6C 6C 65 69 6E 20 67 65 73 63 68 61 66 66 74 2E 20
    • @Theard:

      solch eine DLL erfordert nicht viel es gibt eine C++ Biblo oder so die enthält nee Variable die Windows immer ausgibt und zwar das handling und den header namen des aktiven fensters ich werd ma gugen ob ich die finde,kann aber nix versprechen
    • @ Critical: Also als GML-Experte kann ich schon was anderes erwarten oder? Ich bin am überlegen, ob ich das Smilie rechts neben dem "I love GM" nehmen soll? Spaß ^^. Meine Fragen haben zumindest fast immer einen Sinn ;). Jedenfalls will ich von dir wissen, wer das gesagt hat, dass das GM-Fenster immer aktiv ist? Wenn das der Fall wäre, is ne DLL die den String des aktiven Fensters ausliest echt überflüssig. Ne, folgende Szene:
      Du startest das GM-Fenster, das entweder die Funktion windows_set_visible aktiviert hat oder einfach unten recht über der Uhr die Zeit verbringt. (Du kennst doch so Info_Fenster oder einfach nur Spaßanimationsfenster?).
      So, du gehst jetzt deiner Arbeit nach und bist im Internet oder guckst Videos oder sonst was. Schon bekommt "mein" GM-Fenster mit der DLL die Header Infos und kann dem entsprechend reagieren. Sei es wenn nur ein Wort im Header vorkommt, dass dem GM-Fester bekannt vorkommt. Dazu gibt es eine string_funktion. Jedenfalls, wenn es eine Fun-Applikation (GM-Fenster) wäre, könnte eine Stimme bei nicht Jugendfreie Videos, wie SAW oder sonst was, warnen oder einen Kommentar dazu loswerden. ....

      @benny1111200: Wäre net' schlecht, wenn du sowas hier brächtescht. Optimal mit Example. Sonst könnte ich in Jahren die DLL nicht einbinden ^^.

      ____________________________________________________________________________________________________
      Neuer Bertrag:
      Eigentlich wollte ich ja jetzt nach mehr als einem Monat eine weitere Post anhängen. Aber sonst wäre es ja eine Doppelpost. Und den Streß mit den einen oder anderen Mods möchte ich dann lieber vermeiden.
      > Obwohl ich endlich die Lösung gefunden habe. Ja, ich habe sie ... die DLL die den aktuellen Windowstring ausliest.

      *DOCH VORSICHT: Bevor ihr jetzt schneller downloadet, als die Maus schnell ist, möchte ich auf folgendes hinweisen:
      Und zwar ist die DLL nicht perfekt. Das heißt eigentlich ja schon, aber es scheint als fehle eine Codezeile die den Speicher leert. Oder sowas in der Art. ^^ Kenne mich leider mit C++ oder ähliches nicht so genau aus.
      Jedenfalls probiert es selber aus.

      Ladet die Zip herunter startet die GM6 (F5) und öffnet zugleich den Task-Manager > Prozesse (rechtklick auf Taskleiste > Task-Manager, o. STRG+ALT+Entf). Doch wartet nicht solange bis 2 GB voll sind. ^^ So wie ich es dann bemerkt hatte.

      >> Ich schätze mal, dass das Problem IN der DLL liegt, oder?
      Wenn ja, was kann man da machen. Kann man diese 4 KB dekompilieren?

      Nur keine Angst ^^ Ihr könnt sie schon runterladen :) - Diese DLL verursacht keinen Schaden. Man sollte das GM6 Programm nur nicht zu lange laufen lassen. Im Taskmanager sieht man ja auch, wie voll der Speicher wird. Und ich denke mal das jeder von euch min. 512 MB hat. Ich hatte damals erst bemerkt, als mein Speicher schon über 1500 MB voll war. Das zeigte sich darin, dass mein PC schwerfällig wurde :D - Nach einem Neustart war es wieder Elefantenfrisch.
      Dateien
      57 6F 77 2C 20 64 61 73 20 68 61 73 74 20 64 75 20 67 61 6E 7A 20 61 6C 6C 65 69 6E 20 67 65 73 63 68 61 66 66 74 2E 20

      Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von DanielGM61 ()

    • Ne, DLLs oder allgemein kompilierte Sachen kann man nicht in die Ursprungssprache "dekompilieren". Alles was du machen kannst, ist es den Ablauf in Assembler zu sehen.
      In meiner psychisch soziologischen Konstellation, manifestiert sich die absolute Dominanz positiver Impressionen meines Individuums.
      Kurz: Ich bin geil!

    • Mhm, du ist das ein wenig kompliziert. Und dann musste ja dochnoch eine weitere DLL erstellen.
      Also ich kenne mich in dieser Materie nicht so genau aus.

      >> Ich sehe oben dass sich fast niemand die Zip mit der DLL und das Example herunterladet.
      Ich vermute wegen meiner Warnung. Wie gesagt, euren PC oder Hardware passiert garnichts.
      Die DLL verbraucht nur langsam nach der Zeit immer mehr RAM (Arbeitsspeicher).
      Sobald man die kompiliere EXE wieder schließt, wird der RAM wieder geleert.

      >>> Die DLL ist ja ziemlich klein. Bestimmt enthält sie nur ein paar Codezeilen. Sowas wie im Gamemaker zB.
      Windows_get_x(); oder sowas.
      Also falls sich da jemand auskennt, kann er gerne eine neue Dll erstellen. Nur diesmal mit einer RAMfree funktion oder wie man das nennt. - ... Ich muss echt mal C oder C++ lernen. ^^
      57 6F 77 2C 20 64 61 73 20 68 61 73 74 20 64 75 20 67 61 6E 7A 20 61 6C 6C 65 69 6E 20 67 65 73 63 68 61 66 66 74 2E 20
    • Ich weiß jetzt nicht genau ob ich das richtig verstanden habe, aber:

      Du aktivierst irgendein Fenster. Dann liest du den String aus. Und wenn da z.B. "Youtube" drin vorkommt kommt dein Spiel zum vorschein?

      Sowas finde ich ehrlich gesagt ein bisschen sinnlos und ich wüsste jetzt nicht, was diese DLL bringen sollte, da es eine Einzelanfertigung wäre. Ich erstelle in der DLL einen CBT Hook und lasse mir die window handles des aktivierten auslesen und hole mir den String des Titels. Das wäre einmalig und ich wüsste keinen, der so eine DLL gebrauchen könnte.

      Für solche "Spielereien" wäre es sinnvoller, selbst C++ o.Ä. zu lernen.
      Übrigens: Mich wundert das mit den 2 GB. Ich wüsste nicht, warum man innerhalb der DLL speicher manuell reservieren / freigeben sollte. Um meinen Arbeitsspeicher auf 2GB hochzupushen müsste ich 400 Millionen Instanzen einer Klasse mit einer long Variable erstellen...
      Außerdem wird meines Wissens bei Hooks sowieso kein Speicher freigegeben.

      mfg Critical
    • @ Critical: Das mit dem, wie du es nennst, "Spielereien" war ja auch nur ein beispiel.
      Mit so einer DLL kann man schon viel anstellen. Ein weitere Punkt wäre das Überwachen von fremde Usern am eigenen PC. Oder ein Jungendschutzprogramm. ...

      Das die DLL Speicher frißt und zwar mehrere MB in der Sekunde kann ich mir auch nicht erklären. Wer es nicht glaubt, der sollte sich die DLL halt mal herunterladen.
      Entweder liegt es am Gamemaker und wie man mit der DLL umgeht. Oder es liegt an der DLL selber. Vielleicht darf man diese Funktion nicht in jedem Step ausführen.
      Man müsste halt im selben Step am Schluss die DLL vom RAM freigeben. Wie macht man das?
      57 6F 77 2C 20 64 61 73 20 68 61 73 74 20 64 75 20 67 61 6E 7A 20 61 6C 6C 65 69 6E 20 67 65 73 63 68 61 66 66 74 2E 20
    • Wow danke Bl@ckSp@rk. Wie du geschrieben hast, war es wohl nicht schwer oder viel Arbeit. Aber nur der Sinn zählt. Also vielen Dank. Warum nicht gleich ^^. Was mich jetzt noch neben bei interessiert: Was hast du ander gemacht, damit der Speicher nicht so gefressen wird?

      @Foo:
      Jaja, das sag ich bei selben Situationen auch immer ;). Spass! ^^
      57 6F 77 2C 20 64 61 73 20 68 61 73 74 20 64 75 20 67 61 6E 7A 20 61 6C 6C 65 69 6E 20 67 65 73 63 68 61 66 66 74 2E 20

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von DanielGM61 ()

    • DanielGM61 schrieb:

      Was mich jetzt noch neben bei interessiert: Was hast du ander gemacht, damit der Speicher nicht so gefressen wird?

      Die Frage sollte eher lauten, wie derjenige es geschafft hat, bei solch einer simplen DLL ein so riesiges memory-leak zu erzeugen. ;)
      Wie gesagt war die DLL nicht viel Arbeit und ist nichtmal 20 Zeilen lang, von daher wundert es mich was deine DLL da veranstaltet.