Endlosschleife funktioniert falsch



  • Hallo,

    berniebutt schrieb:

    Wenn ich das richtig verstehe, hast du 2 EXE - die hier vorgestellte und eine andere. Die 2. EXE soll die Steuerung der 1. EXE übernehmen...

    nein, das ist viel einfacher...

    Der Startaufruf für mein hier gezeigtes Script "AutoFMT.exe" kommt aus einer Gopal-internen Startroutine, einer sogenannten *.lua, die bei jedem Booten des PNA durchlaufen wird, ähnlich des Autostart-Ordners, nur komplizierter und umfangreicher...

    Meine "FMT_Switcher.Exe" enthält 3 Buttons.

    Button1 = Einschalten ---> verschiebt die "Restore_AutoFMT.exe" aus der Sicherung in den dazugehörigen Ordner als "AutoFMT.exe , löst einen Softreset aus und das Script startet mit dem PNA automatisch mit.

    Button2 = Ausschalten ---> holt sich den handle zum Prozess "AutoFMT.exe", schliesst diese, verschiebt die AutoFMT.exe wieder in den Sicherungs-Ordner als "Restore_AutoFMT.exe" und löst einen Softreset aus.

    Der 3. Button schliesst das Programm ohne Änderung.

    Selbstverständlich sind beide Funktions-Buttons mit einer Sicherungsroutine versehen.

    berniebutt schrieb:

    ...und irgendetwas mit Systemeinstellungen machen?

    Nein, da hab ich mich wohl missverständlich ausgedrückt... Sorry! 😕

    In der AutoFMT.exe musste ich zusätzlich zu der Abfrage nach dem Fenster auch noch die Pixelfarbe vergleichen, weil ansonsten die Suche nur nach dem Fenster, ein anderes Fenster mit gleichem Namen auch geklickt würde. Das hätte aber zur Folge gehabt, dass ein Rücksetzen auf Werkseinstellungen geklickt würde, was natürlich verhindert werden musste. aus diesem Grund in meinem vorgestellten Script die zusätzliche Abfrage nach der Farbe und dem Vergleich mit der Farbe an anderer Stelle des Fensters.

    Gruß
    Peter



  • was ist PNA und Gopal? Würde es vieleicht einfacher machen zu Helfen.



  • Sorry,

    PNA ist ein Pocket-Navigations-Gerät, mit CE 5-Core, allerdings deutlich eingestampft, z.B. ohne AYGSHELL.dll und noch ein paar anderer fehlender Sachen.

    GoPal ist die darauf laufende Navigations-Software.



  • Du schreibst als ein Programm für Windows CE!?.



  • ganz genau so ist das.



  • Hallo nochmal.

    Was würdet Ihr denn an meinem Script ändern wollen?

    Ich versuche ja dazu zu lernen. Es funktioniert ja, aber wenn man das eleganter und schöner machen könnte, wäre mir ja auch schon geholfen...

    Mal was zum Hintergrund der von mir erstellten kleinen C-Proggies:

    Wir betreiben ein nichtkommerzielles Forum für Navigationsgeräte und stellen unseren Usern Installations-Programme und Skins kostenlos zur Verfügung. Da wir uns auf die Fahne geschrieben haben, dass alles für den User einfach und problemlos installierbar sein soll, sind wir von MortScript auf Pelles C umgestiegen, da .NET leider auf den kleinen Geräten nicht installierbar ist. Ausserdem sind wir so auch ein wenig gegen Ideendiebstahl geschützt, wenn man keine offenen Scriptdateien zur Verfügung stellen muss. Wen interessiert was wir machen... Link ist in meinem Profil. 😉

    Unsere Installer schreibe ich mit AutoIt, die Apps, die auf dem Navi laufen sind alle in C geschrieben, da die sehr klein sind und eigentlich problemfrei laufen.

    Wie gesagt... ich bin dabei mich vernünftig in die Materie einzuarbeiten und bin für Hilfe dabei ausserordentlich dankbar. Klar... ich mache noch sehr viele Fehler, aber bisher habe ich noch alles ans Laufen bekommen, auch wenn es länger dauert... 😉



  • ka ob das in WinCE geht, aber ich würde eine DLL in den Zielprozess injizieren um die entsprechenden Fensterprozeduren zu hooken. Damit hätt man dann die voll Kontrolle über die Fenster.



  • Hallo,

    ob das bei den gestrippten CE-Kernels geht weiss ich nicht.

    Was würde das denn für Vorteile bringen gegenüber der jetzigen Version und was würde das injizieren der DLL für ein Problem lösen Deines Erachtens? Das versteh ich nämlich gerade nicht...



  • Pitter (c) schrieb:

    Was würde das denn für Vorteile bringen gegenüber der jetzigen Version

    =>

    Pitter (c) schrieb:

    Der Sinn der Übung ist, eine kleine Exe im Hintergrund laufen zu haben, die abpüft, ob das Fenster hoch kommt

    Dann könntest du WM_SIZE abfangen und entsprechend reagieren - es gäbe also keine Zeitverzögerung wie mit Sleep().

    Zum jetzigen Programm:
    Hast du dir mal die Klassennamen der Fenster angeschaut? Eventuell unterscheiden die sich ja - das wäre die beste Lösung um die Fenster zu unterscheiden. Ansonsten könnte man mittels EnumChildWindows die Childs durch gehen und dann nach einem Signifikanten Controll suchen: z.B. ein Button mit eindeutigen Text.



  • Hallo,

    das liest sich interessant. Das dürfte aber keine System oder CPU-Leistung fressen, weil die Dinger sind da echt knapp bemessen. Deshalb sind auch die Sleep drin...

    Aber ich schau mal nach den Childs, das würde ich mir zutrauen, ansonsten schrei ich nach Hilfe. 😉

    Schönen Abend noch

    Edit:

    hab mir das mal bei MSDN angeschaut, das wird mir nicht helfen, da mit meinem Klick das Programm geschlossen wird. Leider steige ich noch nicht dahinter, was die GoPalSettings da bei dem Klick übergibt. Es ändert sich nur ein Eintrag in einer Settings.xml und entweder ist der FM-Transmitter danach eingeschaltet oder nicht... Der Prozess ist GoPalSettings ist danach geschlossen.

    Wenn ich dann in das Settings-Menü gehe, dann öffnet sich diese GoPalSettings.exe neu, mit einer anderen Oberfläche, mit komplett anderen Optionen, allerdings auch mit dem gleichen Fensternamen.

    Bliebe nur die Möglichkeit nach einem Button zu suchen mit einer eindeutigen Beschriftung... Da bin ich aber nicht sicher, ob das machbar ist, würde aber auch den gleichen Effekt haben, wie die jetzige Suche nach der Farbgleichheit, oder?


Anmelden zum Antworten