Kommandozeile / DLLs einbinden
- EgonEprom
- Beiträge: 24
- Registriert: 15.02.2010 18:18
- Computerausstattung: Windows2000-XP-Vista-7
- Wohnort: Saarwellingen
Kommandozeile / DLLs einbinden
Hallo allemiteinander
hab mal wieder 2 Fragen, zu denen ich im Handbuch keine Hilfe finde:
1. Wie komme ich an den vollständigen Kommandozeilen-String: gibt es da
a) ein Hintertürchen oder
b) muß ich für alle i% = 0 to CountProgramParameters() die ProgramParameter(i%) zusammenfassen - und welche Zeichen gehen dabei verloren ?
2. Kann ich eine DLL in mein *.EXE einbinden und von "intern" laden - ähnlich die *.WAV-Datei, die mittels
label: IncludeBinary "datei.WAV"eingebunden wird und dann zur Laufzeit per CatchSound(#num,?label)
geladen wird und nicht mehr als externe Datei existieren muß (wäre wohl praktisch, wenn das Programm immer seine DLL dabei hat - und zwar die richtige...)
danke vorab & mfg
EgonEprom
hab mal wieder 2 Fragen, zu denen ich im Handbuch keine Hilfe finde:
1. Wie komme ich an den vollständigen Kommandozeilen-String: gibt es da
a) ein Hintertürchen oder
b) muß ich für alle i% = 0 to CountProgramParameters() die ProgramParameter(i%) zusammenfassen - und welche Zeichen gehen dabei verloren ?
2. Kann ich eine DLL in mein *.EXE einbinden und von "intern" laden - ähnlich die *.WAV-Datei, die mittels
label: IncludeBinary "datei.WAV"eingebunden wird und dann zur Laufzeit per CatchSound(#num,?label)
geladen wird und nicht mehr als externe Datei existieren muß (wäre wohl praktisch, wenn das Programm immer seine DLL dabei hat - und zwar die richtige...)
danke vorab & mfg
EgonEprom
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Kommandozeile / DLLs einbinden
Zu 1: Alternativ die API nehmen, wenn Du es lieber unbequem möchtest
Unter Windows wäre das: http://msdn.microsoft.com/en-us/library ... 85%29.aspx
oder Dein Hintertürchen, wobei sich mir der Sinn nicht erschließen will.
Zu 2: Wird nicht unterstützt. Es gibts einen C-Code von Joachim Bauch für 32-Bit Windows,
den zur lib kompilieren (mit PellesC z.B.) und in PB importieren oder testen ob die entsprechende Lib in PBOSL
(LoadDLLFromMemory o. ä.)noch funktioniert.
Gruß
Thomas

Unter Windows wäre das: http://msdn.microsoft.com/en-us/library ... 85%29.aspx
oder Dein Hintertürchen, wobei sich mir der Sinn nicht erschließen will.
Zu 2: Wird nicht unterstützt. Es gibts einen C-Code von Joachim Bauch für 32-Bit Windows,
den zur lib kompilieren (mit PellesC z.B.) und in PB importieren oder testen ob die entsprechende Lib in PBOSL
(LoadDLLFromMemory o. ä.)noch funktioniert.
Gruß
Thomas
Re: Kommandozeile / DLLs einbinden
So ist es eventuell etwas schlanker:
Code: Alles auswählen
Repeat
Parameter.s = ProgramParameter()
Select Parameter
;[...]
EndSelect
Until Len(Parameter) = 0
"Menschenskinder, das Niveau dieses Forums singt schon wieder!" — GronkhLP ||| "ich hogffe ihr könnt den fehle endecken" — Marvin133 ||| "Ideoten gibts ..." — computerfreak ||| "Jup, danke. Gruss" — funkheld
Re: Kommandozeile / DLLs einbinden
Ich würde das so machen:EgonEprom hat geschrieben:1. Wie komme ich an den vollständigen Kommandozeilen-String:
Code: Alles auswählen
Procedure.s ProgramParameters()
Protected ProgramParameter$, ProgramParameters$ = ""
ProgramParameter$ = ProgramParameter()
While ProgramParameter$<>""
ProgramParameters$ + ProgramParameter$ + " "
ProgramParameter$ = ProgramParameter()
Wend
ProcedureReturn RTrim(ProgramParameters$)
EndProcedure
Debug ">"+ProgramParameters()+"<"

PB 6.10 LTS (x64) - Win10/11
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Kommandozeile / DLLs einbinden
In diesem Falle ist eine fußgesteuerte Schleife aber günstiger
Habs mal angepaßt, desweiteren hab ich ein LCase() hinzugefügt, da
die Auswertung von KommandZeilenparameter im allg. ja CaseInsensitive
gemacht wird.
Aber der Sinn des Zusammenfügens entzieht sich mir immer noch.
Weil am prakt. ist doch die Auswertung wie in c4s seinem Beispiel.
Gruß
Thomas

Habs mal angepaßt, desweiteren hab ich ein LCase() hinzugefügt, da
die Auswertung von KommandZeilenparameter im allg. ja CaseInsensitive
gemacht wird.
Code: Alles auswählen
Procedure.s ProgramParameters()
Protected ProgramParameter$, ProgramParameters$ = ""
Repeat
ProgramParameter$ = ProgramParameter()
ProgramParameters$ + ProgramParameter$ + " "
Until ProgramParameter$ = ""
ProcedureReturn LCase(RTrim(ProgramParameters$))
EndProcedure
Debug ">" + ProgramParameters() + "<"
Weil am prakt. ist doch die Auswertung wie in c4s seinem Beispiel.
Gruß
Thomas
Re: Kommandozeile / DLLs einbinden
...In diesem Falle ist eine fußgesteuerte Schleife aber günstiger...
Klar! - Ich war ein bisschen zu schnell mit tippen und wegschicken
Das LCase() hatte ich allerdings absichtlich weggelassen, da ich es so verstanden hatte, dass EgonEprom den kompletten (unveränderten) Kommandozeilen-String haben möchte. Er hatte ja gefragt, welche Zeichen verloren gehen.
Gruß
Sven
Klar! - Ich war ein bisschen zu schnell mit tippen und wegschicken

Das LCase() hatte ich allerdings absichtlich weggelassen, da ich es so verstanden hatte, dass EgonEprom den kompletten (unveränderten) Kommandozeilen-String haben möchte. Er hatte ja gefragt, welche Zeichen verloren gehen.

Gruß
Sven
PB 6.10 LTS (x64) - Win10/11
Re: Kommandozeile / DLLs einbinden
Hallo,
ist es auch möglich die komplette Kommandozeile exakt zu erhalten (ohne %0) ?
In der vorherigen Beispielen gibt es Probleme mit Ausführungszeichen, diese werden entfernt.
Gruß
Jon
ist es auch möglich die komplette Kommandozeile exakt zu erhalten (ohne %0) ?
In der vorherigen Beispielen gibt es Probleme mit Ausführungszeichen, diese werden entfernt.
Gruß
Jon
PureBasic 5.46 LTS (Windows x86/x64) | windows 10 x64 Oktober failure
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Kommandozeile / DLLs einbinden
Hab zwar bereits auf die API hingewiesen, aber hier nochmals in klarschrift_JON_ hat geschrieben:Hallo,
ist es auch möglich die komplette Kommandozeile exakt zu erhalten (ohne %0) ?
In der vorherigen Beispielen gibt es Probleme mit Ausführungszeichen, diese werden entfernt.
Gruß
Jon

Code: Alles auswählen
Debug PeekS(GetCommandLine_())
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

- NicTheQuick
- Ein Admin
- Beiträge: 8807
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Re: Kommandozeile / DLLs einbinden
Zudem ist Kleinschrift schlecht für Dateinamen, die nur unter Windows caseinsensitive sind.
Re: Kommandozeile / DLLs einbinden
Danke für die schnelle Antwort
Leider stehen API in der DEMO Version nicht zur Verfügung und Ich wollte erstmal reinschnuppert.

Code: Alles auswählen
Debug PeekS(GetCommandLine_())
PureBasic 5.46 LTS (Windows x86/x64) | windows 10 x64 Oktober failure