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

Beiträge von zawn

  • Dekompilieren für Eigenbedarf nicht mehr möglich? Alternative?

    • zawn
    • 24. Januar 2014 um 08:18

    Danke euch zwei! :rolleyes:

    Edit: Obfuscator mit Parameter /MO funktioniert einwandfrei! :thumbup:

  • Dekompilieren für Eigenbedarf nicht mehr möglich? Alternative?

    • zawn
    • 23. Januar 2014 um 13:21

    BigRox:

    Du hast jetzt quasi genau das Gleiche nochmal gefragt, wie ich oben.
    Beim Kompilieren treten diese Fehler wohl nicht auf, da der Fehler nicht im Hauptablauf des Programms zu finden ist, sondern in irgendwelchen Funktionen, die eben nur unter bestimmten Bedingungen ausgeführt werden.

    Was dir i2c mit dem Link sagen will, ist dass water deine (und damit auch meine) Frage oben schon beantwortet hat.

    Du klickst rechts auf deine au3-Datei. Dann wählst du "Compile with Options". Dann in den Reiter "Obfuscator". Hier "Run Obfuscator before compilation" anhaken. Dann in das Feld "Obfuscator Parameters" folgendes schreiben "/striponly" (ohne Anführungszeichen).
    Dann klickst du unten auf "Compile Script". Du solltest nun im Scriptverzeichnis ein File finden, das "DeinScript_Obfuscated.au3" heisst.

    Wenn du dieses File anschaust, solltest du nun sehen, dass sich die Fehlerzeile hier finden lässt :)
    Ich hoffe, ich habe es richtig verstanden/erklärt.

    Grüße
    Patrick

    Edit: mit /striponly hat meine Datei dann zwar immerhin 740 Zeilen, aber die Zeile aus dem Errorcode (8326) kann ich hier trotzdem noch nicht lokalisieren :(
    Hab ich was vergessen?

  • Dekompilieren für Eigenbedarf nicht mehr möglich? Alternative?

    • zawn
    • 23. Januar 2014 um 11:09

    BugFix : Ich möchte mir von dir hier ungern unterstellen lassen, dass mir das Wort Lizenz "total am Arsch vorbeigeht".
    Ich glaube nicht, dass es völlig uninteressant ist wessen Script hier dekompiliert wird, da es hier um geistiges Eigentum geht und nicht nur um die EULA von AutoIT.

    Ich will hier jetzt keine Grundsatzdiskussion heraufbeschwören, aber ich dachte, dass das im Rahmen der Fehlersuche bei meinen eigenen Programmen vertretbar gewesen wäre, da es sich bei dem Script ja um mein eigenes geistiges Eigentum handelt.

    Danke an i2c für die Aufklärung.

    Es ging mir im Großen und Ganzen um eine Möglichkeit herauszufinden wie ich denn diese Fehlerzeile finde, wenn mein Code in der Rohform doch nur 220 Zeilen hat.
    Diese Frage wurde beantwortet.

    Dankeschön!

  • Dekompilieren für Eigenbedarf nicht mehr möglich? Alternative?

    • zawn
    • 23. Januar 2014 um 10:26

    Wenn es nicht meine Scripte wären, würde ich doch nach einem anderen Decompiler fragen und nicht nach einer Alternative um den kompletten Code (inclusive Includes) zu sehen.

    Damit mir das nun auch jeder glaubt, hier der Error um den es geht.

    [Blockierte Grafik: http://s7.directupload.net/images/140123/yngkbc2c.png]

    Spoiler anzeigen
    [autoit]

    ;Includes
    #include <OutlookEX.au3>
    #include <File.au3>
    #include <Misc.au3>

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

    ;Tray-Menü ausblenden
    Opt("TrayMenuMode", 1)

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

    ;Nur eine Instanz von PDF-Print erlauben
    _Singleton("PDF Print", 0)

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

    ;Globale Variablen deklarieren
    Global $inbox = "Postfach - Invoice\Posteingang"
    Global $PSTname = "done"
    Global $recipient1 = "xxxxxxxx@email.de"
    Global $recipient2 = "xxxxxxxx@email.de"
    Global $recipient3 = "xxxxxxxx@email.de"
    Global $recipient4 = "xxxxxxxx@email.de"

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

    ;Running in ini auf 0 setzen
    IniWrite(@ScriptDir & "\PDF Print.ini", "Settings", "Running", "0")

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

    ;Netzlaufwerk Z entfernen
    DriveMapDel("Z:")
    ;Netzlaufwerk Z mappen
    $error = DriveMapAdd("Z:", "\\server\share$\XCH_Invoice", 1)

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

    ;wenn Netzlaufwerk Z nicht verfügbar
    If $error <> 1 Then
    ;Messagebox mit Fehlerinformation anzeigen
    MsgBox(0, "Fehler", "Z-Laufwerk nicht verfügbar.")
    ;Programm beenden
    Exit
    EndIf

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

    ;Endlosschleife
    While 1

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

    ;Outlook-Handle erzeugen
    Global $oOutlook = _OL_Open()

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

    ;Prüfen, ob mehr als 1024MB Speicher auf Z: (\\server\share$\XCH_Invoice) frei und ob das Laufwerk verfügbar ist
    If DriveSpaceFree("Z:") > 1024 And DriveStatus("Z:") = "READY" Then

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

    ;Alle Mails aus dem Posteingang einlesen
    Global $aOL_Item = _OL_ItemFind($oOutlook, $inbox, $olMail, "", "", "", "EntryID")

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

    ;wenn Mails vorhanden
    If $aOL_Item[0][0] <> 0 Then

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

    ;Running in ini auf 1 setzen
    IniWrite(@ScriptDir & "\PDF Print.ini", "Settings", "Running", "1")

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

    ;Attachments auslesen
    For $i = 1 To UBound($aOL_Item) - 1
    $attachments = _OL_ItemAttachmentGet($oOutlook, $aOL_Item[$i][0], Default)
    ;Attachments in spool-Verzeichnis speichern
    For $j = 1 To UBound($attachments) - 1
    ;Zeitstempel setzen
    $timestamp = @YEAR & @MON & @MDAY & @HOUR & @MIN & @SEC & @MSEC
    _OL_ItemAttachmentSave($oOutlook, $aOL_Item[$i][0], Default, $j, @ScriptDir & "\spool" & $timestamp & "_" & $attachments[$j][1])
    Sleep(50)
    Next

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

    ;500ms warten
    Sleep(500)

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

    ;Sicherheit, dass die Mail verschoben wurde

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

    ;Zählvariable auf 0 setzen
    $zaehl = 0
    ;Fehlervariable auf 0 setzen
    $return = 0

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

    ;Solange Fehler besteht
    While $return = 0
    ;Outlookhandle schließen
    _OL_Close($oOutlook)
    ;1 Sekunde warten
    Sleep(1000)
    ;Outlookhandle erstellen
    Global $oOutlook = _OL_Open()
    ;2 Sekunden warten
    Sleep(1000)
    ;E-Mail in done-PST verschieben
    $return = _OL_ItemMove($oOutlook, $aOL_Item[$i][0], Default, $PSTname)
    MsgBox(0, "Verschiebe E-Mail...", "Verschiebe E-Mail in done-Ordner..." & @CR & @CR & "Error: " & @error & @CR & @CR & "Extended: " & @extended, 2)
    ;Zählvariable um 1 erhöhen
    $zaehl = $zaehl + 1

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

    ;wenn mehr als 10 mal Fehler
    If $zaehl > 10 Then
    ;outlook.exe beenden
    ProcessClose("outlook.exe")
    ;warten bis outlook.exe beendet ist
    ProcessWaitClose("outlook.exe")
    ;5 sekunden warten
    Sleep(5000)
    EndIf

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

    WEnd

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

    Next

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

    Else
    ;Running in ini auf 0 setzen
    IniWrite(@ScriptDir & "\PDF Print.ini", "Settings", "Running", "0")

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

    EndIf

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

    ;500ms warten
    Sleep(500)

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

    ;Alle Dateien im Spool-Verzeichnis in Array lesen
    $allfiles = _FileListToArray(@ScriptDir & "\spool")

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

    For $i = 1 To UBound($allfiles) - 1
    ;Wenn Datei nicht pdf,tif oder tiff
    If StringRight($allfiles[$i], 4) <> ".pdf" And StringRight($allfiles[$i], 4) <> ".tif" And StringRight($allfiles[$i], 5) <> ".tiff" Then
    ;Datei nach not_printed verschieben und Zeitstempel in Dateinamen setzen
    FileMove(@ScriptDir & "\spool" & $allfiles[$i], "Z:\not_printed" & $allfiles[$i], 1)
    ;wenn Dateigröße über 10kb
    If FileGetSize("Z:\not_printed" & $allfiles[$i]) > 10240 Then
    ;E-Mail an Fr. xxxx schicken mit Pfad zur Datei
    _OL_Wrapper_SendMail($oOutlook, $recipient1, "", "", "Invoice - Mail mit falschem Anhang", "Sie haben im Invoice-Postfach eine Nachricht mit einem falschen Anhang (kein PDF) erhalten: \\server\share$\XCH_Invoice$\XCH_Invoice\not_printed" & StringTrimLeft($allfiles[$i], 18), "")
    ;500ms warten
    Sleep(500)
    ;E-Mail an Fr. xxxxx schicken mit Pfad zur Datei
    _OL_Wrapper_SendMail($oOutlook, $recipient2, "", "", "Invoice - Mail mit falschem Anhang", "Sie haben im Invoice-Postfach eine Nachricht mit einem falschen Anhang (kein PDF) erhalten: \\server\share$\XCH_Invoice\not_printed" & $allfiles[$i], "")
    ;500ms warten
    Sleep(500)
    EndIf
    EndIf
    Next

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

    ;restliche Files im Spool-Verzeichnis in Array lesen (nur noch pdf,tif und tiff
    $printfiles = _FileListToArray(@ScriptDir & "\spool")

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

    For $i = 1 To UBound($printfiles) - 1
    ;Variable mit Pfad zum bin-Verzeichnis
    $path = @ScriptDir & "\bin"
    ;Input-File definieren
    $input_file = @ScriptDir & "\spool" & $printfiles[$i]
    ;Output-File definieren und umbenennen
    $output_file = @ScriptDir & "\spool\temp_" & $printfiles[$i]
    ;Wasserzeichen definiseren
    $watermark = @MDAY & "/" & @MON & "/" & @YEAR & " " & @HOUR & ":" & @MIN

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

    ;Imagemagicks Convert.exe aufrufen, Datei in Graustufen umwandeln, Wasserzeichen einfügen und normalisieren (Kontrast verbessern)
    RunWait($path & '\im\convert.exe -compress jpeg -quality 100 -density 300 -colorspace gray -normalize -font Helvetica-Bold -pointsize 14 -fill white -stroke black -gravity North -strokewidth 3 -draw "text 50,50 ' & Chr(39) & $watermark & Chr(39) & '" "' & $input_file & '" "' & $output_file & '"', "", @SW_HIDE)

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

    ;Input-File löschen
    FileDelete($input_file)

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

    ;Datei nach Umwandlung wieder zurückbenennen
    FileMove($output_file, $input_file, 1)

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

    ;mit Poppler-Toolkit PDF-Größe verringern
    RunWait($path & '\poppler\pdftocairo.exe -pdf -r 300 -noshrink -origpagesizes "' & @ScriptDir & '\spool\' & $printfiles[$i] & '" "' & @ScriptDir & '\spool\temp_pop.pdf"', "", @SW_HIDE)

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

    ;Input-File löschen
    FileDelete(@ScriptDir & "\spool" & $printfiles[$i])

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

    ;Datei nach Umwandlung wieder zurückbenennen
    FileMove(@ScriptDir & "\spool\temp_pop.pdf", @ScriptDir & "\spool" & $printfiles[$i], 1)

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

    ;wenn Dateigröße der generierten pdf-Datei über 4KB
    If FileGetSize(@ScriptDir & "\spool" & $printfiles[$i]) > 10240 Then
    ;Sumatra-PDF aufrufen und Datei auf Standard-Drucker ausdrucken
    RunWait($path & '\SumatraPDF.exe -print-to-default -exit-on-print "' & @ScriptDir & '\spool\' & $printfiles[$i] & '"', "", @SW_HIDE)

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

    ;500ms warten
    Sleep(500)

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

    ;Datei in printed-Verzeichnis verschieben
    FileMove(@ScriptDir & "\spool" & $printfiles[$i], "Z:\printed" & $printfiles[$i], 1)

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

    ;wenn Dateigröße der generierten pdf-Datei über 4KB
    Else
    ;E-Mail an Hr. xxxxx
    _OL_Wrapper_SendMail($oOutlook, $recipient3, "", "", "Invoice - PDF-Druckproblem", "Sie haben im Invoice-Postfach eine Nachricht mit einem PDF-Anhang erhalten, der nicht gedruckt werden konnte: " & StringTrimLeft($printfiles[$i], 18), "")
    Sleep(500)

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

    ;Datei in error-Verzeichnis verschieben
    FileMove(@ScriptDir & "\spool" & $printfiles[$i], "Z:\error" & $printfiles[$i], 1)
    EndIf

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

    ;500ms warten
    Sleep(500)
    Next

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

    ;Wenn weniger als 1024MB auf Z: frei
    ElseIf DriveSpaceFree("Z:") < 1024 Then

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

    ;E-Mail an xxxxxx schicken
    _OL_Wrapper_SendMail($oOutlook, $recipient3, "", "", "Backuptool-Share fast voll!", "\\server\share$\ nur noch 1GB frei! Bitte sofort Speicher frei machen!", "")
    ;500ms warten
    Sleep(500)
    ;E-Mail an xxxxxx schicken
    _OL_Wrapper_SendMail($oOutlook, $recipient4, "", "", "Backuptool-Share fast voll!", "\\server\share$ nur noch 1GB frei! Bitte sofort Speicher frei machen!", "")

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

    ;Wenn Z-Laufwerk nicht verfügbar
    ElseIf DriveStatus("Z:") <> "READY" Then

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

    ;15 Sekunden Messagebox anzeigen und fragen ob Programm beendet werden soll
    $errorbox = MsgBox(0, "Fehler", "Z-Laufwerk nicht verfügbar." & @CR & @CR & "Tool wird in 15 Sekunden neu gestartet." & @CR & @CR & "Tool beenden?", 15)
    ;Wenn OK gedrückt wurde, Programm beenden
    If $errorbox = 1 Then Exit

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

    EndIf

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

    ;Outlook-Handle schließen
    _OL_Close($oOutlook)

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

    ;5 Sekunden warten
    Sleep(5000)

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

    ;Ende der Endlosschleife
    WEnd

    [/autoit]

    Das Tool wartet, bis eine neue Mail im Postfach ankommt. Läd dann alle Anhänge in einen Ordner. Verschiebt alle nicht-pdfs oder nicht-tiffs.
    Dann fügt es automatisch eine Wasserzeichen (Datumsstempel) ein und druckt die Rechnung aus. So viel dazu.

    Das Script ist mit Kommentaren und Leerzeilen 220 Zeilen lang.
    Errormeldung zeigt aber Zeile 8326.

    Meine Frage war nun, wie ich herausfinde, welche Zeile im Script es nun wirklich ist...

    Schon schön, wie immer gleich alle abgehen, wenn das Wort "Decompiler" fällt...
    Ich bin mir schon bewusst, dass es illegal ist, damit Programme zu decompilieren, die nicht mein eigenes geistiges Eigentum sind...
    Danke Homelike Jester für die sehr hilfreiche Aufklärung.

    Dankeschön trotzdem für die Antworten (vor allem water). Auch für die super Outlook UDF :)
    Grüße!

  • Dekompilieren für Eigenbedarf nicht mehr möglich? Alternative?

    • zawn
    • 23. Januar 2014 um 09:07

    Hallo Freunde,

    ich habe eine kurze Frage.
    Da ich öfter Scripte schreibe, nehme ich zum Bugfixing oft das Exe2Aut Decompiler-Tool für meine eigenen Scripte.

    Wenn die kompilierte Exe-Datei einen Fehler wirft (z.B. Error in Zeile 8103) habe ich früher die exe-Datei in den Decompiler geworfen und dann nach der Zeile gesucht, da ja hier dann auch die Includes usw. mit aufgeführt sind.
    Seit ich die Autoit Version 3.3.10.2 installiert habe, kann ich die exe-Dateien aber nicht mehr mit dem Tool dekompilieren (Error).

    Gibt es eine andere Möglichkeit, sich den kompletten Code (inklusive Includes usw.) anzeigen zu lassen, bei der dann auch die Zeilenangabe im Errorcode nachvollziehbar ist?

    Danke schonmal + Grüße
    Patrick

  • Software aus Registry auslesen, in Textdatei schreiben und filtern

    • zawn
    • 24. September 2012 um 10:10

    Genial! :) Vielen Dank für die schnelle Antwort! :)

  • Software aus Registry auslesen, in Textdatei schreiben und filtern

    • zawn
    • 21. September 2012 um 15:55

    Servus liebe Leute,

    ich habe ein kleines Problem, bei dem ich gar nicht weiss, wie ich weitermachen soll.
    Ich schreibe für meine Firma gerade ein Backuptool. Das Tool sichert persönliche Ordner aus Outlook (mit der OutlookEx UDF), Eigene Dateien, Favoriten, Desktop, nk2-Datei usw. auf einen Sicherungsserver und setzt dort noch einige Berechtigungen mittels eines Serviceusers.

    Funktioniert auch alles schon ne Zeit lang ziemlich gut. Das Problem ist nun, dass eine Funktion gewünscht wurde um die Software auf dem jeweiligen PC des Users auszulesen und in eine Textdatei zu schreiben.

    Den Großteil habe ich schon. Software wird aus der Registry (Uninstall-Key) des Users ausgelesen und auf dem Sicherungsserver in eine txt gespeichert.
    Jetzt stehen hier aber auch noch 10000 Sicherheitsupdates usw. drin, die keinen Menschen interessieren :)

    Hier mal die Funktion:

    Spoiler anzeigen
    [autoit]


    ;Installierte Software auslesen
    Func _GetSoftware()

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

    $sBaseKey = "HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall\"

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

    $iKey = 1
    $sSoftwareName = ""
    $sLogfile = "\\SICHERUNGSSERVER\FREIGABENAME$\"&@UserName&"\software.txt"
    $hFile = FileOpen ( $sLogfile, 10 )
    if @error Then
    MsgBox ( 64, "Fehler", "Konnte Datei nicht öffnen.",Default,$Form1)
    Exit
    EndIf

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

    while 1
    $sKey = RegEnumKey ( $sBaseKey , $iKey )
    if @error then ExitLoop
    $sDisplayName = RegRead ( $sBaseKey & "\" & $sKey , "DisplayName")
    if @error Then
    $sDisplayName = RegRead ( $sBaseKey & "\" & $sKey , "QuietDisplayName")
    if @error then
    $iKey += 1
    ContinueLoop
    EndIf
    EndIf
    FileWriteLine ( $hFile, $sDisplayName & @crlf)
    $iKey += 1
    WEnd

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

    EndFunc

    [/autoit]

    Damit habe ich schonmal die Textdatei.

    Wie kann ich diese Datei jetzt filtern? Zum Beispiel alle Zeilen in der Textdatei löschen, die mit "Sicherheitsupdate blablabla" anfangen?
    Oder macht es Sinn lieber vorher das Array zu filtern, welches dann in die Textdatei geschrieben wird? Wenn ja, wie? :)

    Vielen Dank schonmal für die Hilfe!

    Grüße
    Patrick

  • Script in Systray minimieren

    • zawn
    • 11. Dezember 2009 um 13:13

    Ihr seid die besten :D
    Da hätt ich eigentlich selber drauf kommen können. ^^

    Vielen vielen Dank :)

  • Script in Systray minimieren

    • zawn
    • 11. Dezember 2009 um 12:58

    Servus :)

    da ich noch blutiger Anfänger beim AutoIT-Scipten bin, wollte ich hier mal nachfragen, ob ihr mir bei einem Problem helfen könnt.
    Ich komm einfach nicht weiter, aber ist wahrscheinlich nur ne ganz kleine Sache ^^

    Und zwar habe ich quasi ein GUI gemacht mit 4 Buttons. Die sind derzeit nur mit msgboxen zum testen belegt.
    Das wichtigste ist, dass das Script in den Systray minimiert werden und auch wieder aufgerufen werden kann.

    Das funktioniert auch schon ganz gut, aber irgendwie funktionieren meine Buttons nicht mehr, seit ich die Funktion für die Minimierung benutze.
    Ich hab schon ewig rumprobiert, ob ich vielleicht etwas in der falschen Reihenfolge habe oder Ähnliches, aber ich hab nix gefunden :(

    So sieht mein Code aus:

    [autoit]


    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <GuiStatusBar.au3>
    #include <WindowsConstants.au3>
    #include <GuiToolbar.au3>
    #include <Constants.au3>
    Opt("TrayAutoPause", 0)
    Opt("TrayMenuMode", 1)

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

    GuiCreate("Programmname", 250, 80)
    GuiSetState(@SW_SHOW)

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

    $Button_1 = GuiCtrlCreateButton("Button1", 5, 5, 100, 30)
    $Button_2 = GuiCtrlCreateButton("Button2", 5, 45, 100, 30)
    $Button_3 = GuiCtrlCreateButton("Button3", 145, 5, 100, 30)
    $Button_4 = GuiCtrlCreateButton("Button4", 145, 45, 100, 30)

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

    $foo = TrayCreateItem("Restore Window")
    TrayItemSetState(-1, $TRAY_DEFAULT)
    TraySetClick ( 0 )
    TraySetToolTip("Programmname")

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

    While 1
    $trayMsg = TrayGetMsg()
    If $trayMsg = $foo Then
    GuiSetState(@SW_SHOW);show GUI
    Opt("TrayIconHide", 1);hide tray icon
    EndIf

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

    $msg = GuiGetMsg()
    If $msg = $GUI_EVENT_CLOSE Then Exit

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

    If $msg = $GUI_EVENT_MINIMIZE Then
    GuiSetState(@SW_HIDE);hide GUI
    Opt("TrayIconHide", 0);show tray icon
    EndIf
    WEnd

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

    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $Button_1
    MsgBox(0, 'testing1', 'test1')
    Case $msg = $Button_2
    MsgBox(0, 'testing2', 'test2')
    Case $msg = $Button_3
    MsgBox(0, 'testing3', 'test3')
    Case $msg = $Button_4
    MsgBox(0, 'testing4', 'test4')
    EndSelect
    WEnd

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

    GuiSetState()
    While GuiGetMsg() <> $GUI_EVENT_CLOSE
    WEnd

    [/autoit]
  • Problem. Druckprogramm copy LPT2

    • zawn
    • 30. April 2009 um 14:01

    Jop stimmt. Hab ich auch bemerkt. Wie gesagt ich bin ein ziemlich blutiger Anfäger in Sachen AutoIT.
    Danke euch beiden! Jetzt funktionierts auch wenn man nicht über den Durchsuchen-Button den Pfad auswählt!

    Grüße
    Patrick

  • Problem. Druckprogramm copy LPT2

    • zawn
    • 30. April 2009 um 10:57

    jawoll! schnuffel du bist ein gott! funktioniert so optimal.

    vielen vielen vielen dank!

  • Problem. Druckprogramm copy LPT2

    • zawn
    • 30. April 2009 um 10:40

    ja das war auch so ein problem. aber das größte problem ist, dass ich nicht weiss wie ich den pfad, den ich oben in der inputbox oder im fileopendialog einzulesen versuche in eine variable speichere. in der variable path steht nix drin und bei der variable open bringt er mir immer fehler und sagt, dass sie nicht deklaiert wäre. aber ich weise der open-variable doch oben den inhalt der inputbox zu oder? oder funktioniert das so nicht..? :(

  • Problem. Druckprogramm copy LPT2

    • zawn
    • 30. April 2009 um 10:14

    Hallo liebe Leute!

    Ich bin neu hier im Forum und hab auch gleich ein Problem, bei dem ich hoffe, dass ihr mir helfen könnt.

    Also als erstes ein bisschen zum meinem Programm. Ich hab von meinem Chef den Auftrag bekommen hpgl-Dateien (CAD-Dateien, die unsere Technischen Zeichner erstellen) auszudrucken. Das Ganze ist leider nicht so einfach und ich hab relativ lang gebraucht bis ich das gelöst hatte.

    Ich habe den Drucker, auf dem die Datei gedruckt werden soll bei mir am PC installiert, unter windows mit einem freigabenamen freigegeben und dann meinen lpt2 port auf den drucker im netz, mit net use im cmd (net use LPT2 \\meineipadresse\druckerfreigabename) umgeleitet.
    das funktioniert auch ganz gut und ich kann im cmd die dateien mit dem copybefehl (copy C:\test.hpgl LPT2) an den drucker im netz schicken und der druckt das dann auch wie gewünscht aus.

    Soweit so gut... Jetzt hat mir mein Chef aufgetragen da ein GUI für unsere Technischen Zeichner zu basteln und da ich schon mal was in AutoIT automatisiert hab und ich weiss, dass das damit sehr einfach gehen müsste hab ich einfach mal losgelegt.

    Man soll im Programm nur eine Inputbox, einen Durchsuchen-Button und einen Drucken-Button haben.
    Der Durchsuchen-Button soll halt einen FileOpenDialog öffnen in dem man das zu druckende hpgl-file auswählt und der pfad dann in die inputbox geschrieben werden.
    man sollte den pfad auch manuell ohne durchsuchen-button eingeben können.
    wenn der pfad dann in der inputbox steht (was ja auch schon funktioniert) soll mit einem click auf den drucken-button der cmd befehl mit dem eingegebenen pfad zu der hpgl datei ausgeführt werden.

    mein quelltext sieht jetzt so aus, aber ich weiss nicht, wie ich das eingegebene in die inputbox oder den pfad von dem ausgewählten file durch den fileopendialog in eine variable speichere, die ich dann in meinen cmd-befehl einbinden kann.
    Wie gesagt, ich bin absoluter anfänger :wacko: , also bitte nicht schimpfen ^^

    [autoit]

    #include <GuiConstantsEx.au3>
    #include <AVIConstants.au3>
    #include <TreeViewConstants.au3>
    #include <WindowsConstants.au3>

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

    Opt("GUIOnEventMode", 1)

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

    ;Gui Create
    GuiCreate("HPGL-Print", 500, 100)
    GuiSetIcon(@SystemDir & "\rtcshare.exe", 0)

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

    GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")

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

    ;Label
    GuiCtrlCreateLabel("Bitte den Pfad zur zu druckenden hpgl-Datei angeben:", 10, 20, 400, 20)

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

    ;Textbox
    $input = GUICtrlCreateInput("", 10, 35, 400, 20)

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

    ;Durchsuchenbutton
    $Button_D = GUICtrlCreateButton("Durchsuchen", 415, 35, 80, 20)
    GUICtrlSetonEvent($Button_D, "Durchsuchenbutton")

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

    ;Druckenbutton
    $Button_P = GUICtrlCreateButton("Drucken", 200, 70, 80, 20)
    GUICtrlSetonEvent($Button_P, "Druckenbutton")

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

    GUISetState(@SW_SHOW)

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

    Func Durchsuchenbutton()
    $open = FileOpenDialog("HPGL-Datei auswählen...", @DesktopDir, "HPGL (*.hpgl)")
    GUICtrlSetData($input, $open)
    EndFunc

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

    $path = GUICtrlRead($input)

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

    Func Druckenbutton()
    RunWait(@COMSPEC & " /c Dir C:\")
    ;RunWait(@COMSPEC & " /c copy "$path" LPT2")
    ;MsgBox(0, "", $path)
    EndFunc

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

    Func CLOSEClicked()
    Exit
    EndFunc

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

    ;Gui End

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

    While GuiGetMsg() <> $GUI_EVENT_CLOSE
    WEnd

    [/autoit]

    ich hab auch schon rumgegooglet und in der autoit-hilfe nachgeschaut, aber irgendwie find ich nicht das was ich brauch oder ich weiss ned genau nach was ich suchen muss :wacko:

    vielen dank schonmal im vorraus :)
    grüße patrick

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™