PB.Ex-Wünsche
- 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
Für mein aktuelles Projekt bräuchte ich eine ICMP-Funktion (Ping würde auch schon reichen ). 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.
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
Re: PB.Ex-Wünsche
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.
Was für Funktionen werden da genau von euch benötigt? Habt ihr Beispielcodes, wie man es ungefähr macht?Mijikai hat geschrieben:+1Andesdaf hat geschrieben:Der Bitte nach Druckerfunktionen würde ich mich anschließen. Das wäre wirklich Klasse.
Sollen Texte oder Dateien an den Drucker-Treiber geschickt werden? Mit oder ohne PrintDlg_()?
- HeX0R
- Beiträge: 2961
- 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
Dafür hätte ich aktuell Verwendung, daherTroaX hat geschrieben:[...]IMAP und POP3 wären nicht schlecht.[...]
+1
{Home}.:|:.{Codes}.:|:.{Downloads}.:|:.{History Viewer Online}
- 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
Ich bin hier am Basteln. Das ist mein Grundgerüst. Komme aber aus Zeitmangel und Prioritäten zur Zeit nicht weiter.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_()?
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.
Re: PB.Ex-Wünsche
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.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_()?
Win11 x64 | PB 6.10 (x64)
Re: PB.Ex-Wünsche
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).
Re: PB.Ex-Wünsche
Was gibt es für Nachteile beim Versenden einer Mail mit PB oder was fehlt da?TroaX hat geschrieben:Vielleicht auch ein besseres SMTP als die Mailfunktionen von PB.
Re: PB.Ex-Wünsche
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:
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:
Danke im Voraus.RSBasic hat geschrieben:Was gibt es für Nachteile beim Versenden einer Mail mit PB oder was fehlt da?TroaX hat geschrieben:Vielleicht auch ein besseres SMTP als die Mailfunktionen von PB.
Re: PB.Ex-Wünsche
<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"
Das kann hier ja eigentlich nicht der Fall sein. Wofür steht bei Dir das Ex?
</OFFTOPIC>
Beste Grüße
Shorty
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"
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 2024: 56 Jahre.
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 2024: 56 Jahre.
Re: PB.Ex-Wünsche
Hi Kurzer,
Es gibt sogar EnumCalendarInfoExEx_(): https://docs.microsoft.com/en-us/window ... arinfoexex
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.
Genau so ist es. Da bei WinAPI keine Überladung gibt, wird eine neue Funktion mit dem Zusatz "Ex" hinzugefügt.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.
Es gibt sogar EnumCalendarInfoExEx_(): https://docs.microsoft.com/en-us/window ... arinfoexex
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".Kurzer hat geschrieben:Wofür steht bei Dir das Ex?
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.