PB.Ex-Wünsche

Du brauchst Grafiken, gute Programme oder Leute die dir helfen? Frag hier.
Benutzeravatar
Imhotheb
Beiträge: 192
Registriert: 10.10.2014 13:14
Computerausstattung: Intel 8086, 640 KB RAM, Hercules Video Adapter, 2 x 5 1/4" 360kb Floppy, MS-DOS 3
Wohnort: Wolfenbüttel

Re: PB.Ex-Wünsche

Beitrag von Imhotheb »

Für mein aktuelles Projekt bräuchte ich eine ICMP-Funktion (Ping würde auch schon reichen :wink: ). Vielleicht wäre das noch etwas für PB.Ex Network ?
Ich habe schon ein paar Beispiele versucht, doch diese verstehe ich nicht wirklich und sie funktionieren auch nicht wirklich.
weil einfach einfach einfach ist ... mach' ich es anders
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: PB.Ex-Wünsche

Beitrag von RSBasic »

hjbremer hat geschrieben:Druckerbiblio mit Requester der die vorhandenen Abfragen unterstützt (alles, markiert Seite von bis etc)
Umrechnung Auflösung Screen Drucker in Twips oder inch usw........

Besonders Texte und Listen drucken.

Also alles was mit PrintDlg und Devmode zusammenhängt.
Andesdaf hat geschrieben:Der Bitte nach Druckerfunktionen würde ich mich anschließen. Das wäre wirklich Klasse.
Mijikai hat geschrieben:
Andesdaf hat geschrieben:Der Bitte nach Druckerfunktionen würde ich mich anschließen. Das wäre wirklich Klasse.
+1
Was für Funktionen werden da genau von euch benötigt? Habt ihr Beispielcodes, wie man es ungefähr macht?
Sollen Texte oder Dateien an den Drucker-Treiber geschickt werden? Mit oder ohne PrintDlg_()?
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
HeX0R
Beiträge: 2954
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win10 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2
Kontaktdaten:

Re: PB.Ex-Wünsche

Beitrag von HeX0R »

TroaX hat geschrieben:[...]IMAP und POP3 wären nicht schlecht.[...]
Dafür hätte ich aktuell Verwendung, daher
+1
Benutzeravatar
SDL
Beiträge: 65
Registriert: 15.09.2006 05:19
Computerausstattung: MSI 990FXA-GD80
AMD FX-8350(3,1GHz) 4-4,4GHz
Corsair Dominator Platinum 8GB 2133 (2240)
2 Nvidia GeForce GTX 550Ti
Xilence XQ semipassives Netzteil 750Watt
SATA III WDC WD10 1TB
SATA III SSD Toshiba 128 GB
SATA III SSD Samsung 840 EVO 250 GB
eSATA WDC WD SE16 500 GB

Wassergekühlt

Win 7 pro
Leistungsindex 7,8
Wohnort: Hansestadt Stendal

Re: PB.Ex-Wünsche

Beitrag von SDL »

Was für Funktionen werden da genau von euch benötigt? Habt ihr Beispielcodes, wie man es ungefähr macht?
Sollen Texte oder Dateien an den Drucker-Treiber geschickt werden? Mit oder ohne PrintDlg_()?
Ich bin hier am Basteln. Das ist mein Grundgerüst. Komme aber aus Zeitmangel und Prioritäten zur Zeit nicht weiter.
Soll für die IDE sein. Also nur für Text ohne ein Editor zu mißbrauchen.

Code: Alles auswählen

;******************************************************************************
;*                                                                            *
;*     (c) SDL                                                                *
;*                                                                            *
;******************************************************************************
;*                                                                            *
;* Project: Seitendruck für IDE                                               *
;*                                               [x]Win [ ]DOS [ ]DLL         *
;*                                                                            *
;* Version: 1.0.0.0                                                           *
;*                                                                            *
;******************************************************************************
;{
;   Breite des Ausgabebereichs = 203 mm
;     Höhe des Ausgabebereichs = 289 mm
; Drucker Horizontal Auflösung = 600 dpi
;   Drucker Vertical Auflösung = 600 dpi
;      Horizontale Pixel je mm = 24 Pixel
;        Vertikale Pixel je mm = 24 Pixel
;              linker Punkt(x) = 3 mm      ; nicht bedruckbar
;              oberer Punkt(y) = 2 mm      ; nicht bedruckbar
;           phys. Blattbreite: = 206 mm
;            phys. Blatthoehe: = 292 mm
; -------------------------------------------------------------
;            rechte Randbreite = 0 mm      ; nicht bedruckbar 
;            untere Randbreite = 1 mm      ; nicht bedruckbar 
; Texthöhe 3.4395828247
; 81 
; 80 Zeichen je Zeile
; Texthöhe 3.4395828247
; Canon iP7200
;

;   Breite des Ausgabebereichs = 210 mm
;     Höhe des Ausgabebereichs = 297 mm
;      Horizontale Pixel je mm = 24 Pixel
;        Vertikale Pixel je mm = 24 Pixel
;              linker Punkt(x) = 0 mm       ; nicht bedruckbar
;              oberer Punkt(y) = 0 mm       ; nicht bedruckbar
;           phys. Blattbreite: = 206
;            phys. Blatthoehe: = 292
; -------------------------------------------------------------
; rechter Rand der nicht bedruckbar ist = -4 mm 
; unterer Rand der nicht bedruckbar ist = -5 mm
; Texthöhe 3.4395828247
; 81
; 80
; Texthöhe 3.4395828247
; 7-PDF Drucker
;******************************************************************************
;}


; GetTextExtentPoint
; GetTextExtentPoint32
; GetTextExtentPoint32W function

;******************************************************************************
;* Variablendefinition                                                        *
;******************************************************************************

EnableExplicit
; #True = 1 / #False = 0

;{ Declaration der Proceduren

Declare Seiten_parameter()
Declare Ausdruck_parameter () 
Declare Pixel_pro_Inch_x (prt_)
Declare Pixel_pro_Inch_y (prt_)
Declare Physikalisch_OffSet_x(prt_)
Declare Physikalisch_OffSet_y(prt_)
Declare Physikalisch_Seitenbreite (prt_)
Declare Physikalisch_Seitenhoehe (prt_)
Declare Standartdrucker()
;}

;{ Struktur der Programmparameter
Structure Printpage
    l_Rand.u
    r_Rand.u
    o_Rand.u
    u_Rand.u
    o_Line.b
    u_line.b
    Schrift.s
    Schriftg.b
    Format.s 
    Ausrichtung.b
    Druckername.s
EndStructure
;}

;{ Globale Variablen

Prototype.s GetDefaultPrinter(Printer.s, *buffer)

Global Dim PageInfo.Printpage(1)

Global x$,x1$,Text$     ; Testvariablen
Global x                ; Anzahl der Zeichen je zeile
Global x_Zeile          ; Zeilenlänge in mm

Global Horizontale_Pixel_je_mm
Global Vertikale_Pixel_je_mm

Global Vector_width_mm  ; Breite des Vektorzeichnen-Ausgabebereichs / !! #PB_Unit_Millimeter !!
Global Vector_height_mm ; Höhe des Vektorzeichnen-Ausgabebereichs

Global xL_Rand_mm.l  ; Abstand vom linken Rand der physischen Seite an den linken Rand des Druckbereichs (mm)
Global yO_Rand_mm.l ; den Abstand von der Oberkante der physischen Seite an der oberen Kante des druckbaren Bereichs (mm)
Global xR_Rand_mm.l
Global yU_Rand_mm.l

Global Blattbreite_mm.l  ; Die Breite des physikalischen Bildschirms/Blattes in Millimeter
Global Blattlaenge_mm.l  ; Die Höhe des physikalischen Bildschirms/Blattes in Millimetern.

Global phPrinter.l  ; PrinterHandle als long
Global StdPrinter$  ; Standarddrucker
Global Printer      ; Drucker Voreinstellung
;
;}

Ausdruck_parameter () ; auf Standard stellen

;{ Konstante

;}



;{ Lokale Variablen
; 
; Define 
;
;}



;******************************************************************************


DefaultPrinter()    ; Wählt den Standard-Drucker als aktuellen Drucker für die Druckoperation

LoadFont(0, "Lucida Console",10)   ;Versucht den angegebenen Zeichensatz zu öffnen.
;LoadFont(0, "Courier New",12)

;******************************************************************************

;******************************************************************************
;*                                                                            *
;* Programm                                                                   *
;*                                                                            *
;******************************************************************************





If PrintRequester()         ; öffnet den Printerrequester
    
    If StartPrinting("PB-druck") ;Initialisiert den Drucker und startet die Druck-Operation
        
        Printer = PrinterVectorOutput(#PB_Unit_Millimeter)
        
        If StartVectorDrawing(Printer)
            
            Seiten_parameter()  ; Seitenparameter erfragen
            
            Text$ = "Every drawing output has a default unit of measurement. The default unit is pixels " +
                    "for screen or raster image outputs and points for printer or vector image outputs. " +
                    "It is however possible to select a different unit of measurement for the output when " +
                    "creating it with the ImageVectorOutput(), PrinterVectorOutput() or similar function."
            
            VectorFont(FontID(0))
            
            MovePathCursor(105,14)
            DrawVectorText("1")
        
            MovePathCursor(20,18) : AddPathLine(200,18)
            StrokePath(0.2, #PB_Path_DiagonalCorner)
            MovePathCursor(20,277) : AddPathLine(200,277)
            StrokePath(0.2, #PB_Path_DiagonalCorner)
            
            
            ; Debug "Texthöhe " + VectorTextHeight("B")
            
            
            MovePathCursor(30, 20)
            DrawVectorText(x$)
            MovePathCursor(30,20+VectorTextHeight("Aj"))
            DrawVectorText(x1$)
            MovePathCursor(30, 20 + 2*VectorTextHeight("Aj"))
            DrawVectorParagraph(Text$, 170, 200)
            
            
            StopVectorDrawing()
        EndIf
        
        ; Dem Drucker sagen, dass eine neue Seite begonnen wird
        ;NewPrinterPage()
        
        
        StopPrinting()
    EndIf
EndIf

End
;******************************************************************************

;******************************************************************************
;*                                                                            *
;* Prozeduren                                                                 *
;*                                                                            *
;******************************************************************************
;

;******************************************************************************
Procedure Seiten_parameter()
    
    If Printer
        VectorFont(FontID(0)) 
        
        ;Druckbarer Bereich in mm
        
        Vector_width_mm = VectorOutputWidth()  ;Gibt die Breite des Vektorzeichnen-Ausgabebereichs in mm zurück
        
        Vector_height_mm = VectorOutputHeight() ;Gibt die Höhe des Vektorzeichnen-Ausgabebereichs in mm zurück
        
;         Debug "Breite des Ausgabebereichs = " + VectorOutputWidth() + " mm"
;         Debug " Höhe des Ausgabebereichs = " + VectorOutputHeight() + " mm"   
        
        
        Horizontale_Pixel_je_mm = Pixel_pro_Inch_x (Printer)
        Vertikale_Pixel_je_mm = Pixel_pro_Inch_y (Printer)
        
;         Debug "Horizontale Pixel je mm " + Horizontale_Pixel_je_mm
;         Debug "  Vertikale Pixel je mm " + Vertikale_Pixel_je_mm
        
        xL_Rand_mm = Physikalisch_OffSet_x(Printer)
        yO_Rand_mm = Physikalisch_OffSet_y(Printer)
        
;         Debug "linker Punkt(x) " + xL_Rand_mm + " mm"
;         Debug "oberer Punkt(y) " + yO_Rand_mm + " mm"
        
        
        Blattbreite_mm = Physikalisch_Seitenbreite(Printer)
        Blattlaenge_mm = Physikalisch_Seitenhoehe(Printer)
        
;         Debug "phys. Blattbreite: " + Blattbreite_mm
;         Debug "phys. Blatthoehe: " + Blattlaenge_mm
        
        xR_Rand_mm =  Blattbreite_mm - Vector_width_mm - xL_Rand_mm ; rechter Rand der nicht bedruckbar ist
        
        yU_Rand_mm =  Blattlaenge_mm - Vector_height_mm - yO_Rand_mm ; unterer Rand der nicht bedruckbar ist
        
        Debug "------"
;         Debug "rechter Rand der nicht bedruckbar ist " + xR_Rand_mm + " mm "
;         Debug "unterer Rand der nicht bedruckbar ist" + yU_Rand_mm + " mm"
    EndIf
    
    
    ;Debug VectorTextWidth("1234567890")
;     Debug "Texthöhe " + VectorTextHeight("B")
    
    x_Zeile = Blattbreite_mm - PageInfo.Printpage(1)\l_Rand - PageInfo.Printpage(1)\r_Rand
    
    x=0
    x$=""
    Repeat
        x +1
        x$=x$+"B"
        
    Until VectorTextWidth(x$)>= x_Zeile ; Zeilenlänge in mm 
    Debug x
    If VectorTextWidth(x$)>x_Zeile
        x-1
        x1$ = Mid(x$,1,x)
        
    EndIf
    Debug  x
    
EndProcedure
;******************************************************************************
Procedure Ausdruck_parameter () ; Werte auf Standard setzen
    Protected.b x
    
    For x=0 To 1  
        With PageInfo (x)
            \l_Rand = 30
            \r_Rand = 10
            \o_Rand = 20
            \u_Rand = 20
            \o_Line = 1     ; 1= obere Linie Zeichnen / 0= keine
            \u_line = 1     ; 1= untere Linie Zeichnen / 0= keine
            \Schrift = "Lucida Console"
            \Schriftg = 10
            \Ausrichtung = 1 ; 1= Hochformat / 0 = Querformat
            \Druckername =  ""
        EndWith 
        
    Next x  
    
EndProcedure

;******************************************************************************
Procedure Pixel_pro_Inch_x (prt_)
    Protected mm = 25.4 ;1 Inch = 25,4 mm
                        ;API Die Funktion GetDeviceCaps ermittelt gerätespezifische Informationen über einen angegebenen Gerät.
                        ;#LOGPIXELSX -Die Anzahl an Pixel pro Inch entlang der Bildschirm-/Blatt- breite.
    
    ProcedureReturn GetDeviceCaps_(prt_,#LOGPIXELSX) / mm  
EndProcedure

;******************************************************************************
Procedure Pixel_pro_Inch_y (prt_)
    Protected mm = 25.4 ;1 Inch = 25,4 mm
                        ;API Die Funktion GetDeviceCaps ermittelt gerätespezifische Informationen über einen angegebenen Gerät.
                        ;#LOGPIXELSY -Die Anzahl an Pixel pro Inch entlang der Bildschirm-/Blatt- höhe.
    
    ProcedureReturn GetDeviceCaps_(prt_,#LOGPIXELSY) / mm
EndProcedure

;******************************************************************************
Procedure Physikalisch_OffSet_x(prt_)
    ;API Die Funktion GetDeviceCaps ermittelt gerätespezifische Informationen über einen angegebenen Gerät. 
    ;#PHYSICALOFFSETX -Das Offset in x-Richtung, linke obere Ecke vom Blattrand zum druckbaren Bereich, in Pixel
    
    ProcedureReturn  GetDeviceCaps_(prt_,#PHYSICALOFFSETX) / Pixel_pro_Inch_x(prt_)  ; Linker Rand der nicht bedruckbar ist   
EndProcedure

;******************************************************************************
Procedure Physikalisch_OffSet_y(prt_)
    ;API Die Funktion GetDeviceCaps ermittelt gerätespezifische Informationen über einen angegebenen Gerät. 
    ;#PHYSICALOFFSETY -Das Offset in y-Richtung von der oberen linken Ecke, in Pixel.
    
    ProcedureReturn GetDeviceCaps_(prt_,#PHYSICALOFFSETY) / Pixel_pro_Inch_y(prt_)  ; Oberer Rand der nicht bedruckbar ist
EndProcedure

;******************************************************************************
Procedure Physikalisch_Seitenbreite (prt_)
    ;API Die Funktion GetDeviceCaps ermittelt gerätespezifische Informationen über einen angegebenen Gerät
    ;#PHYSICALWIDTH -Für Druckgeräte: Die Breite der physischen Seite, in Pixel.
    
    ProcedureReturn  GetDeviceCaps_(prt_,#PHYSICALWIDTH) / Pixel_pro_Inch_x (prt_)  
EndProcedure

;******************************************************************************
Procedure Physikalisch_Seitenhoehe (prt_)
    ;API Die Funktion GetDeviceCaps ermittelt gerätespezifische Informationen über einen angegebenen Gerät
    ;#PHYSICALHEIGHT -Für Druckgeräte: die Höhe der physischen Seite, in Pixel.
    
    ProcedureReturn GetDeviceCaps_(prt_,#PHYSICALHEIGHT) /  Pixel_pro_Inch_y(prt_)   
EndProcedure

;******************************************************************************
Procedure Standartdrucker() 
    ;     DWORD GetPrivateProfileString(
    ;     
    ;     LPCTSTR lpAppName,	// points To section name 
    ;     LPCTSTR lpKeyName,	// points To key name 
    ;     LPCTSTR lpDefault,	// points To Default string 
    ;     LPTSTR lpReturnedString,	// points To destination buffer 
    ;     DWORD nSize,	// size of destination buffer 
    ;     LPCTSTR lpFileName 	// points To initialization filename 
    ;     );    
    
    ;Standardrucker-Namen ermitteln
    
    StdPrinter$ = Space(260)
    GetPrivateProfileString_("WINDOWS","DEVICE","", @StdPrinter$, 260, "Win.Ini")
    StdPrinter$ = StringField(StdPrinter$, 1,",")
    Debug StdPrinter$
    
    phPrinter.l = 0
    OpenPrinter_(StdPrinter$,@phPrinter.l,0)    
    
    Debug phPrinter
    ClosePrinter_(phPrinter)
EndProcedure
Zu meiner Schulzeit war die Bildung kostenlos, für einige aber Umsonst.
Andesdaf
Moderator
Beiträge: 2657
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Re: PB.Ex-Wünsche

Beitrag von Andesdaf »

RSBasic hat geschrieben: Was für Funktionen werden da genau von euch benötigt? Habt ihr Beispielcodes, wie man es ungefähr macht?
Sollen Texte oder Dateien an den Drucker-Treiber geschickt werden? Mit oder ohne PrintDlg_()?
Mir persönlich würde schon reichen, ein PB-Image einfach an den Drucker senden zu können und dabei Steuerungsmöglichkeiten für Format, Orientierung, Kopienanzahl und zu verwendenden Drucker zu haben. Das Image enthält dann bereits Texte und Tabellen, die ich mir selbst zusammengebaut habe.
Win11 x64 | PB 6.00 (x64)
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: PB.Ex-Wünsche

Beitrag von RSBasic »

Ok danke für die Infos. Print schau ich mir später an. Derzeit bin ich an PB.Ex Mail dran (IMAP und POP3 und ggf. SMTP).
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: PB.Ex-Wünsche

Beitrag von RSBasic »

TroaX hat geschrieben:Vielleicht auch ein besseres SMTP als die Mailfunktionen von PB.
Was gibt es für Nachteile beim Versenden einer Mail mit PB oder was fehlt da?
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: PB.Ex-Wünsche

Beitrag von RSBasic »

Hi TroaX,

du hast vielleicht meine Frage übersehen. Da PB.Ex Mail (IMAP und POP3) derzeit in Entwicklung ist und du geschrieben hast, dass du ein besseres SMTP haben möchtest:
RSBasic hat geschrieben:
TroaX hat geschrieben:Vielleicht auch ein besseres SMTP als die Mailfunktionen von PB.
Was gibt es für Nachteile beim Versenden einer Mail mit PB oder was fehlt da?
Danke im Voraus.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Kurzer
Beiträge: 1614
Registriert: 25.04.2006 17:29
Wohnort: Nähe Hamburg

Re: PB.Ex-Wünsche

Beitrag von Kurzer »

<OFFTOPIC>
Moin RSBasic, eine kurze Frage: Warum nennst Du Deine Module "ModulnameEx" ?
Ich sehe das immer öfter - auch von anderen Usern, dass die Namenskonvention von Microsoft (WinAPI) als Vorlage verwendet wird. Bei Microsoft ist es meines Wissens nach so, dass sie einer Funktion den Zusatz "Ex" geben, wenn eine neue Version der Funktion herausgekommen ist, die parametertechnisch nicht mehr zur alten Version kompatibel ist.

Böse Zungen sagen ja, bei Microsoft bedeute das Ex: "Entschuldigen Sie uns (engl.: Excuse me), aber wir haben diese Sache beim ersten Mal nicht richtig gemacht. Leider können wir diese bereinigte Funktion nicht einfach hinzufügen, weil sie die bestehende Schnittstelle brechen würde, also haben wir hier diese neue Funktion für Sie" :lol:

Das kann hier ja eigentlich nicht der Fall sein. Wofür steht bei Dir das Ex?
</OFFTOPIC>

Beste Grüße
Shorty :)
"Never run a changing system!" | "Unterhalten sich zwei Alleinunterhalter... Paradox, oder?"
PB 6.02 x64, OS: Win 7 Pro x64 & Win 11 x64, Desktopscaling: 125%, CPU: I7 6500, RAM: 16 GB, GPU: Intel Graphics HD 520
Useralter in 2023: 56 Jahre.
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: PB.Ex-Wünsche

Beitrag von RSBasic »

Hi Kurzer,
Kurzer hat geschrieben:Bei Microsoft ist es meines Wissens nach so, dass sie einer Funktion den Zusatz "Ex" geben, wenn eine neue Version der Funktion herausgekommen ist, die parametertechnisch nicht mehr zur alten Version kompatibel ist.
Genau so ist es. Da bei WinAPI keine Überladung gibt, wird eine neue Funktion mit dem Zusatz "Ex" hinzugefügt.
Es gibt sogar EnumCalendarInfoExEx_(): https://docs.microsoft.com/en-us/window ... arinfoexex :mrgreen:
Kurzer hat geschrieben:Wofür steht bei Dir das Ex?
Ex steht, wie bei WinAPI, für "Extended" und meine .NET-Bibliothek haben immer ein Präfix "PB.Ex" und bedeutet, dass ich die Funktionalität von PB mit meinen Bibliotheken erweitere, da die Bibliotheken von PB teilweise sehr eingeschränkt sind. Beispielsweise kann PB nur FTP ohne SFTP und FTPS, aber mit meiner Bibliothek werden auch andere Protokolle unterstützt. Genauso wie bei "Network".
Das ist auch mein Ziel, damit die (Windows-)PB-User auf solche Funktionen nicht verzichten müssen oder nicht lange auf das Update von Fred/freak warten müssen.
Und ich versuche, die Funktion-Aufrufstruktur von PB zu übernehmen, damit es sehr ähnlich ist. Z.B. OpenFTP() & OpenFTPEx() oder FTPDirectoryEntryName() & FTPDirectoryEntryNameEx()
So ist es einfacher, einen originalen PB-Code in meinen DLL-Code zu konvertieren.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Antworten