MSHTML.DLL,PrintHTML scheint bei langen Dateinamen einfach abzuschneiden

DrMueller

Erfahrenes Mitglied
Hallo Leute,

ich setze obige Aussage einfach mal in den Raum, wobei ich nichts zu dem Thema gefunden habe: Wie schon mal beschrieben rufen wir die Funktion wie folgt auf

Visual Basic:
ProcessId = Shell("rundll32.exe " & cWinSysDir & "\MSHTML.DLL,PrintHTML " & Chr(34) & FN & Chr(34), vbNormalFocus) 'MLHIDE

Soweit alles i.O, wenn nun aber der Filename so was wie:

C:\Dokumente und Einstellungen\Administrator\temp\cns\cnswork\readonly\PrintHTM151928.htm

lautet, schneidets automatisch ab und zwar bei:
file://C:\Dokumente und Einstellungen\Administrator\temp\cns\cn

Könnte natürlich auch ein Problem vom PDF-Drucker sein, auf den es geschickt wird, aber ich habe dies mit mehreren Druckern probiert, überall wird es irgendwo abgeschnitten.

Hat da jemand schon so was gehört?


Wie immer danke ich vielmals im Voraus.



Müller Matthias
 
Mal ne doofe Frage: Woher weisst du, dass es abgeschnitten wird?

Shell gibt soweit ich weiss keinen String zurück. Also muss das Abschneiden vor dem Shell-Aufruf passieren.
Übergebt ihr den Dateinamen an eine Win-API resp. bekommt ihr den von ner API zurück? Weil das wäre ne Stelle, wo es abschneiden könnte, wenn man nicht genügend blanks an die API übergeben hat.
 
Also du siehst ja die Shell-Übergabe die wir machen. Dort ist der Dateiname komplett vorhanden.
Mit dieser wird ja ein Drucker aufgerufen. Es ist egal, an welchen Drucker ich die Datei dann schicke, der Name wird abgeschnitten.

Daher nehme ich jetzt mal frech an, dass der Shell selber das abschneidet, da es beim Aufruf komplett drin ist, aber dann beim Drucken nicht mehr.
 
Dann tippe ich aber eher auf rundll32.

Habt ihr mal versucht, das Ding aus der kommandozeile aus aufzurufen?

Also

rundll32.exe c:\Windows\System32\MSHTML.DLL,PrintHTML "C:\Dokumente und Einstellungen\Administrator\temp\cns\cnswork\readonly\PrintHTM151928.htm"

direkt in der Kommandozeile eingeben
 
dann ist es die rundll32, und nicht die Shell-Funktion.

Versucht es mal aus nem kürzeren Pfad

Bsp.: "c:\Temp\test.htm"

Also

rundll32.exe c:\Windows\System32\MSHTML.DLL,PrintHTML "c:\Temp\test.htm"

Weil wenn das geht, dann hat rundll32 ne Begrenzung der Pfad-Länge

EDIT: Ich bin ein Depp!
Nicht die rundll32, sondern die mshtml.dll hat dann die Begrenzung!
 
Zuletzt bearbeitet:
Jo scheint wirklich der Fall zu sein.
Wir schauen uns mal nach einer Alternativlösung für HTML-Druck um.

Passt danke.
 
Zurück