Beiträge von Pitter

    Noch eine Nachfrage...


    Ich hoffe, ich geh Euch nicht auf den Keks damit... ;(


    Wie kann ich bei einer Änderung des PNG dieses auf der GUI austauschen?
    Egal was ich mache, das Startbild bleibt immer oben.


    Hintergrund:
    Ich habe eine Screenshot-Funktion, die das Bild per FTP auf den PC schaufelt. Dieses PNG soll dann das gerade angezeigtre PNG austauschen.... Das krieg ich nicht gebacken.


    Gruß
    Pitter

    Danke für die Beispiele.... :thumbup:


    Jetzt wird nach Minimieren und dann wieder aus der Taskleiste hoch holen zwar das PNG wieder angezeigt, aber mein Hintergrund der GUI ist weg. Stattdessen wird aus dem Desktop ein "Hintergrund" generiert. Was mach ich da falsch? ;(


    Hab das jetzt so gemacht:



    Wie zum Henker kriege ich jetzt meinen Hintergrund wieder an den Start?!? ?(

    ;( .... hmmm....


    Da krieg ich keinen Kopf dran..


    Ich rufe das Startbild folgendermassen auf:

    Func _Main()
    _GDIPlus_Startup()
    .
    .
    GUISetState()


    $pic2 = @ScriptDir & "\Testbild.png"
    $hGraphic1 = _GDIPlus_GraphicsCreateFromHWND($WinMain)
    $hImage = _GDIPlus_ImageLoadFromFile($pic2)
    _GDIPlus_GraphicsDrawImageRect($hGraphic1, $hImage, 615, 545, 400, 240)
    Damit bekomme ich das Bild angezeigt.


    Wie gehe ich dann nun mit
    "z.B. GUIRegisterMsg: WM_ERASEBKGND" um, damit ich das hin bekomme?


    ...und 2.:


    Wie schaffe ich es, dass das gespeicherte neue PNG nach der schreenshot-Funktion auch angezeigt wird?


    GDI... ein Buch mit sieben Siegeln für mich... :wacko:

    Jep, das hab ich nun hinbekommen, jedenfalls das Startbild wird angezeigt. Danke!!! :thumbsup:


    Den Bildwechsel beim Screenshot muss ich morgen machen, wenn ich das externe Gerät dran habe.


    Was mich noch etwas stört ist, dass das PNG weg ist, wenn ich das Programm in die Taskleiste minimiere und wieder hoch hole...
    Hat da noch jemand eine Idee zu?

    Hallo Leute,


    ein weiteres Problem hat sich aufgetan.


    Folgendes Szenario:
    Ich löse mittels Butten in der GUI per Telnet auf dem externen Gerät einen Screenshot an. Dieser Screenshot ist und muss immer eine *.PNG sein, ansonsten funktioniert die leider nicht.
    Dieser Screenshot wird per FTP-Funktion in einen Ordner geladen.
    Das funktioniert perfekt so weit.


    Nun zum Problem:
    Diese Screenshot.PNG soll nun (am liebsten ohne Rahmen) auf der GUI angezeigt werden und bei jedem neuen Screenshot ausgetauscht werden....


    Bislang habe ich innerhalb der GUI immer nur mit JPG oder BMP gearbeitet... nur leider geht das in diesem Fall leider nicht.


    Alle Beispiele die ich gefunden habe sind entweder für mich so undurchsichtig, dass ich die nocht an meine Bedürfnisse angepasst bekomme... und dazu eigentlich immer im eigenen Fenster. Das kann ich leider auch nicht gebrauchen.


    Kennt jemand entweder ein verständliches Tut, oder kann mir dabei jemand helfen, büdde?


    Gruß
    Pitter

    ...eben...


    das Problem besteht auch nur dann, wenn ich keine physische Verbindung zu dem externen Gerät habe.
    Dann wird die _telnet() in einer Endlos-Schleife ausgeführt.
    Als Exe kompiliert kann ich dann den Task nur noch abschiessen... Ich hab da jedenfalls keine Idee mehr zu.


    Ist die physische Verbindung zum Gerät hergestellt, wird die _telnet() und auch die _screenshot() nur einmal ausgelöst.


    Jetzt wäre nur noch die Frage, wie ich die fehlerhafte Verbindung abarbeite, denn so kann es ja nicht bleiben. Schliesslich kann das immer mal passieren, dass man vergessen hat die D-Link-Adapter an den PC anzuschliessen....

    hmmm...


    wie würdet Ihr das denn machen, dass die max. 2x aufgerufen wird?


    Hier ist noch der Button, der die _telnet() aufruft:
    Case $screenButton ;====== Take Screenshot ======
    ;===== call func _screen_dateset to get new timestamp
    _screen_dateset()
    ;===== open Telnet to connect to target
    _telnet()
    ;===== call func _screenshot to take screenshot
    _screenshot()
    ;===== main structure to take screenshot
    While WinExists($WinTitle, "")
    If WinActive($WinTitle, "") Then
    HotKeySet("{F10}", "_screenshot")
    Else
    HotKeySet("{F10}")
    EndIf
    Sleep(20)
    WEnd

    Klar... Telnet wird ausgeführt, schliesst aber das Fenster sofort nach dem Umbenennen wieder... mangels fehlendem externen Gerät.


    aber was mich wundert ist, wo kommt das her, dass $i immer wieder auf den Startwert geht. Vom Button kann es nicht kommen, der wird nur ein mal geklickt.... bin gerade zu doof dafür, das zu verstehen. :-(

    Hallo,


    nein, das ist es nicht. Das ConsoleWrite() ist noch ein Überbleibsel, um die Übergabe zu kontrollieren.


    Jetzt hab ich mir mal eine MsgBox ausgeben lassen mit $i... öhm... Die wird runter gezählt, aber bekommt immer wieder den Startwert?!? Hä???

    Haltet mich für doof, aber irgenwie krieg ich das gerade nicht gepeilt....


    Ich habe einen Button, der ein telnet-Fenster öffnet und eine Exe auf einem externen Gerät ausführt.


    Dieser Befehl soll nur ein einziges Mal ausgeführt werden, auch wenn gerade keine Telnet-Verbindung möglich sein sollte.
    In diesem Fall würde nämlich die telnet-Verbindung sehr oft hintereinander ausgeführt und der Zugriff auf das Programm nicht mehr möglich.
    Als hab ich mir das so gedacht, dass ich eine For...To...Step-schleife einbaue, die lediglich einmal ausgeführt werden soll:


    Func _telnet()
    ; Run Telnet
    Local $i
    For $i = 2 To 1 Step -1
    Run("telnet " & $adress, @SystemDir, $STDIN_CHILD + $STDOUT_CHILD) ; @SW_HIDE,
    ConsoleWrite("Telnet" & $adress & @CRLF)
    WinWait("Telnet " & $adress, "", 1)
    ;======= Rename window
    $WinTitle = "Telnet connection to MIB target <<- Screenshot ->>"
    WinSetTitle("Telnet " & $adress, "", $WinTitle)
    Next
    EndFunc ;==>_telnet


    Warum geht das nicht??? Helft mir mal bitte aufs Pferd.... :wacko:
    Telnet wird am laufenden Band aufgerufen... ?(

    Moin zusammen,


    die Func hab ich dann wieder verworfen und noch mal in Ruhe gesucht.
    Hab auch was für meine Bedürfnisse gefunden und angepasst....



    Das tut es für mich ganz prächtig... das Telnet-Fenster poppt kurz auf und schickt meine Befehle zum externen Gerät.
    Also noch mal vielen Dank für Eure Hilfe und Denkanstösse.

    Hallo Leute,


    ich sitze da mal wieder vor einem Problem...


    Folgendes Szenario:


    Ich öffne beim Start meines Prgrammes eine Telnet-Verbindung zu einem Netzwerk-Gerät, welches ich nur über Telnet bedienen kann.
    Die Telnet-Verbindung wird aufgebaut:
    $conn_create = Run('telnet 192.168.1.4', @SystemDir, @SW_HIDE, $STDIN_CHILD + $STDOUT_CHILD);@SW_HIDE,
    If @error Then
    MsgBox(16, "Attention!", "No TELNET connection!" & @CRLF & "Please be sure that your computer is well configured" & @CRLF & " and your connection is running!", 20)
    EndIf
    Sleep(500)


    Die Telnet-Verbindung wird also über @SW_HIDE geöffnet.


    Im Programm habe ich dann einen Button, der über Telnet eine Exe ausführen soll.
    Allerdings ist das Telnet-Fenster ja nicht aktiv, die SEND-Befehle gehen also nciht ans Telnet-Fenster, sondern landen auf meiner Gui...


    Wie bekomme ich das hin, dass die Befehle ans Telnet gehen und auf dem externen Gerät abgearbeitet werden? ?(


    Fragen? Fragen!


    Cheers

    Auch Dir ein frohes neues Jahr.


    Den Backslash hatte ich im Original auch eingefügt.... Komischerweise lief mir das NUR im Testscript in meine Fehlerroutine.
    Im Original-Script wurde der Pfad einfach am Dateinamen vorangestellt und im ScriptDir abgelegt....


    Da hab ich dann gemerkt, dass der Backslash gefehlt hat... :rolleyes:

    Hallo autoBert,


    hab den Kram mal in das eigentliche Programm eingefügt... und siehe da, es funktioniert jetzt.


    Woran das jetzt gelegen hat weiss ich zwar immer noch nicht... aber es funzt...


    Danke für Deine Hilfe!