AGB  ·  Datenschutz  ·  Impressum  







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

Eigene Dateitypen verarbeiten?

Ein Thema von DeadyEye · begonnen am 14. Jul 2004 · letzter Beitrag vom 14. Jul 2004
Antwort Antwort
DeadyEye

Registriert seit: 12. Jul 2004
29 Beiträge
 
#1

Eigene Dateitypen verarbeiten?

  Alt 14. Jul 2004, 18:50
Ich habe mit Hilfe des folgenden Codes einen eigenen Dateityp regestriert. Nun öffnet bei klick auf eine Datei zwar das richtige Programm, aber wie kann ich das einbinden dass mein Programm mitbekommt dass es von der Datei geöffnet wurde und mit dieser Datei dann etwas machen kann.



Folgenden Code habe ich zur Dateityp regestrierung verwendet, es ist ein Beispielcode aus einer Code Libary

Delphi-Quellcode:
uses
  registry, shlobj;

procedure TForm1.RegisterFileType(prefix: string; exepfad: string);
var
  reg: TRegistry;
begin
  reg := TRegistry.Create;
  try
    reg.RootKey := HKEY_CLASSES_ROOT;
    //create a new key --> .pci
    reg.OpenKey('.' + prefix, True);
    try
      //create a new value for this key --> pcifile
      reg.Writestring('', prefix + 'file');
    finally
      reg.CloseKey;
    end;
    //create a new key --> pcifile
    reg.CreateKey(prefix + 'file');
    //create a new key pcifile\DefaultIcon
    reg.OpenKey(prefix + 'file\DefaultIcon', True);
    //and create a value where the icon is stored --> c:\project1.exe,0
    try
      reg.Writestring('', exepfad + ',0');
    finally
      reg.CloseKey;
    end;
    reg.OpenKey(prefix + 'file\shell\open\command', True);
    //create value where exefile is stored --> c:\project1.exe "%1"
    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;
  Mit Zitat antworten Zitat
Benutzerbild von Ultimator
Ultimator

Registriert seit: 17. Feb 2004
Ort: Coburg
1.860 Beiträge
 
FreePascal / Lazarus
 
#2

Re: Eigene Dateitypen verarbeiten?

  Alt 14. Jul 2004, 18:53
Ich denke, du meinst, dass z.B. der Text in der Datei in ein Memo geladen wird, richtig?
Wenn ja, dann nimm doch Memo1.Lines.Loadfromfile(Paramstr(0)); oder wie das heißt. :fruebel:
Julian J. Pracht
  Mit Zitat antworten Zitat
DeadyEye

Registriert seit: 12. Jul 2004
29 Beiträge
 
#3

Re: Eigene Dateitypen verarbeiten?

  Alt 14. Jul 2004, 18:57
Ja, so weit war ich auch schon, aber mein Hauptproblem ist, dass ich nciht weiß wie ich es überprüfen kann ob das programm normal gestartet worden ist oder eben durch einen Datei. Muss ich das mit ParamCount machen?
  Mit Zitat antworten Zitat
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#4

Re: Eigene Dateitypen verarbeiten?

  Alt 14. Jul 2004, 19:00
Ja, ParamStr(?) und ParamCount sind die Mittel, die dich zum Ziel führen.

ParamStr(0) -> Anwendungsname
ParamStr(1) -> 1. Parameter
ParamStr(2) -> 2. Parameter
.
.
.
ParamStr(n) -> n. Parameter

ParamCount gibt die Anzahl der Parameter an.
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
Benutzerbild von Ultimator
Ultimator

Registriert seit: 17. Feb 2004
Ort: Coburg
1.860 Beiträge
 
FreePascal / Lazarus
 
#5

Re: Eigene Dateitypen verarbeiten?

  Alt 14. Jul 2004, 19:00
Naja, du kannst doch überprüfen, ob das ParamStr(0) der Name deiner Exe ist oder der Name einer x-beliebigen Datei.
Delphi-Quellcode:
if ParamStr(0)='C:\Project1.exethen ShowMessage('Programm alleine gestartet!')
else ShowMessage('Das Programm wurde mit einer datei geöffnet!');
Ich denke, das ist, was du meinst
Julian J. Pracht
  Mit Zitat antworten Zitat
DeadyEye

Registriert seit: 12. Jul 2004
29 Beiträge
 
#6

Re: Eigene Dateitypen verarbeiten?

  Alt 14. Jul 2004, 19:04
Also muss ich nur überprüfen ob Paramcount größer als 0 ist?
  Mit Zitat antworten Zitat
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#7

Re: Eigene Dateitypen verarbeiten?

  Alt 14. Jul 2004, 19:07
Ja, das zeigt an, dass ein oder mehrere Parameter übergeben wurden.

@Ultimator:
In ParamStr(0) steht immer der Anwendungsname, mit oder ohne Pfad!
Das ist in Windows so standard.

Ich kann es aber auch ändern, da man bei CreateProcess die Parameter angeben kann.
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
DeadyEye

Registriert seit: 12. Jul 2004
29 Beiträge
 
#8

Re: Eigene Dateitypen verarbeiten?

  Alt 14. Jul 2004, 19:13
O.k. ich habs hinbekommen. Vielen Dank. Ich war die ganze zeit immer kurz davor, bin immer nur an Kleinigkeiten hängengeblieben, aber ihr habt mir ja da rausgeholfen.
  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 21:44 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