Einzelnen Beitrag anzeigen

Benutzerbild von einsTeIn.NET
einsTeIn.NET

Registriert seit: 23. Mär 2003
Ort: Bochum
7 Beiträge
 
#8

Re: "Senden an" im Context Menu ansprechen

  Alt 31. Aug 2004, 23:53
So! Ich hatte zwar jetzt endlich mal Zeit mich weiter um das Thema zu kümmern, aber leider komme ich nicht weiter.

Das war zwar soweit ein guter Tipp von Franz und das hat mich auch schon näher rangebracht, aber leider funktioniert das doch nicht so. Es gibt zwar neben der von mir schon angesprochenen Funktion Invoke auch noch die Funktion InvokeCommand, mit der man das eigentlich auch machen könnte. Sie befindet sich im Interface IContextMenu, was man wiederum in der Shell32.dll ab der Version 4.0 findet. Hört sich alles prima an und klappt bestimmt auch prima, aber leider aus meinem Kontext heraus nicht.

Ich beschreibe vielleicht mal das eigentliche Problem, da ich diese Idee hier jetzt eigentlich abgeschrieben habe. Vielleicht fällt ja einem eine andere Lösung ein...

Ich muß aus einer Datenbank heraus die verschiedenen Drucker des Systems ansprechen können.
[Also eigentlich ist es auch kein Delphi, aber das tut ja nichts zur Sache. Ich würde mich vielleicht dazu entschließen eine .dll zu schreiben, die im Prinzip etwas ähnliches bietet wie das IContextMenu-Interface und die ich aber aus der Datenbank heraus ansprechen kann, und die würde ich dann in Delphi schreiben.]
Problem dabei ist, in der Datenbank können jetzt verschiedene Dateien gespeichert sein und die sollen gedruckt werden. Diese Dateien können jeglichen Typs sein, was bedeutet, man weiß nie vorher, von welchem Programm man die Print-Routine aufrufen soll. An die Invoke-Funktion komme ich auch aus der Datenbank heraus ran, d.h. es wird im Moment so gemacht, das die Datei temporär ausgelagert wird und dann diese Invoke-Funktion auf der Option "Print" ausgeführt wird. Also im Prinzip, als wenn man z.B. auf ne Excel-Datei mit der rechten Mousetaste klickt und dann "Drucken" aufruft, was dazu führt, daß das System das mit dieser Endung verküpfte Programm aufruft, die Datei in dieses Programm läd, die Standard-Druckroutine des Programms ausführt und danach die Datei und das Programm wieder schließt. Allerdings wird hierbei immer auf den Standard-Drucker des Systems gedruckt. Und das ist mein Problem, ich möchte das variable gestalten. Daher habe ich nach einer Möglichkeit gesucht, eine Druckerauswahl in das Contextmenu hineinzubekommen, damit ich mir dann ganz bequem den Drucker darüber aussuchen kann. Hierbei bin ich dann darauf gestoßen, daß man sich eine bestimmte Verknüpfung in den "Senden an"-Ordner legen kann, damit man im Contextmenu die Drucker des Systems sehen kann und nur noch die Datei übergeben muß. Funktioniert aus Windows heraus wunderbar, aber leider in meinem Fall nicht so gut, bzw. ich habe das noch nicht hinbekommen, kann ja trotzdem sein, daß es irgendwie geht.

An diese andere Funktion InvokeCommand komme ich leider nicht aus der Datenbank heraus ran, keine Ahnung warum.

P.S. Die Drucker kann ich mir in der Datenbank auflisten lassen, das bekomme ich hin. Ich muß also Windows nur sagen, daß er diese Datei (aus der Datenbank) an jenen Drucker senden soll, falls das eine Hilfe für einen Lösungsansatz sein kann.


mfg,
einsTeIn.NET
  Mit Zitat antworten Zitat