ProgramParameter() - Get Selected Files Explorer
Re: ProgramParameter() - Get Selected Files Explorer
Weil das Tool hinterher noch Optionen Abfragen kann, das würde sich nur mit vielen Order erledigen lassen.
Das es andere Wege gibt, ist mir klar, ich möchte aber gerne verstehen wie andere Tools das machen.
Das es andere Wege gibt, ist mir klar, ich möchte aber gerne verstehen wie andere Tools das machen.
Re: ProgramParameter() - Get Selected Files Explorer
@kunstlust
Der Eintrag "ZIP-komprimierter Ordner" basiert auf die Datei "ZIP-komprimierter Ordner.ZFSendToTarget" mit dem Inhalt "Zip".
Diese Datei ist in der Registry mit der GUID "{888DCA60-FC0A-11CF-8F0F-00C04FD7D062}" mit der zipfldr.dll-Datei registriert.
Ist wahrscheinlich ebenfalls ein Handler, der das alles abfängt.
Der Eintrag "ZIP-komprimierter Ordner" basiert auf die Datei "ZIP-komprimierter Ordner.ZFSendToTarget" mit dem Inhalt "Zip".
Diese Datei ist in der Registry mit der GUID "{888DCA60-FC0A-11CF-8F0F-00C04FD7D062}" mit der zipfldr.dll-Datei registriert.
Ist wahrscheinlich ebenfalls ein Handler, der das alles abfängt.
Re: ProgramParameter() - Get Selected Files Explorer
Gerade was gefunden:
Sollten weniger ankommen, dann ist das eine Einschränkung von PB und damit eigentlich schon ein Bug.
https://support.microsoft.com/en-us/kb/830473On computers running Microsoft Windows XP or later, the maximum length of the string that you can use at the command prompt is 8191 characters. On computers running Microsoft Windows 2000 or Windows NT 4.0, the maximum length of the string that you can use at the command prompt is 2047 characters.
Sollten weniger ankommen, dann ist das eine Einschränkung von PB und damit eigentlich schon ein Bug.
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Re: ProgramParameter() - Get Selected Files Explorer
Nicht, wenn irgendwo im Programm dieses merkwürdige #MAX_PATH auftaucht. Das wird irgendwie immer genommen, wenn es um PfadeGPI hat geschrieben:Sollten weniger ankommen, dann ist das eine Einschränkung von PB und damit eigentlich schon ein Bug.
dimensionieren geht. Warum erschloß sich mir bisher nie....
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom
Re: ProgramParameter() - Get Selected Files Explorer
Warum ist schnell geklärt, der Name sagt alles. Das war mal früher die maximale Pfadlänge und auch viele APIs haben die Begrenzung - wenn ich mich richtig erinnere, gerade wenn man die ANSI-Version benutzt. Warum das ganze? Abwärtskompatiblität.
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Re: ProgramParameter() - Get Selected Files Explorer
Beim Ntfs gibt es auch diese magischen 255 beim Datei Namen. Aber warum löst man das mit dem ProgramParameter nich so
das ältere OSes ihre 255 Zeichen eintippen und lesen können aber aktuelle Systeme können mehr. Es wird lediglich mehr Speicher zugewiesen.
Warum tut sich MS so schwer? Warum muss das alles statisch sein und nicht dynamisch? Ich nehme an MS macht so: Warum nicht so? Mit Pb klappts doch auch.
das ältere OSes ihre 255 Zeichen eintippen und lesen können aber aktuelle Systeme können mehr. Es wird lediglich mehr Speicher zugewiesen.
Warum tut sich MS so schwer? Warum muss das alles statisch sein und nicht dynamisch? Ich nehme an MS macht so:
Code: Alles auswählen
PeekS(*ProgramParameter, 255)
Code: Alles auswählen
PeekS(*ProgramParameter)
Re: ProgramParameter() - Get Selected Files Explorer
Generell können Dateinamen unter Windows diese magische Grenze nicht überschreiten. Wenn man es trotzdem versucht, erhält man folgende Meldung:
Ausnahme sind ansonsten nur Anwendungen die neue APIs verwenden und dadurch mehr Zeichen zulassen. Aber der Explorer sollte generell bei 255 Zeichen begrenzen.
Afaik ist es nicht möglich längere Dateinamen zu erstellen, auch nicht auf einem Netzwerkshare per UNC Pfad. Ausnahme könnten hier evtl. in Verbindung mit einem Samba Share auftreten. Es dürfte also gar nie zu dem Problem kommen, dass der Pfad länger ist als per ProgramParameter übergeben werden kann.Der erstelle Dateiname ist zu lang.
Wiederholen Sie den Vorgang mit einem kürzeren Dateinamen oder erstellen Sie die Datei in einem Ordner, der einen kürzeren Pfad hat.
Ausnahme sind ansonsten nur Anwendungen die neue APIs verwenden und dadurch mehr Zeichen zulassen. Aber der Explorer sollte generell bei 255 Zeichen begrenzen.
Zuletzt geändert von mhs am 09.12.2015 12:21, insgesamt 1-mal geändert.
Michael Hack
Michael Hack Software :: Softwareentwicklung | Webentwicklung | IT-Dienstleistungen
www.michaelhacksoftware.de :: www.mh-s.de :: www.michael-hack.de
Michael Hack Software :: Softwareentwicklung | Webentwicklung | IT-Dienstleistungen
www.michaelhacksoftware.de :: www.mh-s.de :: www.michael-hack.de
Re: ProgramParameter() - Get Selected Files Explorer
Doch du kanst nämlich mehrere Parameter also mehrere Datei Pfaden übergeben
und die Max Länge ist schnell ereicht.
und die Max Länge ist schnell ereicht.
Re: ProgramParameter() - Get Selected Files Explorer
Ähm nein...
Wenn du mehrere Dateien übergibst, dann zählt die 255 Zeichenbeschränkung nur für jeden Dateinamen einzeln, nicht für alle zusammen.
Kannst du ja mal selbst ausprobieren:
Als Exe kompilieren und viele Dateien per Drag & Drop auf die Exe schieben.

Kannst du ja mal selbst ausprobieren:
Code: Alles auswählen
Define.i Length, i, Count
Count = CountProgramParameters()
For i = 0 To Count -1
Length + Len(ProgramParameter(i))
Next i
MessageRequester("Länge", Str(Length))
Michael Hack
Michael Hack Software :: Softwareentwicklung | Webentwicklung | IT-Dienstleistungen
www.michaelhacksoftware.de :: www.mh-s.de :: www.michael-hack.de
Michael Hack Software :: Softwareentwicklung | Webentwicklung | IT-Dienstleistungen
www.michaelhacksoftware.de :: www.mh-s.de :: www.michael-hack.de
Re: ProgramParameter() - Get Selected Files Explorer
Beim Aufruf mit selektierten Dateien wird Dein Programm mehrfach aufgerufen: für jede markierte Datei ein seperater Aufruf (instanzen), und hierbei sind 260 Zeichen meißt ausreichend.
Um´s via Explorer-Menü aufzurufen, ist wie folgt vorzugehen:
Eintrag im Explorer-Menü für "markierte Datei": (MENUETEXT erscheint im Explorer-Menü bei rechtsKlick)
Registry-Eintrag:
[HKEY_CLASSES_ROOT\*\shell\MENUETEXT\command]
@="PROGRAMM.EXE \"%1\"" (PROGRAMM.EXE = vollständiger Compilat-Dateiname incl. Pfad!!!)
viel Erfolg !
Um´s via Explorer-Menü aufzurufen, ist wie folgt vorzugehen:
Eintrag im Explorer-Menü für "markierte Datei": (MENUETEXT erscheint im Explorer-Menü bei rechtsKlick)
Registry-Eintrag:
[HKEY_CLASSES_ROOT\*\shell\MENUETEXT\command]
@="PROGRAMM.EXE \"%1\"" (PROGRAMM.EXE = vollständiger Compilat-Dateiname incl. Pfad!!!)
viel Erfolg !

