Drucken Funktion

  • Gibt es eine Funktion mit der ich folgende Situation lösen kann.

    Ich besitze eine GUI. Dise hat ein Menü Datei , Bearbeiten , Extras etz. Im Menü Datei befindet sich offt ein feld mit Drucken. Wenn ich darauf drücke kommt ein Gui von Windows in der ich die Druckeigenschaften verändere. Bisdahin ok. Doch mein Problem ist das ich die Oberfläche miner Gui Drucken möchte, Ist das möglich? Wie?

    Zur ansicht mein Quellcode befindet sich: hier

  • Hallo,

    also direkt aus deiner GUI drucken funktioniert so nicht. Du musst schon ein layout anfertigen damit der Drucker weiss wie er es ausdrucken muss. Dies kannst du z.b. tun indem du dir per autoit eine HTML Datei schreiben lässt und diese dann anschließend ausdruckst.

    Ich versuche so etwas ähnliches gerade mit LaTeX.

    MFG FireFlyer

    MFG FireFlyer

    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D

  • HTML ihhhhh
    hm wie geht das? Kann er den Gui aufbau in HTML umwandeln? Ich möchte schon das was man siht so haben.

    hm kann er es nicht als "Bild" ausdrucken?

  • joar screenshot machen und ausdrucken ;)
    Glaub aber nicht dass es das gewünschte Ergebnis erzielt.

    MFG FireFlyer

    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D

  • Kann man irgend wie auf diese Funtions datenbak zugreifen? Gibt es eine Index die zur _FilePrint.htm navigiert? Ich sehe es in der Hilfe nicht,habe da schon alle Links durchgeklickt. Bin bestimmt betriebsblind.

  • Also so eine Funktion kenne ich net du musst dir deine HTML Datei wohl selbst schreiben.
    FileWrite, FileWriteLine sollten da weiterhelfen. (Vorrausgesetzt du kannst HTML)

    MFG FireFlyer

    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D

  • #Include <File.au3>
    _FilePrint($s_File [, $i_Show = @SW_HIDE])


    Parameter
    $s_File Die zu druckende Datei.
    $i_Show [optional] Der Fensterzustand. (Standard = @SW_HIDE) <<<<<<<<----------

    Wie funzt das?
    _FilePrint($s_File , $i_Show = @SW_HIDE) ?

  • Das geht über die shell32.dll, was die genau macht musst du bei MS nachfragen. 8)

    [autoit]

    #include <File.au3>
    $path = @ScriptDir & '\test.txt'
    _FilePrint($path)

    [/autoit]
  • Skar du musst begreifen das die Funktion _FilePrint lediglich den Befehl an den Rechner sendet "Drucke mir diese Datei". Das funktioniert eig. auch nur so richtig mit txt dateien. Wenn du mehr Layout haben möchtest empfehle ich dir HTML, LaTeX etc.

    Beispiel:

    [autoit]

    FileWrite($file, '<html><head><title>Testseite</title></head><body style="text-align:center;"><h1>Das ist ein Test</h1></body></html>')
    _FilePrint($file)

    [/autoit]

    MFG FireFlyer

    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D

  • [ offen ] Drucken


    Das hab ich gefunden. Ist super das müsste reichen. Ich muss es noch schaffen das ich nicht die ganze form ausdrucke sondern nur den inhalt ^^. Mal schauen. Ich mackire es mal noch nicht als gelöst.

    Funkey besten dank, für diese lösung.

  • [autoit]

    $Pfad = @Desktopdir & "\testbild.jpg"
    run(@Systemdir & "\mspaint.exe " & $Pfad & " /p")

    [/autoit]


    So hab ich das vor einiger Zeit mal gemacht nen Bild zu drucken...

  • Also mein Ziel ist es die Gui auszudrucken. Das funktioniert mit Funkey methode. Auch die Änderung von Autobart habe ich hinzugefügt bei Funkey und es geht wirklich gut.

    Jetzt fehlt nur noch eine Kleinigkeit. Ich möchte nur den GUI Inhalt audrucken ohne Form Kopf und ohne Menü und ohne die Statusleiste unten. (Script liegt bei zum probieren.)
    Das von Funkey geht ohne diese sachen, nachdem ich von Autobart die Lösung reinschrieb, zu drucken. Wenn ich es anstatt einer Listview mit einer Grupe mache sehe ich schwarz im warsten sinne des wortes.

    2 Pst oben ist ein Link zu einem anderen Post aus dem ICh die Lösung von Funkey verwendet habe.

    Hier mal das vom ihm/Ihr.

    Spoiler anzeigen
    [autoit]


    #include <PrintWinAPI.au3>
    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <WindowsConstants.au3>

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Values(6)", 326, 331, 224, 184)
    $ListView1 = GUICtrlCreateListView("value 1|value 2|value 3|value 4|value 5|value 6", 6, 6, 200, 200)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 50)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 1, 50)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 2, 50)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 3, 50)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 4, 50)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 5, 50)
    $ListView1_0 = GUICtrlCreateListViewItem("1|12|4|45", $ListView1)
    $ListView1_1 = GUICtrlCreateListViewItem("2|12", $ListView1)
    $ListView1_2 = GUICtrlCreateListViewItem("3|12||4", $ListView1)
    $ListView1_3 = GUICtrlCreateListViewItem("4|12", $ListView1)
    $ListView1_4 = GUICtrlCreateListViewItem("5|12", $ListView1)
    $ListView1_5 = GUICtrlCreateListViewItem("6|12", $ListView1)
    $print = GUICtrlCreateButton("Print", 28, 284, 101, 25, $WS_GROUP)
    $close = GUICtrlCreateButton("close", 180, 284, 105, 25, $WS_GROUP)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $close
    Exit
    Case $print
    _Print()
    EndSwitch
    WEnd

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

    ;http://www.autoitscript.com/forum/index.php?showtopic=78757
    Func _Print()
    Local $WM_PRINT = 0x317
    Local $PRF_CHILDREN = 0x10; Draw all visible child windows.
    Local $PRF_CLIENT = 0x4 ; Draw the window's client area.
    Local $PRF_OWNED = 0x20 ; Draw all owned windows.
    Local $PRF_NONCLIENT = 0x2 ; Draw the window's Title area.
    Local $PRF_ERASEBKGND = 0x8 ; Erases the background before drawing the window

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

    Local $hWnd = ControlGetHandle($Form1,"",$ListView1)
    Local $pos = ControlGetPos($Form1,"",$ListView1)

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

    _GDIPlus_Startup()
    Local $Width = $pos[2]
    Local $Height = $pos[3]

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

    Local $hDC = _WinAPI_GetDC($hWnd)
    Local $memDC = _WinAPI_CreateCompatibleDC($hDC)
    Local $memBmp = _WinAPI_CreateCompatibleBitmap($hDC, $Width, $Height)
    _WinAPI_SelectObject($memDC, $memBmp)

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

    Local $Ret = _SendMessage($hWnd, $WM_PAINT, $memDC, 0)
    $Ret = _SendMessage($hWnd, $WM_PRINT, $memDC, BitOR($PRF_CHILDREN, $PRF_CLIENT, $PRF_OWNED, $PRF_NONCLIENT, $PRF_ERASEBKGND))

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

    Local $hImage = _GDIPlus_BitmapCreateFromHBITMAP($memBmp)

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

    ;Get Default Printer
    Local $s_PrinterName = _GetDefaultPrinter()

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

    ; Create a printer device context
    Local $hPrintDc = _WinAPI_CreateDC("winspool", $s_PrinterName)
    Local $hGraphic = _GDIPlus_GraphicsCreateFromHDC($hPrintDc)

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

    ; get pixel and twips info
    Local $PixelsPerInchY = _WinAPI_GetDeviceCaps($hPrintDc, $__WINAPCONSTANT_LOGPIXELSY); Get Pixels Per Inch Y
    Local $TwipsPerPixelY = 1440 / $PixelsPerInchY
    Local $PixelsPerInchX = _WinAPI_GetDeviceCaps($hPrintDc, $__WINAPCONSTANT_LOGPIXELSX); Get Pixels Per Inch X
    Local $TwipsPerPixelX = 1440 / $PixelsPerInchX

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

    ; get page width and height
    Local $PageWidth = _WinAPI_GetDeviceCaps($hPrintDc, $HORZRES); Get width, in millimeters, of the physical screen
    Local $PageHeight = _WinAPI_GetDeviceCaps($hPrintDc, $VERTRES); Get height, in millimeters, of the physical screen.

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

    ; set docinfo
    Local $s_DocName = "Printing from AutoIt with WinAPI"
    Local $DocName = DllStructCreate("char DocName[" & StringLen($s_DocName & Chr(0)) & "]")
    DllStructSetData($DocName, "DocName", $s_DocName & Chr(0)); Size of DOCINFO structure
    Local $DOCINFO = DllStructCreate($tagDOCINFO); Structure for Print Document info
    DllStructSetData($DOCINFO, "Size", 20); Size of DOCINFO structure
    DllStructSetData($DOCINFO, "DocName", DllStructGetPtr($DocName)); Set name of print job (Optional)

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

    ; start new print doc
    Local $result = _WinAPI_StartDoc($hPrintDc, $DOCINFO)
    ; start new page
    $result = _WinAPI_StartPage($hPrintDc)

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

    ; Draw one image in another
    _GDIPlus_GraphicsDrawImageRect($hGraphic, $hImage, 50, 100, $Width, $Height)
    ; Draw a frame around the inserted image
    _GDIPlus_GraphicsDrawRect($hGraphic, 50, 100, $Width, $Height)
    ; ------------------------ End of Story -----------------------
    ; End the page
    $result = _WinAPI_EndPage($hPrintDc)
    ; End the print job
    $result = _WinAPI_EndDoc($hPrintDc)
    ; Delete the printer device context
    _WinAPI_DeleteDC($hPrintDc)
    ; End Rest of Resources
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_ImageDispose($hImage)
    _WinAPI_ReleaseDC($hWnd, $hDC)
    _WinAPI_DeleteDC($memDC)
    _WinAPI_DeleteObject($memBmp)
    _GDIPlus_Shutdown()
    EndFunc ;==>_Print

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

    ;------------------------------ Get Default printer --------------------------------
    Func _GetDefaultPrinter()
    Local $szDefPrinterName
    Local $Size
    Local $namesize = DllStructCreate("dword")
    DllCall("winspool.drv", "int", "GetDefaultPrinter", "str", '', "ptr", DllStructGetPtr($namesize))
    Local $pname = DllStructCreate("char[" & DllStructGetData($namesize, 1) & "]")
    DllCall("winspool.drv", "int", "GetDefaultPrinter", "ptr", DllStructGetPtr($pname), "ptr", DllStructGetPtr($namesize))
    Return DllStructGetData($pname, 1);msgbox(0,dllstructgetdata($namesize,1),DllStructGetData($pname,1))
    EndFunc ;==>_GetDefaultPrinter
    #EndRegion

    [/autoit]


    Jetzt das von mir:

    Spoiler anzeigen
    [autoit]


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

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

    AutoIt Version: 3.2.12.1
    Author: Hans Busch
    Datum: 07.04.2010
    Script Function:
    Auslesen von asc Dateitypen für Gaia Akkumulatorenwerke GmbH um Porsche Edefackt Datensätze auszulesen.

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

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

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

    #include <ButtonConstants.au3>
    #include <File.au3>
    #include <GUIConstants.au3>
    #include <GuiStatusBar.au3>
    #include <GUIConstantsEx.au3>
    #include <ProgressConstants.au3>
    #include <SendMessage.au3>
    #include <PrintWinAPI.au3>
    #include <ListViewConstants.au3>
    #include <PrintWinAPI.au3>
    #include <WindowsConstants.au3>

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

    ;****************************************************
    ;***************** Phat Puls daten ******************
    #Region ### START Koda GUI section ###
    $Form1 = GUICreate("Feinabruf Porsche AG Gaia Akkumulatorenwerke GmbH ", 715, 577, 244, 202)
    $KundNr = GUICtrlCreateLabel("Kund-Nr:", 296, 56, 166, 20)
    $LiefNr = GUICtrlCreateLabel("Lief-Nr:", 296, 32, 166, 20)
    $UebertrNr = GUICtrlCreateLabel("Übertr-Nr:", 16, 56, 250, 20)
    $SachnrKunde = GUICtrlCreateLabel("Sachnr.-Kunde:", 16, 192, 248, 20)
    $WerkKunde = GUICtrlCreateLabel("Werk-Kunde:", 16, 216, 248, 20)
    $Abladestelle = GUICtrlCreateLabel("Abladestelle:", 16, 240, 248, 20)
    $Verwendung = GUICtrlCreateLabel("Verwendung:", 296, 240, 219, 20)
    $FeinabrufNr = GUICtrlCreateLabel("Feinabruf-Nr:", 544, 240, 153, 20)
    $BestellNr = GUICtrlCreateLabel("Bestell-Nr:", 544, 216, 153, 20)
    $Datum = GUICtrlCreateLabel("Datum:", 544, 32, 153, 20)
    $Datenelemente = GUICtrlCreateTab(16, 264, 681, 89)
    GUICtrlSetResizing(-1, $GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
    $Datenelemente1 = GUICtrlCreateTabItem("Abrufmenge 1")
    $LSDatum1 = GUICtrlCreateLabel("LS-Datum:", 36, 297, 166, 17)
    $WEDatu1 = GUICtrlCreateLabel("WE-Datum:", 36, 321, 166, 17)
    $Liefermenge1 = GUICtrlCreateLabel("Liefermenge:", 220, 297, 166, 17)
    $EingFsZahl1 = GUICtrlCreateLabel("Eing.Fs-Zahl:", 220, 321, 166, 17)
    $Lieferscheinnummer1 = GUICtrlCreateLabel("Lieferschein-Nr:", 428, 297, 166, 17)
    $Lieferstatus1 = GUICtrlCreateLabel("Lieferstatus:", 428, 321, 166, 17)
    $Datenelemente2 = GUICtrlCreateTabItem("Abrufmenge 2")
    $LSDatum2 = GUICtrlCreateLabel("LS-Datum:", 36, 297, 166, 17)
    $WEDatum2 = GUICtrlCreateLabel("WE-Datum:", 36, 321, 166, 17)
    $Liefermenge2 = GUICtrlCreateLabel("Liefermenge:", 220, 297, 166, 17)
    ;$EingFsZahl2 = GUICtrlCreateLabel("Eing.Fs-Zahl:", 220, 321, 166, 17)
    $Lieferscheinnr2 = GUICtrlCreateLabel("Lieferschein-Nr:", 428, 297, 166, 17)
    $Lieferstatus2 = GUICtrlCreateLabel("Lieferstatus:", 428, 321, 166, 17)
    $Datenelemente3 = GUICtrlCreateTabItem("Abrufmenge 3")
    $LSDatum3 = GUICtrlCreateLabel("LS-Datum:", 36, 297, 166, 17)
    $WEDatum3 = GUICtrlCreateLabel("WE-Datum:", 36, 321, 166, 17)
    $Liefermenge3 = GUICtrlCreateLabel("Liefermenge:", 220, 297, 166, 17)
    ;$EingFsZahl3 = GUICtrlCreateLabel("Eing.Fs-Zahl:", 220, 321, 166, 17)
    $LieferscheinNr3 = GUICtrlCreateLabel("Lieferschein-Nr:", 428, 297, 166, 17)
    $Lieferstatus3 = GUICtrlCreateLabel("Lieferstatus:", 428, 321, 166, 17)
    GUICtrlCreateTabItem("")
    $Label3 = GUICtrlCreateLabel("___________________________________________________________________________________________________________________", 16, 167, 681, 17)
    $Abgrenzungsdaten = GUICtrlCreateListView("WE-Datum|WE-Zeit|Menge|Bedarfsstatus", 16, 360, 681, 166)
    GUICtrlSendMsg(-1, 0x101E, 0, 150)
    GUICtrlSendMsg(-1, 0x101E, 1, 150)
    GUICtrlSendMsg(-1, 0x101E, 2, 150)
    GUICtrlSendMsg(-1, 0x101E, 3, 200)
    $Abgrenzungsdaten_0 = GUICtrlCreateListViewItem("", $Abgrenzungsdaten)
    $Abgrenzungsdaten_1 = GUICtrlCreateListViewItem("", $Abgrenzungsdaten)
    $Abgrenzungsdaten_2 = GUICtrlCreateListViewItem("", $Abgrenzungsdaten)
    $Abgrenzungsdaten_3 = GUICtrlCreateListViewItem("", $Abgrenzungsdaten)
    $Abgrenzungsdaten_4 = GUICtrlCreateListViewItem("", $Abgrenzungsdaten)
    $Abgrenzungsdaten_5 = GUICtrlCreateListViewItem("", $Abgrenzungsdaten)
    $Label1 = GUICtrlCreateLabel("Gaia Akkumulatorenwerke GmbH", 16, 8, 250, 20)
    $Label2 = GUICtrlCreateLabel("FAX-Nr: 03631616728", 16, 32, 250, 20)
    $VersAdd = GUICtrlCreateLabel("Versand-Anschrift: Dr. Ing. h. c. F. Porsche AG", 112, 104, 250, 20)
    $Strasse = GUICtrlCreateLabel("", 200, 128, 164, 20)
    $PLZORT = GUICtrlCreateLabel("", 200, 152, 164, 20)
    $Tel = GUICtrlCreateLabel("Tel.:", 392, 104, 167, 20)
    $Fax = GUICtrlCreateLabel("Fax.:", 392, 128, 167, 20)
    $Label4 = GUICtrlCreateLabel("___________________________________________________________________________________________________________________", 16, 75, 681, 17)
    $MDatei = GUICtrlCreateMenu("&Datei")
    $MDOffnen = GUICtrlCreateMenuItem("Öffnen", $MDatei)
    $MDDrucken = GUICtrlCreateMenuItem("Drucken", $MDatei)
    $MDBeenden = GUICtrlCreateMenuItem("Beenden", $MDatei)
    $MAnsicht = GUICtrlCreateMenu("&Ansicht")
    $MAAdminAnsicht = GUICtrlCreateMenuItem("Admin Ansicht", $MAnsicht)
    $MAEUserAnsicht = GUICtrlCreateMenuItem("Benutzer Ansicht", $MAnsicht)
    $MHilfe = GUICtrlCreateMenu("&Hilfe")
    $MHInfo = GUICtrlCreateMenuItem("Info", $MHilfe)
    GUISetState()
    Local $aParts[3] = [200, 200, -1]
    $hStatus = _GUICtrlStatusBar_Create ($Form1)
    _GUICtrlStatusBar_SetMinHeight($hStatus, 20)
    _GUICtrlStatusBar_SetParts ($hStatus, $aParts)
    Dim $AdminAnsicht = 0
    Dim $line = ""
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    ;******** Phat Puls daten Ende **********************
    ;****************************************************
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

    Case $MDBeenden
    Exit

    Case $MDDrucken
    _Print()

    Case $MHInfo
    MsgBox(64, "Info", "EDI" & @CRLF & "Version: 1.0" & @CRLF & "Entwickelt: 07.04.2010" & @CRLF & "by Hans Busch" & @CRLF & "Auszubildender der Gaia Akkumulatorenwerke GmbH")

    Case $MAAdminAnsicht
    Dim $AdminAnsicht = 1
    If $AdminAnsicht = 1 Then
    MsgBox(64, "Info", "Die Admin Ansicht ist aktiv, erneut diese Datei Öffnen.")
    EndIf

    Case $MAEUserAnsicht
    Dim $AdminAnsicht = 0
    If $AdminAnsicht = 0 Then
    MsgBox(64, "Info", "Die Benutzer Ansicht ist aktiv, erneut diese Datei Öffnen.")
    EndIf


    Case $MDOffnen

    $re = FileOpenDialog("Datei öffnen", @DesktopDir, "Textdateien (*.asc)")
    If @error Then
    ;MsgBox(16, "Error" , @error & "Es ist nichts ausgewählt!", 5)
    EndIf
    $file = FileOpen( $re , 0)
    If $file = -1 Then
    FileClose($file)
    EndIf

    ;Lieferabruf
    $result = StringInStr( $re , "4905")
    If $result <> 0 Then
    $line = FileReadLine($file)
    If @error = -1 Then ExitLoop
    ;MsgBox(0, "Zeile gelesen:", $line)
    $Satzart = StringMid( $line , 1 , 3 )
    ;MsgBox(0, "Inhalt: ", $line)
    ;MsgBox(0, "Nach Satzart: ", $Satzart)
    If ( $Satzart = 511 ) Then
    ;Satzart Definition
    $Versi = StringMid( $line , 4 , 2 )
    $Kundennummer = StringMid( $line , 6 , 9 )
    $Lieferantennummer = StringMid( $line , 15 , 9 )
    $olduebertragungsnummer = StringMid( $line , 24 , 5 )
    $newuebertragungsnummer = StringMid( $line , 29 , 5 )
    $ubertragungsdate = StringMid( $line , 34 , 6 )
    $Datumnullstelleneingang = StringMid( $line , 40 , 6 )
    $Leer = StringMid( $line , 46 , 83 )
    MsgBox(0, "Nach Satzart:", "Satzart: " & $Satzart & @CRLF & "Version: " & $Versi & @CRLF & "Kundennummer: " & $Kundennummer & @CRLF & "Lieferantennummer: " & $Lieferantennummer & @CRLF & "olduebertragungsnummer: " & $olduebertragungsnummer & @CRLF & "newuebertragungsnummer: " & $newuebertragungsnummer & @CRLF & "ubertragungsdate: " & $ubertragungsdate & @CRLF & "Datum nullstellen eingang: " & $Datumnullstelleneingang & @CRLF & "Leer: " & $Leer)
    ;Satzart Definition Ende
    Else
    MsgBox(16, "Error" , "Dieser Typ ist nicht definiert!" & @CRLF & "Bitte den Administrator informieren und die Datei mitschicken." & @CRLF & @CRLF & "Mit freundlichen Grüßen" & @CRLF & "Hans Buch", 10)
    EndIf
    EndIf
    ;Lieferabruf Ende


    ;Feinabruf
    $result1 = StringInStr( $re , "4915")
    If $result1 <> 0 Then
    $line = FileReadLine($file)
    If @error = -1 Then ExitLoop

    If @OSType = "WIN32_WINDOWS" Then
    $progress = GUICtrlCreateProgress(0, 0, -1, -1 , $PBS_SMOOTH)
    $hProgress = GUICtrlGetHandle($progress)
    _GUICtrlStatusBar_EmbedControl($hStatus, 0, $hProgress)
    Else
    $progress = GUICtrlCreateProgress(0, 0, -1, -1 , $PBS_SMOOTH )
    Dim $statusproz = 0
    $hProgress = GUICtrlSetData($progress, $statusproz )
    $hProgress = GUICtrlGetHandle($progress)
    _GUICtrlStatusBar_EmbedControl($hStatus, 0, $hProgress)
    _SendMessage($hProgress, $PBM_SETMARQUEE, True, 200)
    EndIf

    ;Anlage 1
    $Satzart = StringMid( $line , 1 , 3 )
    If $AdminAnsicht = 1 Then
    MsgBox(0, "Zeile gelesen:", $line)
    EndIf
    While 1
    If ( $Satzart = 551 ) Then
    ;Vorsatz der Feinabrufdaten
    $551Versi = StringMid( $line , 4 , 2 )
    $551Kundennummer = StringMid( $line , 6 , 9 )
    $551Lieferantennummer = StringMid( $line , 15 , 9 )
    $551olduebertragungsnummer = StringMid( $line , 24 , 5 )
    $551newuebertragungsnummer = StringMid( $line , 29 , 5 )
    While StringInStr($551newuebertragungsnummer, "0") = 1
    $551newuebertragungsnummer = StringTrimLeft($551newuebertragungsnummer, 1)
    WEnd
    $551ubertragungsdate = StringMid( $line , 34 , 6 )
    $551ubertragungsdateTag = StringRight ( $551ubertragungsdate , 2 )
    $551ubertragungsdate = StringTrimRight ( $551ubertragungsdate , 2 )
    $551ubertragungsdateMonat = StringRight ( $551ubertragungsdate , 2 )
    $551ubertragungsdateJahr = StringTrimRight ( $551ubertragungsdate , 2 )
    Dim $551ubertragungsdate = $551ubertragungsdateTag & "." & $551ubertragungsdateMonat & ".20" & $551ubertragungsdateJahr
    $551Datumnullstelleneingang = StringMid( $line , 40 , 6 )
    If $AdminAnsicht = 1 Then
    MsgBox(0, "Vorsatz der Feinabrufdaten: ", "Satzart: " & $Satzart & @CRLF & "Version: " & $551Versi & @CRLF & "Kundennummer: " & $551Kundennummer & @CRLF & "Lieferantennummer: " & $551Lieferantennummer & @CRLF & "olduebertragungsnummer: " & $551olduebertragungsnummer & @CRLF & "newuebertragungsnummer: " & $551newuebertragungsnummer & @CRLF & "ubertragungsdate: " & $551ubertragungsdate & @CRLF & "Datum nullstellen eingang: " & $551Datumnullstelleneingang)
    EndIf
    ;Vorsatz der Feinabrufdaten Ende
    GUICtrlSetData ( $UebertrNr , "Übertr-Nr: " & $551newuebertragungsnummer )
    GUICtrlSetData ( $LiefNr , "Lief-Nr: " & $551Lieferantennummer )
    GUICtrlSetData ( $KundNr , "Kund-Nr: " & $551Kundennummer )
    GUICtrlSetData ( $Datum , "Datum: " & $551ubertragungsdate )
    $line = StringTrimLeft( $line , 128 )
    $Satzart = StringMid( $line , 1 , 3 )
    EndIf
    Dim $statusproz = 9
    $hProgress = GUICtrlSetData($progress, $statusproz )
    $hProgress = GUICtrlGetHandle($progress)
    _GUICtrlStatusBar_EmbedControl($hStatus, 0, $hProgress)
    _SendMessage($hProgress, $PBM_SETMARQUEE, True, 200)
    Sleep(100)

    ;Anlage 2
    If ( $Satzart = 552 ) Then
    Dim $552line = $line
    ;Einmalige Datenelemente des Feinabrufes
    $552Versi = StringMid( $552line , 4 , 2 )
    $552Werkkunde = StringMid( $552line , 6 , 3 )
    If StringInStr($552Werkkunde, "W2") = 1 Then
    GUICtrlSetData ( $Strasse , "Porscheplatz 1 " )
    GUICtrlSetData ( $PLZORT , "70435 Stuttgart " )
    GUICtrlSetData ( $Tel , "Tel.: 0711/911 - 25701 " )
    GUICtrlSetData ( $Fax , "Fax.: 0711/911 - 26242 " )
    EndIf
    If StringInStr($552Werkkunde, "W7") = 1 Then
    GUICtrlSetData ( $Strasse , "Porschestraße 15 - 16 " )
    GUICtrlSetData ( $PLZORT , "71634 Ludwigsburg " )
    GUICtrlSetData ( $Tel , "Tel.: 0711/911 - 82079 " )
    GUICtrlSetData ( $Fax , "Fax.: 0711/911 - 83594 " )
    EndIf
    $552Feinabrufneu = StringMid( $552line , 9 , 9 )
    While StringInStr($552Feinabrufneu, "0") = 1
    $552Feinabrufneu = StringTrimLeft($552Feinabrufneu, 1)
    WEnd
    $552Feinabrufdatum = StringMid( $552line , 18 , 6 )
    $552SachnummerKunde = StringMid( $552line , 24 , 22 )
    $552SachnummerLieferant = StringMid( $552line , 46 , 22 )
    $552Abladestelle = StringMid( $552line , 68 , 5 )
    $552Lagerortkunde = StringMid( $552line , 73 , 7 )
    $552Kritbestandschlussel = StringMid( $552line , 80 , 1 )
    $552Verwendungsschlussel = StringMid( $552line , 81 , 1 )
    $552FABHorizont = StringMid( $552line , 82 , 6 )
    $552Terminschlussel = StringMid( $552line , 88 , 1 )
    $552Abschlussbestellnummer = StringMid( $552line , 89 , 12 )
    $552Fortschrittszahlendifferenz = StringMid( $552line , 101 , 10 )
    $552Verbrauchsstelle = StringMid( $552line , 111 , 14 )
    If $AdminAnsicht = 1 Then
    MsgBox(0, "Einmalige Datenelemente des Feinabrufes: ", "Satzart: " & $Satzart & @CRLF &"Versionsnummer: " & $552Versi & @CRLF &"Werk Kunde: " & $552Werkkunde & @CRLF &"Feinabruf-Nr. neu: " & $552Feinabrufneu & @CRLF &"Feinabruf Datum: " & $552Feinabrufdatum & @CRLF & "Sachnummer Kunde: " & $552SachnummerKunde & @CRLF &"Sachnummer Lieferant: " & $552SachnummerLieferant & @CRLF &"Abladestelle: " & $552Abladestelle & @CRLF & "Lagerort Kunde: " & $552Lagerortkunde & @CRLF &"Kritischer Bestand Schlüssel: " & $552Kritbestandschlussel & @CRLF & "Verwendungsschlüssel: " & $552Verwendungsschlussel & @CRLF & "FAB-Horizont: " & $552FABHorizont & @CRLF & "Termin Schlüssel: " & $552Terminschlussel & @CRLF &"Abschluss Bestellnummer: " & $552Abschlussbestellnummer & @CRLF &"Fortschrittszahlen Differenz: " & $552Fortschrittszahlendifferenz & @CRLF &"Verbrauchsstelle: " & $552Verbrauchsstelle )
    EndIf
    ;Einmalige Datenelemente des Feinabrufes Ende
    GUICtrlSetData ( $SachnrKunde , "Sachnr.-Kunde: " & $552SachnummerKunde )
    GUICtrlSetData ( $WerkKunde , "Werk-Kunde: " & $552Werkkunde )
    GUICtrlSetData ( $Abladestelle , "Abladestelle: " & $552Abladestelle )
    GUICtrlSetData ( $Verwendung , "Verwendung: " & $552Verwendungsschlussel )
    GUICtrlSetData ( $BestellNr , "Bestell-Nr: " & $552Abschlussbestellnummer )
    GUICtrlSetData ( $FeinabrufNr , "Feinabruf-Nr: " & $552Feinabrufneu )
    $line = StringTrimLeft( $line , 128 )
    $Satzart = StringMid( $line , 1 , 3 )
    EndIf
    Dim $statusproz = 19
    $hProgress = GUICtrlSetData($progress, $statusproz )
    $hProgress = GUICtrlGetHandle($progress)
    _GUICtrlStatusBar_EmbedControl($hStatus, 0, $hProgress)
    _SendMessage($hProgress, $PBM_SETMARQUEE, True, 200)
    Sleep(100)

    ;Anlage 3
    If ( $Satzart = 553 ) Then
    ;Feinabruf- Abgrenzungsdaten
    Dim $553line = $line
    $553v = StringMid( $553line , 4 , 2 )
    $553e = StringMid( $553line , 6 , 10 )
    While StringInStr($553e, "0") = 1
    $553e = StringTrimLeft($553e, 1)
    WEnd
    $553ed1 = StringMid( $553line , 16 , 6 )
    $553ed1Tag = StringRight ( $553ed1 , 2 )
    $553ed1 = StringTrimRight ( $553ed1 , 2 )
    $553ed1Monat = StringRight ( $553ed1 , 2 )
    $553ed1Jahr = StringTrimRight ( $553ed1 , 2 )
    Dim $553ed1 = $553ed1Tag & "." & $553ed1Monat & ".20" & $553ed1Jahr
    $553ls1 = StringMid( $553line , 22 , 8 )
    While StringInStr($553ls1, "0") = 1
    $553ls1 = StringTrimLeft($553ls1, 1)
    WEnd
    $553lsd1 = StringMid( $553line , 30 , 6 )
    $553lsd1Tag = StringRight ( $553lsd1 , 2 )
    $553lsd1 = StringTrimRight ( $553lsd1 , 2 )
    $553lsd1Monat = StringRight ( $553lsd1 , 2 )
    $553lsd1Jahr = StringTrimRight ( $553lsd1 , 2 )
    Dim $553lsd1 = $553lsd1Tag & "." & $553lsd1Monat & ".20" & $553lsd1Jahr
    $553lm1 = StringMid( $553line , 36 , 12 )
    $553lm1Kommanullen = StringRight ( $553lm1 , 3 )
    $553lm1Zahl = StringTrimRight( $553lm1 , 3 )
    $553lm1 = $553lm1Zahl & "," & $553lm1Kommanullen
    Dim $resultfor = 0
    For $if = 1 to 9 Step 1
    $resultf = StringInStr($553lm1Zahl, $if )
    If $resultf <> 0 Then
    Dim $resultfor = 1
    EndIf
    Next
    Dim $resultnach = 0
    For $in = 1 to 9 Step 1
    $resultn = StringInStr($553lm1Kommanullen, $in )
    If $resultn <> 0 Then
    Dim $resultnach = 1
    EndIf
    Next
    If $resultfor = 0 And $resultnach = 1 Then
    MsgBox(16, "Vorsicht", "Fehler Code 1: Diese Zahl entspricht 0,xx" & $553lm1Kommanullen &". Admin bescheidgeben" )
    EndIf
    While StringInStr($553lm1, "0") = 1 OR StringLeft ($553lm1, 1 ) = ','
    $553lm1 = StringTrimLeft($553lm1, 1)
    WEnd
    While StringRight ($553lm1, 1 ) = 0 OR StringRight ($553lm1, 1 ) = ',' And $553lm1 <> ""
    $553lm1 = StringTrimRight($553lm1, 1)
    WEnd
    $553lst1 = StringMid( $553line , 48 , 1 )
    $553ed2 = StringMid( $553line , 49 , 6 )
    While StringInStr($553ed2, "0") = 1
    $553ed2 = StringTrimLeft($553ed2, 1)
    WEnd
    If $553ed2 <> "" Then
    $553ed2Tag = StringRight ( $553ed2 , 2 )
    $553ed2 = StringTrimRight ( $553ed2 , 2 )
    $553ed2Monat = StringRight ( $553ed2 , 2 )
    $553ed2Jahr = StringTrimRight ( $553ed2 , 2 )
    Dim $553ed2 = $553ed2Tag & "." & $553ed2Monat & ".20" & $553ed2Jahr
    EndIf
    $553ls2 = StringMid( $553line , 55 , 8 )
    While StringInStr($553ls2, "0") = 1
    $553ls2 = StringTrimLeft($553ls2, 1)
    WEnd
    $553lsd2 = StringMid( $553line , 63 , 6 )
    While StringInStr($553lsd2, "0") = 1
    $553lsd2 = StringTrimLeft($553lsd2, 1)
    WEnd
    If $553lsd2 <> "" Then
    $553lsd2Tag = StringRight ($553lsd2 , 2 )
    $553lsd2 = StringTrimRight ( $553lsd2 , 2 )
    $553lsd2Monat = StringRight ( $553lsd2 , 2 )
    $553lsd2Jahr = StringTrimRight ( $553ed2 , 2 )
    Dim $553lsd2 = $553lsd2Tag & "." & $553lsd2Monat & ".20" & $553lsd2Jahr
    EndIf
    $553lm2 = StringMid( $553line , 69 , 12 )
    $553lm2Kommanullen = StringRight ( $553lm2 , 3 )
    $553lm2Zahl = StringTrimRight( $553lm2 , 3 )
    $553lm2 = $553lm2Zahl & "," & $553lm2Kommanullen
    Dim $resultfor = 0
    For $if = 1 to 9 Step 1
    $resultf = StringInStr($553lm2Zahl, $if )
    If $resultf <> 0 Then
    Dim $resultfor = 1
    EndIf
    Next
    Dim $resultnach = 0
    For $in = 1 to 9 Step 1
    $resultn = StringInStr($553lm2Kommanullen, $in )
    If $resultn <> 0 Then
    Dim $resultnach = 1
    EndIf
    Next
    If $resultfor = 0 And $resultnach = 1 Then
    MsgBox(16, "Vorsicht", "Fehler Code 1: Diese Zahl entspricht 0,xx" & $553lm2Kommanullen &". Admin bescheidgeben" )
    EndIf
    While StringInStr($553lm2, "0") = 1 OR StringLeft ($553lm2, 1 ) = ','
    $553lm2 = StringTrimLeft($553lm2, 1)
    WEnd
    While StringRight ($553lm2, 1 ) = 0 OR StringRight ($553lm2, 1 ) = ',' And $553lm2 <> ""
    $553lm2 = StringTrimRight($553lm2, 1)
    WEnd
    $553lst2 = StringMid( $553line , 81 , 1 )
    $553ed3 = StringMid( $553line , 82 , 6 )
    While StringInStr($553ed3, "0") = 1
    $553ed3 = StringTrimLeft($553ed3, 1)
    WEnd
    If $553ed3 <> "" Then
    $553ed3Tag = StringRight ( $553ed3 , 2 )
    $553ed3 = StringTrimRight ( $553ed3 , 2 )
    $553ed3Monat = StringRight ( $553ed3 , 2 )
    $553ed3Jahr = StringTrimRight ( $553ed3 , 2 )
    Dim $553ed3 = $553ed3Tag & "." & $553ed3Monat & ".20" & $553ed3Jahr
    EndIf
    $553ls3 = StringMid( $553line , 88 , 8 )
    While StringInStr($553ls3, "0") = 1
    $553ls3 = StringTrimLeft($553ls3, 1)
    WEnd
    $553lsd3 = StringMid( $553line , 96 , 6 )
    While StringInStr($553lsd3, "0") = 1
    $553lsd3 = StringTrimLeft($553lsd3, 1)
    WEnd
    If $553lsd3 <> "" Then
    $553lsd3Tag = StringRight ($553lsd3 , 2 )
    $553lsd3 = StringTrimRight ( $553lsd3 , 2 )
    $553lsd3Monat = StringRight ( $553lsd3 , 2 )
    $553lsd3Jahr = StringTrimRight ( $553ed3 , 2 )
    Dim $553lsd3 = $553lsd3Tag & "." & $553lsd3Monat & ".20" & $553lsd3Jahr
    EndIf
    $553lm3 = StringMid( $553line , 102 , 12 )
    $553lm3Kommanullen = StringRight ( $553lm3 , 3 )
    $553lm3Zahl = StringTrimRight( $553lm3 , 3 )
    $553lm3 = $553lm3Zahl & "," & $553lm3Kommanullen
    Dim $resultfor = 0
    For $if = 1 to 9 Step 1
    $resultf = StringInStr($553lm3Zahl, $if )
    If $resultf <> 0 Then
    Dim $resultfor = 1
    EndIf
    Next
    Dim $resultnach = 0
    For $in = 1 to 9 Step 1
    $resultn = StringInStr($553lm3Kommanullen, $in )
    If $resultn <> 0 Then
    Dim $resultnach = 1
    EndIf
    Next
    If $resultfor = 0 And $resultnach = 1 Then
    MsgBox(16, "Vorsicht", "Fehler Code 1: Diese Zahl entspricht 0,xx" & $553lm3Kommanullen &". Admin bescheidgeben" )
    EndIf
    While StringInStr($553lm3, "0") = 1 OR StringLeft ($553lm3, 1 ) = ','
    $553lm3 = StringTrimLeft($553lm3, 1)
    WEnd
    While StringRight ($553lm3, 1 ) = 0 OR StringRight ($553lm3, 1 ) = ',' And $553lm3 <> ""
    $553lm3 = StringTrimRight($553lm3, 1)
    WEnd
    $553lst3 = StringMid( $553line , 114 , 1 )
    If $AdminAnsicht = 1 Then
    MsgBox(0, "Einmalige Datenelemente des Feinabrufes: ", "Satzart : " & $Satzart & @CRLF & "Version : " & $553v & @CRLF & "Eingangsfortschrittszahl : " & $553e & @CRLF & "Eintreffdatum : " & $553ed1 & @CRLF & "Lieferscheinnummer : " & $553ls1 & @CRLF & "Lieferscheindatum : " & $553lsd1 & @CRLF & "Liefermenge : " & $553lm1 & @CRLF & "Lieferstatus : " & $553lst1 & @CRLF & "Eintreffdatum : " & $553ed2 & @CRLF & "Lieferscheinnummer : " & $553ls2 & @CRLF & "Lieferscheindatum : " & $553lsd2 & @CRLF & "Liefermenge : " & $553lm2 & @CRLF & "Lieferstatus : " & $553lst2 & @CRLF & "Eintreffdatum : " & $553ed3 & @CRLF & "Lieferscheinnummer : " & $553ls3 & @CRLF & "Lieferscheindatum : " & $553lsd3 & @CRLF & "Liefermenge : " & $553lm3 & @CRLF & "Lieferstatus : " & $553lst3 )
    EndIf
    ;Feinabruf- Abgrenzungsdaten Ende
    GUICtrlSetData ( $EingFsZahl1 , "Eing.Fs-Zahl: " & $553e )
    GUICtrlSetData ( $WEDatu1 , "WE-Datum: " & $553ed1 )
    GUICtrlSetData ( $Lieferscheinnummer1 , "Lieferschein-Nr: " & $553ls1 )
    GUICtrlSetData ( $LSDatum1 , "LS-Datum: " & $553lsd1 )
    GUICtrlSetData ( $Liefermenge1 , "Liefermenge: " & $553lm1 )
    GUICtrlSetData ( $Lieferstatus1 , "Lieferstatus: " & $553lst1 )
    GUICtrlSetData ( $WEDatum2 , "WE-Datum: " & $553ed2 )
    GUICtrlSetData ( $Lieferscheinnr2 , "Lieferschein-Nr: " & $553ls2 )
    GUICtrlSetData ( $LSDatum2 , "LS-Datum: " & $553lsd2 )
    GUICtrlSetData ( $Liefermenge2 , "Liefermenge: " & $553lm2 )
    GUICtrlSetData ( $Lieferstatus2 , "Lieferstatus: " & $553lst2 )
    GUICtrlSetData ( $WEDatum3 , "WE-Datum: " & $553ed3 )
    GUICtrlSetData ( $LieferscheinNr3 , "Lieferschein-Nr: " & $553ls3 )
    GUICtrlSetData ( $LSDatum3 , "LS-Datum: " & $553lsd3 )
    GUICtrlSetData ( $Liefermenge3 , "Liefermenge: " & $553lm3 )
    GUICtrlSetData ( $Lieferstatus3 , "Lieferstatus: " & $553lst3 )
    $line = StringTrimLeft( $line , 128 )
    $Satzart = StringMid( $line , 1 , 3 )
    EndIf
    Dim $statusproz = 47
    $hProgress = GUICtrlSetData($progress, $statusproz )
    $hProgress = GUICtrlGetHandle($progress)
    _GUICtrlStatusBar_EmbedControl($hStatus, 0, $hProgress)
    _SendMessage($hProgress, $PBM_SETMARQUEE, True, 200)
    Sleep(100)

    ;~ ;Anlage 4
    If ( $Satzart = 554 ) Then
    ;Feinabruf Daten
    Dim $554line = $line
    $554Versionsnummer = StringMid( $554line , 4 , 2 )
    $554Abrufdatum = StringMid( $554line , 6 , 6 )
    $554AbrufdatumTag = StringRight ( $554Abrufdatum , 2 )
    $554Abrufdatum = StringTrimRight ( $554Abrufdatum , 2 )
    $554AbrufdatumMonat = StringRight ( $554Abrufdatum , 2 )
    $554AbrufdatumJahr = StringTrimRight ( $554Abrufdatum , 2 )
    Dim $554Abrufdatum = $554AbrufdatumTag & "." & $554AbrufdatumMonat & ".20" & $554AbrufdatumJahr
    $resultd = StringInStr( $554Abrufdatum , "00.00.2000" )
    If $resultd = 1 Then
    Dim $554Abrufdatum = ""
    EndIf
    $554Abrufzeit = StringMid( $554line , 12 , 4 )
    $554Abrufzeith = StringTrimRight ( $554Abrufzeit , 2 )
    $554Abrufzeitmin = StringTrimLeft ( $554Abrufzeit , 2 )
    Dim $554Abrufzeit = $554Abrufzeith & ":" & $554Abrufzeitmin
    $resultz = StringInStr( $554Abrufzeit , "00:00" )
    If $resultz = 1 Then
    Dim $554Abrufzeit = ""
    EndIf
    $554Abrufmenge = StringMid( $554line , 16 , 9 )
    While StringInStr($554Abrufmenge, "0") = 1
    $554Abrufmenge = StringTrimLeft($554Abrufmenge, 1)
    WEnd
    $554Bedarfsstatus = StringMid( $554line , 25 , 1 )
    $554Abrufdatum2 = StringMid( $554line , 26 , 6 )
    $554Abrufdatum2Tag = StringRight ( $554Abrufdatum2 , 2 )
    $554Abrufdatum2 = StringTrimRight ( $554Abrufdatum2 , 2 )
    $554Abrufdatum2Monat = StringRight ( $554Abrufdatum2 , 2 )
    $554Abrufdatum2Jahr = StringTrimRight ( $554Abrufdatum2 , 2 )
    Dim $554Abrufdatum2 = $554Abrufdatum2Tag & "." & $554Abrufdatum2Monat & ".20" & $554Abrufdatum2Jahr
    $resultd2 = StringInStr( $554Abrufdatum2 , "00.00.2000" )
    If $resultd2 = 1 Then
    Dim $554Abrufdatum2 = ""
    EndIf
    $554Abrufzeit2 = StringMid( $554line , 32 , 4 )
    $554Abrufzeit2h = StringTrimRight ( $554Abrufzeit2 , 2 )
    $554Abrufzeit2min = StringTrimLeft ( $554Abrufzeit2 , 2 )
    Dim $554Abrufzeit2 = $554Abrufzeit2h & ":" & $554Abrufzeit2min
    $resultz2 = StringInStr( $554Abrufzeit2 , "00:00" )
    If $resultz2 = 1 Then
    Dim $554Abrufzeit2 = ""
    EndIf
    $554Abrufmenge2 = StringMid( $554line , 36 , 9 )
    While StringInStr($554Abrufmenge2, "0") = 1
    $554Abrufmenge2 = StringTrimLeft($554Abrufmenge2, 1)
    WEnd
    $554Bedarfsstatus2 = StringMid( $554line , 45 , 1 )
    $554Abrufdatum3 = StringMid( $554line , 46 , 6 )
    $554Abrufdatum3Tag = StringRight ( $554Abrufdatum3 , 2 )
    $554Abrufdatum3 = StringTrimRight ( $554Abrufdatum3 , 2 )
    $554Abrufdatum3Monat = StringRight ( $554Abrufdatum3 , 2 )
    $554Abrufdatum3Jahr = StringTrimRight ( $554Abrufdatum3 , 2 )
    Dim $554Abrufdatum3 = $554Abrufdatum3Tag & "." & $554Abrufdatum3Monat & ".20" & $554Abrufdatum3Jahr
    $resultd3 = StringInStr( $554Abrufdatum3 , "00.00.2000" )
    If $resultd3 = 1 Then
    Dim $554Abrufdatum3 = ""
    EndIf
    $554Abrufzeit3 = StringMid( $554line , 52 , 4 )
    $554Abrufzeit3h = StringTrimRight ( $554Abrufzeit3 , 2 )
    $554Abrufzeit3min = StringTrimLeft ( $554Abrufzeit3 , 2 )
    Dim $554Abrufzeit3 = $554Abrufzeit3h & ":" & $554Abrufzeit3min
    $resultz3 = StringInStr( $554Abrufzeit3 , "00:00" )
    If $resultz3 = 1 Then
    Dim $554Abrufzeit3 = ""
    EndIf
    $554Abrufmenge3 = StringMid( $554line , 56 , 9 )
    While StringInStr($554Abrufmenge3, "0") = 1
    $554Abrufmenge3 = StringTrimLeft($554Abrufmenge3, 1)
    WEnd
    $554Bedarfsstatus3 = StringMid( $554line , 65 , 1 )
    $554Abrufdatum4 = StringMid( $554line , 66 , 6 )
    $554Abrufdatum4Tag = StringRight ( $554Abrufdatum4 , 2 )
    $554Abrufdatum4 = StringTrimRight ( $554Abrufdatum4 , 2 )
    $554Abrufdatum4Monat = StringRight ( $554Abrufdatum4 , 2 )
    $554Abrufdatum4Jahr = StringTrimRight ( $554Abrufdatum4 , 2 )
    Dim $554Abrufdatum4 = $554Abrufdatum4Tag & "." & $554Abrufdatum4Monat & ".20" & $554Abrufdatum4Jahr
    $resultd4 = StringInStr( $554Abrufdatum4 , "00.00.2000" )
    If $resultd4 = 1 Then
    Dim $554Abrufdatum4 = ""
    EndIf
    $554Abrufzeit4 = StringMid( $554line , 72 , 4 )
    $554Abrufzeit4h = StringTrimRight ( $554Abrufzeit4 , 2 )
    $554Abrufzeit4min = StringTrimLeft ( $554Abrufzeit4 , 2 )
    Dim $554Abrufzeit4 = $554Abrufzeit4h & ":" & $554Abrufzeit4min
    $resultz4 = StringInStr( $554Abrufzeit4 , "00:00" )
    If $resultz4 = 1 Then
    Dim $554Abrufzeit4 = ""
    EndIf
    $554Abrufmenge4 = StringMid( $554line , 76 , 9 )
    While StringInStr($554Abrufmenge4, "0") = 1
    $554Abrufmenge4 = StringTrimLeft($554Abrufmenge4, 1)
    WEnd
    $554Bedarfsstatus4 = StringMid( $554line , 85 , 1 )
    $554Abrufdatum5 = StringMid( $554line , 86 , 6 )
    $554Abrufdatum5Tag = StringRight ( $554Abrufdatum5 , 2 )
    $554Abrufdatum5 = StringTrimRight ( $554Abrufdatum5 , 2 )
    $554Abrufdatum5Monat = StringRight ( $554Abrufdatum5 , 2 )
    $554Abrufdatum5Jahr = StringTrimRight ( $554Abrufdatum5 , 2 )
    Dim $554Abrufdatum5 = $554Abrufdatum5Tag & "." & $554Abrufdatum5Monat & ".20" & $554Abrufdatum5Jahr
    $resultd5 = StringInStr( $554Abrufdatum5 , "00.00.2000" )
    If $resultd5 = 1 Then
    Dim $554Abrufdatum5 = ""
    EndIf
    $554Abrufzeit5 = StringMid( $554line , 92 , 4 )
    $554Abrufzeit5h = StringTrimRight ( $554Abrufzeit5 , 2 )
    $554Abrufzeit5min = StringTrimLeft ( $554Abrufzeit5 , 2 )
    Dim $554Abrufzeit5 = $554Abrufzeit5h & ":" & $554Abrufzeit5min
    $resultz5 = StringInStr( $554Abrufzeit5 , "00:00" )
    If $resultz5 = 1 Then
    Dim $554Abrufzeit5 = ""
    EndIf
    $554Abrufmenge5 = StringMid( $554line , 96 , 9 )
    While StringInStr($554Abrufmenge5, "0") = 1
    $554Abrufmenge5 = StringTrimLeft($554Abrufmenge5, 1)
    WEnd
    $554Bedarfsstatus5 = StringMid( $554line , 105 , 1 )
    $554Abrufdatum6 = StringMid( $554line , 106 , 6 )
    $554Abrufdatum6Tag = StringRight ( $554Abrufdatum6 , 2 )
    $554Abrufdatum6 = StringTrimRight ( $554Abrufdatum6 , 2 )
    $554Abrufdatum6Monat = StringRight ( $554Abrufdatum6 , 2 )
    $554Abrufdatum6Jahr = StringTrimRight ( $554Abrufdatum6 , 2 )
    Dim $554Abrufdatum6 = $554Abrufdatum6Tag & "." & $554Abrufdatum6Monat & ".20" & $554Abrufdatum6Jahr
    $resultd6 = StringInStr( $554Abrufdatum6 , "00.00.2000" )
    If $resultd6 = 1 Then
    Dim $554Abrufdatum6 = ""
    EndIf
    $554Abrufzeit6 = StringMid( $554line , 112 , 4 )
    $554Abrufzeit6h = StringTrimRight ( $554Abrufzeit6 , 2 )
    $554Abrufzeit6min = StringTrimLeft ( $554Abrufzeit6 , 2 )
    Dim $554Abrufzeit6 = $554Abrufzeit6h & ":" & $554Abrufzeit6min
    $resultz6 = StringInStr( $554Abrufzeit6 , "00:00" )
    If $resultz6 = 1 Then
    Dim $554Abrufzeit6 = ""
    EndIf
    $554Abrufmenge6 = StringMid( $554line , 116 , 9 )
    While StringInStr($554Abrufmenge6, "0") = 1
    $554Abrufmenge6 = StringTrimLeft($554Abrufmenge6, 1)
    WEnd
    $554Bedarfsstatus6 = StringMid( $554line , 125 , 1 )
    GUICtrlSetData($Abgrenzungsdaten_0, "" & $554Abrufdatum & "|" & $554Abrufzeit & "|" & $554Abrufmenge & "|" & $554Bedarfsstatus &"")
    GUICtrlSetData($Abgrenzungsdaten_1, "" & $554Abrufdatum2 & "|" & $554Abrufzeit2 & "|" & $554Abrufmenge2 & "|" & $554Bedarfsstatus2 &"")
    GUICtrlSetData($Abgrenzungsdaten_2, "" & $554Abrufdatum3 & "|" & $554Abrufzeit3 & "|" & $554Abrufmenge3 & "|" & $554Bedarfsstatus3 &"")
    GUICtrlSetData($Abgrenzungsdaten_3, "" & $554Abrufdatum4 & "|" & $554Abrufzeit4 & "|" & $554Abrufmenge4 & "|" & $554Bedarfsstatus4 &"")
    GUICtrlSetData($Abgrenzungsdaten_4, "" & $554Abrufdatum5 & "|" & $554Abrufzeit5 & "|" & $554Abrufmenge5 & "|" & $554Bedarfsstatus5 &"")
    GUICtrlSetData($Abgrenzungsdaten_5, "" & $554Abrufdatum6 & "|" & $554Abrufzeit6 & "|" & $554Abrufmenge6 & "|" & $554Bedarfsstatus6 &"")
    If $AdminAnsicht = 1 Then
    MsgBox(0, "Einmalige Datenelemente des Feinabrufes: ", "Satzart : " & $Satzart & @CRLF &"Version : " & $554Versionsnummer & @CRLF &"Abrufdatum : " & $554Abrufdatum & @CRLF & "Abrufzeit : " & $554Abrufzeit & @CRLF &"Abrufmenge : " & $554Abrufmenge & @CRLF &"Bedarfsstatus : " & $554Bedarfsstatus & @CRLF &"Abrufdatum : " & $554Abrufdatum2 & @CRLF &"Abrufzeit : " & $554Abrufzeit2 & @CRLF &"Abrufmenge : " & $554Abrufmenge2 & @CRLF &"Bedarfsstatus : " & $554Bedarfsstatus2 & @CRLF &"Abrufdatum : " & $554Abrufdatum3 & @CRLF &"Abrufzeit : " & $554Abrufzeit3 & @CRLF &"Abrufmenge : " & $554Abrufmenge3 & @CRLF &"Bedarfsstatus : " & $554Bedarfsstatus3 & @CRLF &"Abrufdatum : " & $554Abrufdatum4 & @CRLF &"Abrufzeit : " & $554Abrufzeit4 & @CRLF &"Abrufmenge : " & $554Abrufmenge4 & @CRLF &"Bedarfsstatus : " & $554Bedarfsstatus4 & @CRLF &"Abrufdatum : " & $554Abrufdatum5 & @CRLF &"Abrufzeit : " & $554Abrufzeit5 & @CRLF &"Abrufmenge : " & $554Abrufmenge5 & @CRLF &"Bedarfsstatus : " & $554Bedarfsstatus5 & @CRLF &"Abrufdatum : " & $554Abrufdatum6 & @CRLF &"Abrufzeit : " & $554Abrufzeit6 & @CRLF & "Abrufmenge : " & $554Abrufmenge6 & @CRLF & "Bedarfsstatus : " & $554Bedarfsstatus6 )
    EndIf
    ;Feinabruf Daten Ende
    $line = StringTrimLeft( $line , 128 )
    $Satzart = StringMid( $line , 1 , 3 )
    EndIf
    Dim $statusproz = 81
    $hProgress = GUICtrlSetData($progress, $statusproz )
    $hProgress = GUICtrlGetHandle($progress)
    _GUICtrlStatusBar_EmbedControl($hStatus, 0, $hProgress)
    _SendMessage($hProgress, $PBM_SETMARQUEE, True, 200)
    Sleep(100)

    ;Anlage 5
    If ( $Satzart = 555 ) Then
    Dim $555line = $line
    ;Zusatzdaten des Feinabrufes
    $555Versionsnummer = StringMid( $555line , 4 , 2 )
    $555Zwischenlieferant = StringMid( $555line , 6 , 9 )
    $555Ergaenzende_Sachnummer = StringMid( $555line , 15 , 22 )
    $555Zur_Nullstellung_erreichte_Fortschrittszahl = StringMid( $555line , 37 , 10 )
    If $AdminAnsicht = 1 Then
    MsgBox(0, "Einmalige Datenelemente des Feinabrufes: ", "Satzart : " & $Satzart & @CRLF &"Versionsnummer : " & $Satzart & @CRLF &"Zwischenlieferant : " & $555Zwischenlieferant & @CRLF & "Ergaenzende_Sachnummer : " & $555Ergaenzende_Sachnummer & @CRLF &"Zur_Nullstellung_erreichte_Fortschrittszahl : " & $555Zur_Nullstellung_erreichte_Fortschrittszahl)
    EndIf
    ;Zusatzdaten des Feinabrufes Ende
    $line = StringTrimLeft( $line , 128 )
    $Satzart = StringMid( $line , 1 , 3 )
    EndIf
    Dim $statusproz = 85
    $hProgress = GUICtrlSetData($progress, $statusproz )
    $hProgress = GUICtrlGetHandle($progress)
    _GUICtrlStatusBar_EmbedControl($hStatus, 0, $hProgress)
    _SendMessage($hProgress, $PBM_SETMARQUEE, True, 200)
    Sleep(100)

    ;Anlage 6
    If ( $Satzart = 556 ) Then
    ;Packmitteldaten des Feinabrufes
    Dim $556line = $line
    $556Versionsnummer = StringMid( $556line , 4 , 2 )
    $556Sachnummer = StringMid( $556line , 6 , 22 )
    $556Sachnummer_Lieferant = StringMid( $556line , 28 , 22 )
    $556Fuellmenge_Soll = StringMid( $556line , 50 , 7 )
    If $AdminAnsicht = 1 Then
    MsgBox(0, "Einmalige Datenelemente des Feinabrufes: ", "$Satzart : " & $Satzart & @CRLF & "Version : " & $556Versionsnummer & @CRLF &"Sachnummer : " & $556Sachnummer & @CRLF & "Sachnummer Lieferant : " & $556Sachnummer_Lieferant & @CRLF & "Füllmenge Soll : " & $556Fuellmenge_Soll)
    EndIf
    MsgBox(0, "Einmalige Datenelemente des Feinabrufes: " , "Admin bitte rufen. Hier ist noch entwicklerbedarf." )
    ;Packmitteldaten des Feinabrufes Ende
    $line = StringTrimLeft( $line , 128 )
    $Satzart = StringMid( $line , 1 , 3 )
    EndIf
    Dim $statusproz = 89
    $hProgress = GUICtrlSetData($progress, $statusproz )
    $hProgress = GUICtrlGetHandle($progress)
    _GUICtrlStatusBar_EmbedControl($hStatus, 0, $hProgress)
    _SendMessage($hProgress, $PBM_SETMARQUEE, True, 200)
    Sleep(100)

    ;Anlage 7
    If ( $Satzart = 557 ) Then
    ;Feinabruf Textdaten
    Dim $557line = $line
    $557Versionsnummer = StringMid( $557line , 4 , 2 )
    $557Text1 = StringMid( $557line , 6 , 40 )
    $557Text2 = StringMid( $557line , 46 , 40 )
    $557Text3 = StringMid( $557line , 86 , 40 )
    ;If $AdminAnsicht = 1 Then
    MsgBox(0, "Einmalige Datenelemente des Feinabrufes: ", "$Satzart : " & $Satzart & @CRLF & "Versionsnummer : " & $557Versionsnummer & @CRLF & "Text : " & $557Text1 & @CRLF &"Text : " & $557Text2 & @CRLF &"Text : " & $557Text3)
    MsgBox(0, "Einmalige Datenelemente des Feinabrufes: " , "Admin bitte rufen. Hier ist noch entwicklerbedarf." )
    ;EndIf
    ;Feinabruf Textdaten Ende
    $line = StringTrimLeft( $line , 128 )
    $Satzart = StringMid( $line , 1 , 3 )
    EndIf
    Dim $statusproz = 93
    $hProgress = GUICtrlSetData($progress, $statusproz )
    $hProgress = GUICtrlGetHandle($progress)
    _GUICtrlStatusBar_EmbedControl($hStatus, 0, $hProgress)
    _SendMessage($hProgress, $PBM_SETMARQUEE, True, 200)
    Sleep(100)

    ;Anlage 9
    If ( $Satzart = 559 ) Then
    ;Nachsatz Feinabruf
    Dim $559line = $line
    $559Versionsnummer = StringMid( $559line , 4 , 2 )
    $559ZahlerSatz551 = StringMid( $559line , 6 , 7 )
    $559ZahlerSatz552 = StringMid( $559line , 13 , 7 )
    $559ZahlerSatz553 = StringMid( $559line , 20 , 7 )
    $559ZahlerSatz554 = StringMid( $559line , 27 , 7 )
    $559ZahlerSatz555 = StringMid( $559line , 34 , 7 )
    $559ZahlerSatz556 = StringMid( $559line , 41 , 7 )
    $559ZahlerSatz557 = StringMid( $559line , 48 , 7 )
    $559ZahlerSatz559 = StringMid( $559line , 55 , 7 )
    If $AdminAnsicht = 1 Then
    MsgBox(0, "Einmalige Datenelemente des Feinabrufes: ", "Version : " & $Satzart & @CRLF & "Zähler Satzart 551 : " & $559ZahlerSatz551 & @CRLF & "Zähler Satzart 552 : " & $559ZahlerSatz552 & @CRLF & "Zähler Satzart 553 : " & $559ZahlerSatz553 & @CRLF & "Zähler Satzart 554 : " & $559ZahlerSatz554 & @CRLF & "Zähler Satzart 555 : " & $559ZahlerSatz555 & @CRLF & "Zähler Satzart 556 : " & $559ZahlerSatz556 & @CRLF & "Zähler Satzart 557 : " & $559ZahlerSatz557 & @CRLF & "Zähler Satzart 559 : " & $559ZahlerSatz559 )
    EndIf
    ;Nachsatz Feinabruf Ende
    $line = StringTrimLeft( $line , 128 )
    $Satzart = StringMid( $line , 1 , 3 )
    EndIf

    If ( $Satzart = "" ) Then
    Dim $statusproz = 98
    $hProgress = GUICtrlSetData($progress, $statusproz )
    $hProgress = GUICtrlGetHandle($progress)
    _GUICtrlStatusBar_EmbedControl($hStatus, 0, $hProgress)
    _SendMessage($hProgress, $PBM_SETMARQUEE, True, 200)
    Sleep(300)
    GUICtrlSetState($progress, $GUI_HIDE)
    _GUICtrlStatusBar_SetText($hStatus, "Fertig Ausgewertet", 0)
    TrayTip("Feinabruf", "Fertig Ausgewertet", 5, 1)
    ExitLoop
    Else
    MsgBox(16, "Error: " & $Satzart , "Dieser Typ ist nicht definiert im Vorsatz der Feinabrufdaten!" & @CRLF & "Bitte den Administrator informieren und die Datei mitschicken." & @CRLF & @CRLF & "Mit freundlichen Grüßen" & @CRLF & "Hans Buch", 10)
    EndIf
    WEnd
    EndIf
    FileClose($file)
    ;Feinabruf Ende
    EndSwitch
    WEnd

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

    Func _Print()
    Local $WM_PRINT = 0x317
    Local $PRF_CHILDREN = 0x10; Draw all visible child windows.
    Local $PRF_CLIENT = 0x4 ; Draw the window's client area.
    Local $PRF_OWNED = 0x20 ; Draw all owned windows.
    Local $PRF_NONCLIENT = 0x2 ; Draw the window's Title area.
    Local $PRF_ERASEBKGND = 0x8 ; Erases the background before drawing the window

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

    Local $hWnd = WinGetHandle($Form1)
    Local $pos = WinGetPos($Form1)

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

    _GDIPlus_Startup()
    Local $Width = $pos[2]
    Local $Height = $pos[3]

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

    Local $hDC = _WinAPI_GetDC($hWnd)
    Local $memDC = _WinAPI_CreateCompatibleDC($hDC)
    Local $memBmp = _WinAPI_CreateCompatibleBitmap($hDC, $Width, $Height)
    _WinAPI_SelectObject($memDC, $memBmp)

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

    Local $Ret = _SendMessage($hWnd, $WM_PAINT, $memDC, 0)
    $Ret = _SendMessage($hWnd, $WM_PRINT, $memDC, BitOR($PRF_CHILDREN, $PRF_CLIENT, $PRF_OWNED, $PRF_NONCLIENT, $PRF_ERASEBKGND))

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

    Local $hImage = _GDIPlus_BitmapCreateFromHBITMAP($memBmp)

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

    ;Get Default Printer
    Local $s_PrinterName = _GetDefaultPrinter()

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

    ; Create a printer device context
    Local $hPrintDc = _WinAPI_CreateDC("winspool", $s_PrinterName)
    Local $hGraphic = _GDIPlus_GraphicsCreateFromHDC($hPrintDc)

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

    ; get pixel and twips info
    Local $PixelsPerInchY = _WinAPI_GetDeviceCaps($hPrintDc, $__WINAPCONSTANT_LOGPIXELSY); Get Pixels Per Inch Y
    Local $TwipsPerPixelY = 1440 / $PixelsPerInchY
    Local $PixelsPerInchX = _WinAPI_GetDeviceCaps($hPrintDc, $__WINAPCONSTANT_LOGPIXELSX); Get Pixels Per Inch X
    Local $TwipsPerPixelX = 1440 / $PixelsPerInchX

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

    ; get page width and height
    Local $PageWidth = _WinAPI_GetDeviceCaps($hPrintDc, $HORZRES); Get width, in millimeters, of the physical screen
    Local $PageHeight = _WinAPI_GetDeviceCaps($hPrintDc, $VERTRES); Get height, in millimeters, of the physical screen.

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

    ; set docinfo
    Local $s_DocName = "Printing from AutoIt with WinAPI"
    Local $DocName = DllStructCreate("char DocName[" & StringLen($s_DocName & Chr(0)) & "]")
    DllStructSetData($DocName, "DocName", $s_DocName & Chr(0)); Size of DOCINFO structure
    Local $DOCINFO = DllStructCreate($tagDOCINFO); Structure for Print Document info
    DllStructSetData($DOCINFO, "Size", 20); Size of DOCINFO structure
    DllStructSetData($DOCINFO, "DocName", DllStructGetPtr($DocName)); Set name of print job (Optional)

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

    ; start new print doc
    Local $result = _WinAPI_StartDoc($hPrintDc, $DOCINFO)
    ; start new page
    $result = _WinAPI_StartPage($hPrintDc)

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

    ; Draw one image in another
    _GDIPlus_GraphicsDrawImageRect($hGraphic, $hImage, 50, 100, $Width, $Height)
    ; Draw a frame around the inserted image
    _GDIPlus_GraphicsDrawRect($hGraphic, 50, 100, $Width, $Height)
    ; ------------------------ End of Story -----------------------
    ; End the page
    $result = _WinAPI_EndPage($hPrintDc)
    ; End the print job
    $result = _WinAPI_EndDoc($hPrintDc)
    ; Delete the printer device context
    _WinAPI_DeleteDC($hPrintDc)
    ; End Rest of Resources
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_ImageDispose($hImage)
    _WinAPI_ReleaseDC($hWnd, $hDC)
    _WinAPI_DeleteDC($memDC)
    _WinAPI_DeleteObject($memBmp)
    _GDIPlus_Shutdown()
    EndFunc ;==>_Print

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

    ;------------------------------ Get Default printer --------------------------------
    Func _GetDefaultPrinter()
    Local $szDefPrinterName
    Local $Size
    Local $namesize = DllStructCreate("dword")
    DllCall("winspool.drv", "int", "GetDefaultPrinter", "str", '', "ptr", DllStructGetPtr($namesize))
    Local $pname = DllStructCreate("char[" & DllStructGetData($namesize, 1) & "]")
    DllCall("winspool.drv", "int", "GetDefaultPrinter", "ptr", DllStructGetPtr($pname), "ptr", DllStructGetPtr($namesize))
    Return DllStructGetData($pname, 1);msgbox(0,dllstructgetdata($namesize,1),DllStructGetData($pname,1))
    EndFunc ;==>_GetDefaultPrinter

    [/autoit]