Car PC Control Panel - Prozessstatus aktualisieren

  • Hallo Zusammen..

    Ich bin durch die CT auf AutoIT aufmerksam geworen und bin seit 2 Tagen ein bischen am rumspielen ..

    Ich möchte ein Control Panel für meinen Car PC erstellen, bei dem ich mehrere Buttons erstellt habe, die jeweils einen Prozess ausführen und beim 2. klicken beenden..

    es klappt auch alles super..
    jedoch möchte ich nun den prozessstatus anzeigen lassen.. dies mache ich durch pics, die ich angefertigt habe .. und der funktion if processexists ..
    klappt ebenfalls.. jedoch aktualisiert er die anzeige natürlich nicht wenn ich auf einen button klicke..

    habe ein wenig im forum gesucht, aber nur für mich sehr schwer bis garnicht verständlichen code gefunden ..

    könnte mir jemand mit verständnis für meine nicht vorhandene erfahrung im autoIT bereich erklären, wie ich vorgehen muss?

    anbei der code:

    [autoit]

    #cs ----------------------------------------------------------------------------

    [/autoit][autoit][/autoit][autoit]

    AutoIt Version: 3.2.10.0
    Author: Martin Peters

    [/autoit][autoit][/autoit][autoit]

    Script Function:
    Let You control the Processes that are important for my Car-PC

    [/autoit][autoit][/autoit][autoit]

    #ce ----------------------------------------------------------------------------

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]

    #include <GUIConstants.au3>

    [/autoit][autoit][/autoit][autoit]

    Opt("GUIOnEventMode", 1) ;
    $mainwindow = GUICreate("Mumpits' Car PC Control 1.0", 360, 400)
    GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")

    [/autoit][autoit][/autoit][autoit]

    GUICtrlCreatePic ( "header.jpg", 0, 0, 360, 100)

    [/autoit][autoit][/autoit][autoit]

    $franson = GUICtrlCreateButton("Franson GPS Gate", 20, 110, 140, 50)
    GUICtrlSetOnEvent($franson, "Franson")

    [/autoit][autoit][/autoit][autoit]

    If ProcessExists("GpsGateXP.exe") Then
    GUICtrlCreatePic ( "status_on.jpg", 5, 120, 10, 10 )
    Else
    GUICtrlCreatePic ( "status_off.jpg", 5, 140, 10, 10 )
    EndIf

    [/autoit][autoit][/autoit][autoit]

    $x10battle = GUICtrlCreateButton("X10 Battle Tool", 200, 110, 140, 50)
    GUICtrlSetOnEvent($x10battle, "x10battle")
    GUISetState(@SW_SHOW)
    If ProcessExists("X10Receiver.NET.exe") Then
    GUICtrlCreatePic ( "status_on.jpg", 345, 120, 10, 10 )
    Else
    GUICtrlCreatePic ( "status_off.jpg", 345, 140, 10, 10 )
    EndIf

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    $cPos = GUICtrlCreateButton("cPos", 20, 170, 140, 50)
    GUICtrlSetOnEvent($cPos, "cPos")
    GUISetState(@SW_SHOW)
    If ProcessExists("cPOS.exe") Then
    GUICtrlCreatePic ( "status_on.jpg", 5, 180, 10, 10 )
    Else
    GUICtrlCreatePic ( "status_off.jpg", 5, 200, 10, 10 )
    EndIf

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    $direktor = GUICtrlCreateButton("Präsentationsdirektor", 200, 170, 140, 50)
    GUICtrlSetOnEvent($direktor, "Direktor")
    GUISetState(@SW_SHOW)
    If ProcessExists("PDIRECT.EXE") Then
    GUICtrlCreatePic ( "status_on.jpg", 345, 180, 10, 10 )
    Else
    GUICtrlCreatePic ( "status_off.jpg", 345, 200, 10, 10 )
    EndIf

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]

    $touchkit = GUICtrlCreateButton("Touchkit", 20, 230, 140, 50)
    GUICtrlSetOnEvent($touchkit, "Touchkit")
    GUISetState(@SW_SHOW)
    If ProcessExists("Touchkit.exe") Then
    GUICtrlCreatePic ( "status_on.jpg", 5, 240, 10, 10 )
    Else
    GUICtrlCreatePic ( "status_off.jpg", 5, 260, 10, 10 )
    EndIf

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    $mp3folder = GUICtrlCreateButton("MP3 Ordner", 200, 230, 140, 50)
    GUICtrlSetOnEvent($mp3folder, "mp3folder")
    GUISetState(@SW_SHOW)

    [/autoit][autoit][/autoit][autoit]

    $explorerrestart = GUICtrlCreateButton("Explorer Restart", 20, 290, 140, 50)
    GUICtrlSetOnEvent($explorerrestart, "ExplorerRestart")
    GUISetState(@SW_SHOW)
    If ProcessExists("explorer.exe") Then
    GUICtrlCreatePic ( "status_on.jpg", 5, 300, 10, 10 )
    Else
    GUICtrlCreatePic ( "status_off.jpg", 5, 320, 10, 10 )
    EndIf

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    Func Franson()
    If ProcessExists("GpsGateXP.exe") Then
    ProcessClose ( "GpsGateXP.exe" )
    Else
    Run ( "C:\Programme\Franson\GpsGate 2.0\GpsGateXP.exe" )
    EndIf
    EndFunc

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    Func cPos()
    If ProcessExists("cPOS.exe") Then
    ProcessClose ( "cPOS.exe" )
    Else
    Run ( "C:\Dokumente und Einstellungen\martin.peters\Desktop\Cpos\Cpos 10158\cPOS.exe" )
    EndIf
    EndFunc

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    Func x10battle()
    If ProcessExists("X10Receiver.NET.exe") Then
    ProcessClose ( "X10Receiver.NET.exe" )
    Else
    Run ( "C:\Programme\Battlesoft\X10Receiver .NET\X10Receiver.NET.exe" )
    EndIf
    EndFunc

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    Func Direktor()
    If ProcessExists("PDIRECT.EXE") Then
    ProcessClose ( "PDIRECT.EXE" )
    Else
    Run ( "C:\Programme\ThinkPad\Utilities\PDIRECT.EXE /w" )
    EndIf
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    Func Touchkit()
    If ProcessExists("Touchkit.exe") Then
    ProcessClose ( "Touchkit.exe" )
    Else
    Run ( "C:\Programme\TouchKit\Touchkit.exe" )
    EndIf
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    Func mp3folder()
    FileSelectFolder( "test", "C:\= Data =\= MP3 =", "")
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    Func ExplorerRestart()
    If ProcessExists("explorer.exe") Then
    ProcessClose ( "explorer.exe" )
    Else
    Run ( "explorer.exe" )
    EndIf
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    Func CLOSEClicked()
    Exit
    EndFunc

    [/autoit]


    Weiterhin brachte bei mir der Sleep Befehl nichts.. ist das der Befehl für den Ruhezustand? Wenn ja gibt es einen für den Standby-Modus?


    Vielen lieben Dank im Vorraus,

    Martin

  • sleep

    Pausiert die Skript Ausführung.


    Sleep ( delay )

    Parameter
    delay Zeitdauer der Pause (in Millisekunden).

    Bemerkungen

    Die maximale Pausenzeit beträgt 2147483647 Millisekunden (24 Tage).

    [autoit]

    Sleep(5000) ;fünf Sekunden

    [/autoit]


    1000 Millisekunden = 1sec

    Shutdown (code)

    Der Herunterfahr-Code ist eine Kombination der folgenden Werte:
    0 = Abmelden / Logoff
    1 = Herunterfahren / Shutdown
    2 = Neu Starten / Reboot
    4 = Herunterfahren erzwingen / Force
    8 = Strom abschalten / Power down
    32= Suspend
    64= Schlafmodus / Hibernate

    Die benötigten Wert sind aufzuaddieren. Zum Herunterfahren mit Stromabschaltung wäre, z.B. der Wert 9 zu setzen. (shutdown + power down = 1 + 8 = 9).

    Standby oder Hibernate werden ignoriert, wenn andere Werte gesetzt werden. Ebenso werden sie unter Win9x ignoriert.

    [autoit]

    Shutdown(6) ;einen Neustart erzwingen

    [/autoit]
  • Die Bilder mit Variablen erzeigen und dann das Bild in der Funktion austauschen :)

    Spoiler anzeigen
    [autoit]

    If ProcessExists("GpsGateXP.exe") Then
    $FransonPic = GUICtrlCreatePic ( "status_on.jpg", 5, 120, 10, 10 )
    Else
    $FransonPic = GUICtrlCreatePic ( "status_off.jpg", 5, 140, 10, 10 )
    EndIf

    [/autoit][autoit]

    Func Franson()
    If ProcessExists("GpsGateXP.exe") Then
    ProcessClose ( "GpsGateXP.exe" )
    GUICtrlSetImage($FransonPic , "status_off.jpg")
    Else
    Run ( "C:\Programme\Franson\GpsGate 2.0\GpsGateXP.exe" )
    GUICtrlSetImage($FransonPic , "status_on.jpg")
    EndIf
    EndFunc

    [/autoit]
  • hallo send9! :)

    entschuldige.. mit dem sleep meinte ich nicht die funktion zum Pausieren sondern diese hier:
    Send("{Sleep}")

    Auf deiner Shutdown Auflistung finde ich keinen Code für den Standbymodus.. dabei läuft ja noch ein kleiner Strom..


    Kann mir jemand mit dem Aktualisieren helfen?

  • Das ist DIE Lösung :) Danke! :) Allerdings ist mir aufgefallen, dass wenn der Prozess z.b. am laufen ist wenn ich das Programm starte und ihn durch Drücken auf den Button beende er das OFF-Image an der Stelle anzeigt wie das ON - Image, obwohl diese unterschiedliche Höhen definiert haben.. Starte ich das Programm nochmal neu positioniert er richtig..?

  • Dann musst du beide Bilder erstellen und das richtige mit $GUI_SHOW anzeige und das falsche mit $GUI_HIDE verstecken :)

    Spoiler anzeigen
    [autoit]

    $FransonPicOn = GUICtrlCreatePic ( "status_on.jpg", 5, 120, 10, 10 )
    $FransonPicOff = GUICtrlCreatePic ( "status_off.jpg", 5, 140, 10, 10 )
    If ProcessExists("GpsGateXP.exe") Then
    GUICtrlSetState($FransonPicOff,$GUI_HIDE)
    Else
    GUICtrlSetState($FransonPicOn,$GUI_HIDE)
    EndIf

    [/autoit][autoit]

    ;ButtonClick:
    GUICtrlSetState($FransonPicOn,$GUI_HIDE)
    GUICtrlSetState($FransonPicOff,$GUI_SHOW)
    ;oder andersrum :)

    [/autoit]