1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Pitter

Beiträge von Pitter

  • PNG ohne Rahmen darstellen

    • Pitter
    • 22. Januar 2012 um 20:15

    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

  • PNG ohne Rahmen darstellen

    • Pitter
    • 21. Januar 2012 um 18:56

    Grandios!!! So funktioniert das jetzt.
    Verstanden habe ich das auch... denn einfach nur C&P ist nicht mein Ding.


    Herzlichen Dank! :thumbup::thumbup::thumbup:

  • PNG ohne Rahmen darstellen

    • Pitter
    • 21. Januar 2012 um 16:10

    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:

    Spoiler anzeigen
    [autoit]


    _Main()

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

    Func _Main()
    ;====== set gui
    ;============================
    $WinMain = GUICreate($progname, 1200, 800, -1, -1)
    GUISetBkColor(0x232A30) ;darkgrey
    ;============
    ;=== hier kommen dann die ganzen Controls, wie Buttons und Textfelder
    ;============
    ;======================== end button create ======================================

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

    GUISetState()

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

    ;======== show dummy.png ==========
    _GDIPlus_Startup()
    $pic2 = @ScriptDir & "\Testbild.png"
    $hGraphic1 = _GDIPlus_GraphicsCreateFromHWND($WinMain)
    $hImage = _GDIPlus_ImageLoadFromFile($pic2)
    _GDIPlus_GraphicsDrawImageRect($hGraphic1, $hImage, 615, 545, 400, 240)
    GUIRegisterMsg($WM_ERASEBKGND, "_Redraw")
    ;===================================

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

    ;=============================== Events ==========================================
    ;============================= end events =================================
    EndFunc ;==>_Main

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

    ;======= func restore image on WinMain
    Func _Redraw()
    _GDIPlus_GraphicsDrawImageRect($hGraphic1, $hImage, 615, 545, 400, 240)
    Return 1
    EndFunc ;==>_redraw

    [/autoit]

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

  • PNG ohne Rahmen darstellen

    • Pitter
    • 20. Januar 2012 um 13:51

    ;( .... hmmm....

    Da krieg ich keinen Kopf dran..

    Ich rufe das Startbild folgendermassen auf:

    [autoit]


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

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

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

    [/autoit]


    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:

  • PNG ohne Rahmen darstellen

    • Pitter
    • 19. Januar 2012 um 21:29

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

    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?

  • PNG ohne Rahmen darstellen

    • Pitter
    • 19. Januar 2012 um 20:24

    Danke für Deine Antwort!

    Mit GDI hab ich noch nie gearbeitet... da muss ich mich mal "reinquälen"... :(

    Das PNG muss ich eh auf dem PC speichern, also ist das eh egal, oder?

  • PNG ohne Rahmen darstellen

    • Pitter
    • 19. Januar 2012 um 20:04

    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

  • Problem mit einer For...To...Step-Schleife

    • Pitter
    • 19. Januar 2012 um 19:54

    Passt perfekt...

    geht der Ping nicht durch, kann ich nur durch einen weiteren Klick dann die Verbindung erneut anstossen....

    Vielen Dank für Eure Hilfe

    Gruß
    Pitter

  • Problem mit einer For...To...Step-Schleife

    • Pitter
    • 18. Januar 2012 um 13:57

    Das mit dem Ping ist ne gute Idee...

    Werde ich prüfen und gebe Rückmeldung. Danke! ;)

  • Problem mit einer For...To...Step-Schleife

    • Pitter
    • 18. Januar 2012 um 08:21

    ...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....

  • Problem mit einer For...To...Step-Schleife

    • Pitter
    • 17. Januar 2012 um 22:14

    Hallo autoBert,

    habs mal bis morgen in Pastebin gesetzt...

    Pastebin

  • Problem mit einer For...To...Step-Schleife

    • Pitter
    • 17. Januar 2012 um 20:58

    hmmm...

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

    Hier ist noch der Button, der die _telnet() aufruft:

    [autoit]

    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

    [/autoit]
  • Problem mit einer For...To...Step-Schleife

    • Pitter
    • 17. Januar 2012 um 20:48

    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. :(

  • Problem mit einer For...To...Step-Schleife

    • Pitter
    • 17. Januar 2012 um 20:42

    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ä???

  • Problem mit einer For...To...Step-Schleife

    • Pitter
    • 17. Januar 2012 um 20:31

    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:

    [autoit]

    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

    [/autoit]

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

  • Telnet-Verbindung innerhalb eines Programmes "silent" bedienen

    • Pitter
    • 14. Januar 2012 um 11:58

    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....

    Spoiler anzeigen
    [autoit]


    _main()
    .
    .
    .
    snip
    Case $ConnButton ;===== Connect PC with second
    ;===== open Telnet to connect to target
    _telnet()
    Case $screenButton ;====== Take Screenshot ======
    ;===== call func _screen_dateset to get actual timestamp
    _screen_dateset()
    ;===== call func _screenshot to take screenshot
    _screenshot()
    ;=====
    While WinExists($WinTitle, "")
    If WinActive($WinTitle, "") Then
    HotKeySet("{F10}", "_screenshot")
    Else
    HotKeySet("{F10}")
    EndIf

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

    WEnd
    snap
    .
    .
    .
    EndFunc

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

    ;======= Func to open telnet connection
    Func _telnet()
    ; Run Telnet
    Run("telnet 192.168.1.4", @SystemDir, $STDIN_CHILD + $STDOUT_CHILD)

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

    ;======= Rename window
    $WinTitle = "Telnet connection <<- Screenshot ->>"
    WinWait("Telnet 192.168.1.4", "")
    WinSetTitle("Telnet 192.168.1.4", "", $WinTitle)
    WinActivate($WinTitle)
    EndFunc ;==>_telnet

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

    ;======== take screenshot
    Func _screenshot()
    $Screenshot_name = GUICtrlRead($Screendate)
    xSend($WinTitle, "cd test" & "{ENTER}")
    xSend($WinTitle, "screenshot.exe " & $Picpath & $Screenshot_name & ".png" & "{ENTER}")
    GUICtrlDelete($Screendate)
    WinClose($WinTitle, "")
    EndFunc ;==>_screenshot

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

    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.

  • Telnet-Verbindung innerhalb eines Programmes "silent" bedienen

    • Pitter
    • 9. Januar 2012 um 19:39

    Interessante Func...

    Muss ich mal versuchen einzubauen und anzupassen.
    Vielen Dank aber erst mal für Deine Hilfe! :thumbup:

    Cheers

  • Telnet-Verbindung innerhalb eines Programmes "silent" bedienen

    • Pitter
    • 8. Januar 2012 um 20:41

    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:

    [autoit]

    $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)

    [/autoit]

    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

  • Problem mit _FTP_FileGet()

    • Pitter
    • 5. Januar 2012 um 14:08

    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:

  • Problem mit _FTP_FileGet()

    • Pitter
    • 5. Januar 2012 um 12:44

    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!

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™