Entwickler-Ecke
Windows API - Standardprogramm für dateien festlegen
Filewalker - Mi 24.11.04 16:06
Titel: Standardprogramm für dateien festlegen
Hi,
ich hoffe das ich in der richtigen kategorie stecke...
kann mir bitte jemand helfen habe folgendes Problem:
Ich hab einen Image Editor geschrieben und möchte das wenn ich auf nen Button klicke, das alle Bildformate (oder nur jpeg) automatisch mit diesem Programm geöffnet wird.. Also eigentlich sodass ich das Symbol von meinem Programm auf dem Image hab und wenn ich doppelt klicke das programm aufgerufen wird..
weiss jemand da weiter...
Mit freundlichem Gruss
Filewalker
matze - Mi 24.11.04 17:07
schau mal in die FAQs rein, da müsste ein beitrag von MathiasSimmak sein, der dir das beschreibt !
Filewalker - Mi 24.11.04 17:15
sorry, kannst du mir freundlicherweise schreiben in welchem FAQ ich schauen soll..
danke.
Filewalker - Mi 24.11.04 18:03
Titel: Filewalker
finde dazu leider nichts
JayEff - Mi 24.11.04 18:54
da guckst du mal in der registry, wo alle dateiformate registriert sind. suche z.B. einfach mal nach ".jpg".
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| Windows Registry Editor Version 5.00
[HKEY_USERS\S-1-5-21-1229272821-299502267-839522115-1004\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.jpg]
[HKEY_USERS\S-1-5-21-1229272821-299502267-839522115-1004\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.jpg\OpenWithList] "a"="Skype.exe" "MRUList"="bhefcjdga" "b"="mspaint.exe" "c"="Photoshop.exe" "d"="opera.exe" "e"="delphi32.exe" "f"="msnmsgr.exe" "g"="IEXPLORE.EXE" "h"="photopnt.exe" "i"="msmsgs.exe" "j"="trillian.exe"
[HKEY_USERS\S-1-5-21-1229272821-299502267-839522115-1004\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.jpg\OpenWithProgids] "jpegfile"=hex(0): "CorelPhotoPaint.Image.7"=hex(0): |
Das hab ich z.B. dazu gefunden. ich glaube, es reicht, diese Registrierung einfach nach belieben ab zuändern. (wenn mans checkt, was ich aber nicht tue...) ich hab aber auch iwo ein tutorial... moment... Ah ja hier: keine ahnung von wem, es ist jedenfalls englisch kommentiert.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46:
| uses registry, shlobj;
procedure TForm1.RegisterFileType(prefix: string; exepfad: string); var reg: TRegistry; begin reg := TRegistry.Create; try reg.RootKey := HKEY_CLASSES_ROOT; reg.OpenKey('.' + prefix, True); try reg.Writestring('', prefix + 'file'); finally reg.CloseKey; end; reg.CreateKey(prefix + 'file'); reg.OpenKey(prefix + 'file\DefaultIcon', True); try reg.Writestring('', exepfad + ',0'); finally reg.CloseKey; end; reg.OpenKey(prefix + 'file\shell\open\command', True); try reg.Writestring('', exepfad + ' "%1"'); finally reg.CloseKey; end; finally reg.Free; end; SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil); end;
procedure TForm1.Button1Click(Sender: TObject); begin RegisterFileType('pci', 'c:\project1.exe'); end; |
Such mal in der delphi hilfe, wenn du einen der Befehle nicht kennst, denn das könnte interessant sein.
Delete - Mi 24.11.04 19:34
Na ja, mit der Klasse wäre es "SetDefaultHandler". Wer´s unbedingt selbst machen will, der öffnet den Dateischlüssel und schreibt den Schlüssel der gewünschten Aktion als (Standard) bei "shell" rein.
Filewalker - Do 25.11.04 12:11
Titel: Next Problem
Hi,
erstmal möchte ich mich für die schnelle und konkrete Hilfe bedanken.
Die Funktion 'RegisterFileType' ist genau das was ich gesucht habe, vielen dank JayEff... Das Problem ist nur das die Funktion in HKEY_CLASSES_ROOT schreibt und ich mit einem normalen Benutzer da nichts eintragen kann. Kennt jemand eine Lösung für das Problem wie ich als standard Benutzer da etwas eintragen kann?
vielen dank
Filewalker
Delete - Do 25.11.04 13:09
Sorry, aber es gibt
keine Lösung. Und lass dir nichts anderes einreden.
1. Du könntest zwar dem Standardbenutzer mehr Rechte erteilen, so dass er schreiben kann, aber das würde dann erst mal nur auf deinem Rechner funktionieren. Solltest du dein Programm mal veröffentlichen, und sollte ich es zufälligerweise gut finden und nutzen (wäre ja möglich), würde es auf meinem Rechner schon nicht mehr funktionieren.
2. Ab Windows 2000 kannst du Dateitypen auch unter HKEY_CURRENT_USER registrieren. Aber genau das ist auch der Haken: Es funktioniert erst
ab Windows 2000. Sollte ein NT-Nutzer mal an dein Programm geraten, bzw. ein 9x/ME-User, dann guckt der in die Röhre.
Du könntest prüfen, ob der aktuelle User
ADMIN-Rechte hat. Wenn nicht, dann deaktiviere die Funktion bzw. verzichte auf den Versuch, den Eintrag zu ändern.
Filewalker - Do 25.11.04 15:26
vielen dank Mathias für deine leistungsstarke unterstützung..
Delphi-Forum ist ein eine gute Plattform für fragen und anregungungen..
MfG
Filewalker
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!