MSHTML.DLL,PrintHTML verhackt Dateiname

Das weiss ich, aber laut diesem Artikel

http://www.activevb.de/cgi-bin/apiwiki/GetProcAddress

lässt sich CallWindowProc anscheinend zweckentfremden

Es kann höchstens sein, dass das Declare-Statement von CallWindowProc vielleicht noch etwas umgebaut werden muss bzw. die Übergabe des DateiNamens nicht als String sondern vielleicht als String-Pointer. Konnte ich nicht testen.

Andererseits müsste es doch ein Declare-Statement für PrintHTML geben, da die Funktion ja offensichtlich aus der mshtml.dll exportiert wird. Hab aber bis jetzt noch nichts finden können.
 
Zuletzt bearbeitet:
Ich glaube ich habe einen Workaround um den rundll32-Aufruf gefunden

Achtung: Verweis auf Microsoft HTML Object Library ist notwendig

Visual Basic:
Sub main()
Dim Dummy As New HTMLDocument
Dim MyFile As HTMLDocument
 
    Set MyFile= Dummy.createDocumentFromUrl("file://C:/Users/IchBinDerUser/Downloads/test.htm", vbNullString)

    MyFile.execCommand "print"
    
End Sub

Das Ergebnis ist dasselbe wie der rundll32-Kram, ergo: es erscheint der Druckerdialog.
Vielleicht kommt ihr ja von dort irgendwie weiter
 
Super danke, wird auch gleich getestet.
Oder ich lese je nach 64bit oder 32 bit system die andere dll aus, evtl. hilft das auch weiter.
 
Super danke, wird auch gleich getestet.
Oder ich lese je nach 64bit oder 32 bit system die andere dll aus, evtl. hilft das auch weiter.

Würd ich nicht machen, da mit dem Verweis auf die Type-Lib der MS HTML Object Library sowieso die richtige dll erwischt werden müsste.

So müsstest du bedingte Kompilierung machen *würg*
 
Ohlala.... vielleicht habe ich die Lösung eurer Probleme allgemein

Achtung: Verweis auf Microsoft Internet Controls notwendig!

Visual Basic:
Sub main()
Dim Dummy As New InternetExplorerMedium

    Dummy.Navigate "file://C:/Users/IchBinDerUser/Downloads/Test.htm"
    
    Dummy.ExecWB OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER

End Sub

Hat bei mir sauber ausgedruckt, und zwar OHNE DRUCKERDIALOG!

Frag mich jetzt aber nicht, wie man Querformat und den anderen Käse einstellt, oder ob es doch die Navigate2-Methode ist. Hab so schon genug damit gekämpft!
 
Hm auch eine Idee, aber ich will ja eigentlich den Druckerdialog. Aber den kann ich ja OLECMDEXECOPT_DONTPROMPTUSER steuern.
Allerdings haben wir eben erst kürzlich von IE weggewechselt, da dieses HTML DRucken per IE9 extreme Probleme verursacht hat, da die intern einiges verändert haben.

Ich teste mal alle Ideen hier durch und gebe Rückmeldung.
 
Hm mag er gar nicht, ich kann mshtml.dll auch nicht hinzufügen, nur das .tlb-file.

Interessanterweise gibt

Visual Basic:
  Dim Dummy As InternetExplorerMedium
  Set Dummy = New InternetExplorerMedium


dummy immer noch nothing.
 
Die tlb ist ja auch ausreichend, da innerhalb der TLB der Verweis auf die dll stattfindet.

Zwecks deinem Dummy-Versuch: Natürlich bleibt der Nothing. Du musst ja auch erst zu einer HTML hin"navigieren"

btw: Hast du bei deinem Dummy-Versuch einen Verweis auf "Microsoft Internet Controls" aktiviert? Der ist ja zwingend.
 
Geht leider nicht, Pfad immer noch falsch:
C:\Users\MM\Desktop\file____C__Users_MM_Desktop_Main_testProjekte_HTML%20Drucken_t.pdf

Es wird also wiederum der Pfad genommen, die \ mit _ ersetzt und dann als Dateiname genommen.
 
Zurück