Problem. Druckprogramm copy LPT2

  • 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

    Einmal editiert, zuletzt von zawn (30. April 2009 um 10:58)

  • Ich habe es jetzt nicht extra probiert, aber dein Fehler scheinen nur die fehlenden "&" zu sein. Anführungszeichen sind bei möglichen Leerzeichen in Ordnernamen auch nicht zu verachten. Hier eine mögliche Lösung:

    [autoit]

    RunWait(@COMSPEC & ' /c copy "' & $path & '" LPT2')

    [/autoit]

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

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

    Einmal editiert, zuletzt von zawn (30. April 2009 um 10:48)

  • Hallo zawn,

    du musst nur die Variable $open Global definieren, dann steht Ihr Inhalt (in dem Fall der ausgewählte Pfad auch zur Verfügung...

    Spoiler anzeigen
    [autoit]

    #include <GuiConstantsEx.au3>
    #include <AVIConstants.au3>
    #include <TreeViewConstants.au3>
    #include <WindowsConstants.au3>
    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)
    Global $open

    [/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 (*.*)")
    GUICtrlSetData($input, $open)
    EndFunc

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

    $path = GUICtrlRead($input)

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

    Func Druckenbutton()
    Run(@COMSPEC & ' /c copy '&'"'&$open&'"'&' lpt2')
    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]

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • Schnuffel: Im Hauptscript definierte / oder erstmals benutzte Variablen, sind immer GLOBAL. Das ändert bei Deiner Version eigentlich nichts. Es funktioniert nur, weil Du die Variable "$open" des FileDialoges nutzt, statt das Inputfeld.

    zawn: Nein es geht nicht ! Nur mit dem Dialog. Gib mal eine Datei direkt ein, dann wirst Du sehen das es damit nicht klappt.

    Hier eine kommentierte und aufgeräumte Lösung !

    Spoiler anzeigen
    [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]

    GUISetState(@SW_SHOW)
    While 1 ; keine GUIGetMsg bei "GUIOnEventMode"
    Sleep (100) ; nichts tun, wenn kein Event
    WEnd

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

    ; besser die Funktionen an das Ende des Scripts und nicht mittendrin
    Func Durchsuchenbutton()
    $open = FileOpenDialog("HPGL-Datei auswählen...", @DesktopDir, "HPGL (*.hpgl)")
    GUICtrlSetData($input, $open)
    EndFunc

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

    Func Druckenbutton()
    $path = GUICtrlRead($input) ; hier war der Fehler ! Du musst den Path schon irgendwann lesen !
    If $path <> "" Then
    ;RunWait(@COMSPEC & " /c Dir C:\")
    ;RunWait(@COMSPEC & " /c copy "$path" LPT2")
    MsgBox(0, "", $path)
    EndIf
    EndFunc

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

    Func CLOSEClicked()
    Exit
    EndFunc

    [/autoit]

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • 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