[Win-Konsolenanw.] Befehlszeile zu klein

Programmiersprachen, APIs, Bibliotheken, Open Source Engines, Debugging, Quellcode Fehler und alles was mit praktischer Programmierung zu tun hat.
Antworten
Benutzeravatar
Krishty
Establishment
Beiträge: 8267
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

[Win-Konsolenanw.] Befehlszeile zu klein

Beitrag von Krishty »

Hi,

Ich habe eine kleine Konsolenanwendung geschrieben, die per Drag-and-Drop Dateien verarbeitet. Allerdings scheint die Anzahl an der Buchstaben, die man der Anwendung so in ihre Befehlszeile übergeben kann, begrenzt zu sein – mit kurzen Ordnerpfaden und kurzen Dateinamen kann ich bis zu 30 Dateien übergeben, bei langen Ordnerpfaden und Dateinamen sind es kaum noch zehn. Bei allem darüber erscheint dieses Fenster:

Code: Alles auswählen

[Window Title]
C:\Users\Krishty\Desktop\Dingens.exe

[Content]
C:\Users\Krishty\Desktop\Dingens.exe

Der an einen Systemaufruf übergebene Datenbereich ist zu klein.


[OK]
Wo bitte kann man das korrigieren? Programme à 7-Zip können doch auch tausende Dateien entgegennehmen, ohne, dass es kracht … das Programm wurde mit VS 2008 Professional SP1 als Konsolenanwendung kompiliert.

Gruß, Ky
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Aramis
Moderator
Beiträge: 1458
Registriert: 25.02.2009, 19:50
Echter Name: Alexander Gessler
Wohnort: 2016
Kontaktdaten:

Re: [Win-Konsolenanw.] Befehlszeile zu klein

Beitrag von Aramis »

Was ist denn das exakte Limit, an dem dein Programm scheitert?
Nutzt du UNICODE? Die Multibyte-APIs haben iirc andere Längenlimits.

PS: Das hier kennst du ja vermutlich schon ..
Helmut
Establishment
Beiträge: 237
Registriert: 11.07.2002, 15:49
Wohnort: Bonn
Kontaktdaten:

Re: [Win-Konsolenanw.] Befehlszeile zu klein

Beitrag von Helmut »

Probiers vielleicht mal mit ner normalen Windowsanwendung, also keine Konsole. Laut dem guten alten Chen ist bei Konsolen das Limit kleiner. Weiß aber nicht, ob ich das jetzt richtig verstanden hab..

(Ich geh mal einfach davon aus, dass du mit Drag&Drop die Commandline meinst ;) Das eigentliche D&D gibts bei Konsolen ja nicht mehr)

Ciao
Benutzeravatar
Krishty
Establishment
Beiträge: 8267
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: [Win-Konsolenanw.] Befehlszeile zu klein

Beitrag von Krishty »

Aramis hat geschrieben:Was ist denn das exakte Limit, an dem dein Programm scheitert?
Nutzt du UNICODE? Die Multibyte-APIs haben iirc andere Längenlimits.

PS: Das hier kennst du ja vermutlich schon ..
Nein, das kannte ich noch nicht … eben getestet, kurz über 1,95 KiB liegt das Limit, das deckt sich ziemlich genau mit
If you are using the ShellExecute/Ex function, then you become subject to the INTERNET_MAX_URL_LENGTH (around 2048) command line length limit imposed by the ShellExecute/Ex functions.
Ich benutze die Wide-Char-Versionen der API-Calls, auch mit \\?\ vor den Pfaden und so, aber das bringt ja alles nichts, die Meldung erscheint bevor auch nur ein Byte meines Codes ausgeführt wird.
Helmut hat geschrieben:Probiers vielleicht mal mit ner normalen Windowsanwendung, also keine Konsole.
Ist ungünstig, bin auf die Konsole angewiesen :/
Helmut hat geschrieben:(Ich geh mal einfach davon aus, dass du mit Drag&Drop die Commandline meinst ;) Das eigentliche D&D gibts bei Konsolen ja nicht mehr)
Ja, also ich habe da meine .exe auf dem Desktop, markiere dann einfach eine Handvoll Dateien in irgendeinem Ordner, ziehe die auf die Exe und sie beginnt, sie zu verarbeiten. Das meine ich, finde ich sehr bequem, aber mit der Größenbegrenzung ist es ja total für den Popo.

Dann muss ich wohl anfangen, Shell-Extensions hinzuzufügen … denn damit scheinen ja bis zu 32k Buchstaben zu funzen (sieht man ja an den ganzen Packern). Schade, es war bisher soo schön einfach :(
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Chromanoid
Moderator
Beiträge: 4262
Registriert: 16.10.2002, 19:39
Echter Name: Christian Kulenkampff
Wohnort: Lüneburg

Re: [Win-Konsolenanw.] Befehlszeile zu klein

Beitrag von Chromanoid »

Vielleicht reicht es dir ja wenn dein Programm zusätzlich zu Dateien auch Ordner entgegen nimmt und daraus dann jede Datei verarbeitet... Aber wahrscheinlich nicht, sonst hättest du es ja wahrscheinlich schon getan... :)
Benutzeravatar
Krishty
Establishment
Beiträge: 8267
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: [Win-Konsolenanw.] Befehlszeile zu klein

Beitrag von Krishty »

Ja, ich habe gestern früh angefangen, das zu implementieren ... als Notlösung ist das okay, aber ich muss erstmal den ganzen Ordnerinhalt kostspielig analysieren und mir bestimmte Dateien rauspicken, was eigentlich der User tun sollte ...

... der einzig elegante Weg ist wohl, eine vernünftige Benutzeroberfläche mit Shell-Extension, Drag'n'Drop und viel Schnickschnack zu erstellen. Nervig, aber früher oder später wäre die eh fällig geworden.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Unknown GER
Beiträge: 49
Registriert: 09.01.2003, 13:04

Re: [Win-Konsolenanw.] Befehlszeile zu klein

Beitrag von Unknown GER »

http://zfx.info/viewtopic.php?f=4&t=306&start=0

Dort hatte ich auch schonmal gefragt und keine Antwort bekommen. ^^ Hab nur soviel rausgefunden, dass da wohl wirklich mit Tricks gearbeitet werden muss. Schau dir doch mal den Source Code von 7Zip an. Hatte damals einfach nicht genug Zeit dazu.
Benutzeravatar
Krishty
Establishment
Beiträge: 8267
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: [Win-Konsolenanw.] Befehlszeile zu klein

Beitrag von Krishty »

Ich habe gestern nochmal rumprobiert, auch mit 7-Zip etc. geht es nicht direkt (gleiche Fehlermeldung). Offenbar funktioniert die Übergabe ausschließlich, wenn man ein Kontextmenü im Explorer hat. Aber den Source werde ich mir nichtsdestrotrotz mal ansehen, schaden kann es schließlich nicht.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Chromanoid
Moderator
Beiträge: 4262
Registriert: 16.10.2002, 19:39
Echter Name: Christian Kulenkampff
Wohnort: Lüneburg

Re: [Win-Konsolenanw.] Befehlszeile zu klein

Beitrag von Chromanoid »

Wie wäre es nur mit nem Drag'n Drop Ziel, das als Minifenster always on top auf dem Bildschirm erscheint (wäre sehr nah an deiner jetzigen Benutzung). Ich habe mal vor längerer Zeit eine Java Anwendung geschrieben die so (nach Prüfung gerade eben) mindestens um drei tausend Dateien entgegen nehmen kann.

Ich stelle mir das dann so vor :D (auch ca. in der Größe)...

Sollte jedenfalls schneller gehen als sich in Shell extensions einzuarbeiten.

Code: Alles auswählen

____________
|.........|X|
|   Drop here  |
|___________|
Antworten