AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Kontextmenüpunkt Drucken

Ein Thema von Thomas Feichtner · begonnen am 18. Jul 2013 · letzter Beitrag vom 19. Jul 2013
Antwort Antwort
Thomas Feichtner

Registriert seit: 30. Nov 2007
Ort: Rum
137 Beiträge
 
Delphi 10.4 Sydney
 
#1

Kontextmenüpunkt Drucken

  Alt 18. Jul 2013, 13:30
Hallo,

woher weiß das Kontextmenü, dass ich eine Datei drucken kann?
Wo steht das genau in der Registry?

z.b. für eine .txt, .ini oder .jpg

Ich möchte bei unserer Dokumentenverwaltung einen Menüpunkt erstellen, mit dem ich dokumente Drucken kann. Dieser Menüpunkt solle aber nur enabled sein, wenn ich die Datei auch über das Kontextmenü drucken kann.
mfg

Thomas Feichtner
  Mit Zitat antworten Zitat
Volker Z.

Registriert seit: 3. Dez 2012
Ort: Augsburg, Bayern, Süddeutschland
419 Beiträge
 
Delphi XE4 Ultimate
 
#2

AW: Kontextmenüpunkt Drucken

  Alt 18. Jul 2013, 14:22
Hallo,

schau mal unter HKEY_CLASSES_ROOT. Dort findest Du Schlüssel mit den jeweiligen Dateiendungen (.txt, .ini, .jpg etc.). Für die jeweilige Dateiendung dann den Datenwert für Standard auslesen (für den Schlüssel .txt z. B. ist das txtfile). Anschließend nach diesem Unterschlüssel suchen. Unter diesem Unteschlüssel (z. B. txtfile) existiert ggf. der Unterschlüssel shell und darunter print (oder auch nicht, wenn keine Druckanwendung hinterlegt ist). Unter dem Schlüssel print existiert der Unterschlüssel command. Dort steht im Datenwert Standard die Anwendung zum Drucken.

Gruß
Volker Zeller
  Mit Zitat antworten Zitat
Thomas Feichtner

Registriert seit: 30. Nov 2007
Ort: Rum
137 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Kontextmenüpunkt Drucken

  Alt 18. Jul 2013, 14:27
Hallo Volker,

dabe ich schon nachgeschaut und werde nicht ganz schlau.
Im Anhang habe ich den Auszug für die Ini-Datei. Unter Persitstenhandler ist nur eine Guid eingetragen. Unter diese finde ich aber keinen Eintrag.
Win8 64Bit verwende ich
Miniaturansicht angehängter Grafiken
registry.jpg  
mfg

Thomas Feichtner
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Kontextmenüpunkt Drucken

  Alt 18. Jul 2013, 14:27
Das stimmt zwar in den meisten Fällen, aber wohl leider nicht immer. Es kann auch sein, dass der Standardwert zu einer Endung eine GUID ist, die man dann auch wieder erst mühsam suchen muss, oder dass der Unterschlüssel nicht print, sondern printto heißt.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Kontextmenüpunkt Drucken

  Alt 18. Jul 2013, 14:32
Doch die Klasse solltest du unter CLSID finden. U.U. verweist diese aber auf eine andere GUID
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Kontextmenüpunkt Drucken

  Alt 18. Jul 2013, 14:43
Da wäre es doch toll gewesen, wenn Microsoft äquivalent zu FindExecutable auch FindPrintable implementiert hätte. Dieses Registry-Gehangel macht ja nur bedingt Spaß.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Volker Z.

Registriert seit: 3. Dez 2012
Ort: Augsburg, Bayern, Süddeutschland
419 Beiträge
 
Delphi XE4 Ultimate
 
#7

AW: Kontextmenüpunkt Drucken

  Alt 18. Jul 2013, 14:44
Hallo,

Zitat:
Unter Persitstenhandler ist nur eine Guid eingetragen. Unter diese finde ich aber keinen Eintrag
Es steht auch nicht unter dem Schlüssel Persitstenhandler. Den Schlüssel .ini öffnen und den Datenwert von Standard auslesen (in diesem Fall: inifile). Und dann geht es mit dem Schlüssel inifile weiter.

Zitat:
Das stimmt zwar in den meisten Fällen, aber wohl leider nicht immer. Es kann auch sein, dass der Standardwert zu einer Endung eine GUID ist, die man dann auch wieder erst mühsam suchen muss, oder dass der Unterschlüssel nicht print, sondern printto heißt.
Ja, diese und andere hässliche Fälle gibt es natürlich auch.

Gruß
Volker Zeller
  Mit Zitat antworten Zitat
WM_CLOSE

Registriert seit: 12. Mai 2010
Ort: königsbronn
398 Beiträge
 
RAD-Studio 2009 Pro
 
#8

AW: Kontextmenüpunkt Drucken

  Alt 18. Jul 2013, 16:29
ShellExecute kann doch das Verb 'print', oder? Das müsste doch genau dem Kontextmenüeintrag entsprechen.
Delphi programming
  Mit Zitat antworten Zitat
Volker Z.

Registriert seit: 3. Dez 2012
Ort: Augsburg, Bayern, Süddeutschland
419 Beiträge
 
Delphi XE4 Ultimate
 
#9

AW: Kontextmenüpunkt Drucken

  Alt 18. Jul 2013, 22:24
Hallo,

wenn das (Windows Explorer) Kontextmenü den Menüpunkt "Drucken" anbieten, dann sollte Dir folgender Code einen nicht leeren Wert (string) zurückliefern.
Delphi-Quellcode:
function ReadRegistryShellPrintCommand (const Extention : string) : string;
var
  r : TRegistry;
  s : string;
begin
  r := TRegistry.Create;
  try
    r.RootKey := HKEY_CLASSES_ROOT;
    if not r.OpenKeyReadOnly (Extention) then
      Result := ''
    else
      try
        s := r.ReadString ('');
        r.CloseKey;
        if s = 'then
          Result := ''
        else
          begin
            s := IncludeTrailingPathDelimiter (s) + 'shell\';
            if r.OpenKeyReadOnly (s + 'print\command') then
              Result := r.ReadString ('')
            else
              if r.OpenKeyReadOnly (s + 'printto\command') then
                Result := r.ReadString ('')
              else
                Result := ''
          end
      except
        // Deine Fehlerbehandlung
        Result := ''
      end
  finally
    FreeAndNil (r)
  end
end;
Gruß
Volker Zeller
  Mit Zitat antworten Zitat
Thomas Feichtner

Registriert seit: 30. Nov 2007
Ort: Rum
137 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: Kontextmenüpunkt Drucken

  Alt 19. Jul 2013, 06:15
Danke,
werde ich mal testen.

Edit: Ja es funktioniert wunderbar!
mfg

Thomas Feichtner

Geändert von Thomas Feichtner (19. Jul 2013 um 08:19 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz