Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Eigenen Hyperlink erstellen (aus http:// wird myapp://) (https://www.delphipraxis.net/156191-eigenen-hyperlink-erstellen-aus-http-wird-myapp.html)

erich.wanker 23. Nov 2010 14:08

Eigenen Hyperlink erstellen (aus http:// wird myapp://)
 
Hallo leute,

Datei-Suffix habe ich via untenstehenden Code mit meiner Anwendung "verknüpft":

Delphi-Quellcode:
procedure RegisterFileType(ExtName:String; AppName:String) ;
var
   reg:TRegistry;
begin
  reg := TRegistry.Create;
  try
   reg.RootKey:=HKEY_CLASSES_ROOT;
   reg.OpenKey('.' + ExtName, True) ;
   reg.WriteString('', ExtName + 'file') ;
   reg.CloseKey;
   reg.CreateKey(ExtName + 'file') ;
   reg.OpenKey(ExtName + 'file\DefaultIcon', True) ;
   reg.WriteString('', AppName + ',0') ;
   reg.CloseKey;
   reg.OpenKey(ExtName + 'file\shell\open\command', True) ;
   reg.WriteString('',AppName+' "%1"') ;
   reg.CloseKey;
  finally
   reg.Free;
  end;

  SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil) ;


end;
Jetzt würde ich gerne einen Hyperlink mit meiner Anwendung verknüpfen.
Hat jemand eine idee - wie ich das lösen könnte:

Beispiel:
Aus
Code:
<a href="http://www.domain.at">Hyperlink</a>
würde ich gerne:
Code:
<a href="vst://parameter">Hyperlink</a>
machen (oder so ähnlich)

Was ich bis dato hab (aber nicht funktioniert) ist:
Delphi-Quellcode:
REGEDIT4 
[HKEY_CLASSES_ROOT\vst] @="URL:vst Protocol" "URL Protocol"=""
[HKEY_CLASSES_ROOT\vst\shell]
[HKEY_CLASSES_ROOT\vst\shell\open]
[HKEY_CLASSES_ROOT\vst\shell\open\command] @="\"C:\\Programme\\myApplication.exe\" \"%1\""
vielen Dank für Hinweise

Erich

Alien426 23. Nov 2010 14:18

AW: Eigenen Hyperlink erstellen (aus http:// wird myapp://)
 
Wenn du Steam installiert hast, könntest du dir mal anschauen, wie das beim Steam Browser Protocol gelöst ist.

Außerdem kannst du bei Microsoft Registering an Application to a URL Protocol (Bei Google suchenregister custom protocol) nachschauen.

Namenloser 23. Nov 2010 16:21

AW: Eigenen Hyperlink erstellen (aus http:// wird myapp://)
 
Die Schweizer haben da was

erich.wanker 24. Nov 2010 13:11

AW: Eigenen Hyperlink erstellen (aus http:// wird myapp://)
 
Hallo Leute,

danke für eure Tipps.

ich hab jetzt folgendes:

Delphi-Quellcode:
procedure RegisterFileType(software_protocol:String; software_name:String; software_pfad:String) ;
var
   reg:TRegistry;
   software_regedit_pfad:String;
begin
  reg := TRegistry.Create;
  try
   // Erster Eintrag
   reg.RootKey:=HKEY_CLASSES_ROOT;
   software_regedit_pfad:='';

   reg.CreateKey(software_regedit_pfad+software_protocol);
   reg.OpenKey(software_regedit_pfad+software_protocol, True) ;
   reg.WriteString('','URL:'+software_protocol+' Protocol');
   reg.WriteString('URL Protocol','');
   reg.CloseKey;

   reg.CreateKey(software_regedit_pfad+software_protocol+'\DefaultIcon');
   reg.OpenKey(software_regedit_pfad+software_protocol+'\DefaultIcon', True) ;
   reg.WriteString('',software_name);
   reg.CloseKey;

   reg.CreateKey(software_regedit_pfad+software_protocol+'\shell');
   reg.OpenKey(software_regedit_pfad+software_protocol+'\shell', True) ;
   reg.WriteString('','');
   reg.CloseKey;

   reg.CreateKey(software_regedit_pfad+software_protocol+'\shell\open');
   reg.OpenKey(software_regedit_pfad+software_protocol+'\shell\open', True) ;
   reg.WriteString('','');
   reg.CloseKey;

   reg.CreateKey(software_regedit_pfad+software_protocol+'\shell\open\command');
   reg.OpenKey(software_regedit_pfad+software_protocol+'\shell\open\command', True) ;
   reg.WriteString('',software_pfad+software_name+' %1');
   reg.CloseKey;
   // Zweiter Eintrag
   reg.RootKey:=HKEY_LOCAL_MACHINE;
   software_regedit_pfad:='Software\Classes\';

   reg.CreateKey(software_regedit_pfad+software_protocol);
   reg.OpenKey(software_regedit_pfad+software_protocol, True) ;
   reg.WriteString('','URL:'+software_protocol+' Protocol');
   reg.WriteString('URL Protocol','');
   reg.CloseKey;

   reg.CreateKey(software_regedit_pfad+software_protocol+'\DefaultIcon');
   reg.OpenKey(software_regedit_pfad+software_protocol+'\DefaultIcon', True) ;
   reg.WriteString('',software_name);
   reg.CloseKey;

   reg.CreateKey(software_regedit_pfad+software_protocol+'\shell');
   reg.OpenKey(software_regedit_pfad+software_protocol+'\shell', True) ;
   reg.WriteString('','');
   reg.CloseKey;

   reg.CreateKey(software_regedit_pfad+software_protocol+'\shell\open');
   reg.OpenKey(software_regedit_pfad+software_protocol+'\shell\open', True) ;
   reg.WriteString('','');
   reg.CloseKey;

   reg.CreateKey(software_regedit_pfad+software_protocol+'\shell\open\command');
   reg.OpenKey(software_regedit_pfad+software_protocol+'\shell\open\command', True) ;
   reg.WriteString('',software_pfad+software_name+' %1');
   reg.CloseKey;
   // Dritter Eintrag
   reg.RootKey:=HKEY_CURRENT_USER;
   software_regedit_pfad:='Software\Classes\';

   reg.CreateKey(software_regedit_pfad+software_protocol);
   reg.OpenKey(software_regedit_pfad+software_protocol, True) ;
   reg.WriteString('','URL:'+software_protocol+' Protocol');
   reg.WriteString('URL Protocol','');
   reg.CloseKey;

   reg.CreateKey(software_regedit_pfad+software_protocol+'\DefaultIcon');
   reg.OpenKey(software_regedit_pfad+software_protocol+'\DefaultIcon', True) ;
   reg.WriteString('',software_name);
   reg.CloseKey;

   reg.CreateKey(software_regedit_pfad+software_protocol+'\shell');
   reg.OpenKey(software_regedit_pfad+software_protocol+'\shell', True) ;
   reg.WriteString('','');
   reg.CloseKey;

   reg.CreateKey(software_regedit_pfad+software_protocol+'\shell\open');
   reg.OpenKey(software_regedit_pfad+software_protocol+'\shell\open', True) ;
   reg.WriteString('','');
   reg.CloseKey;

   reg.CreateKey(software_regedit_pfad+software_protocol+'\shell\open\command');
   reg.OpenKey(software_regedit_pfad+software_protocol+'\shell\open\command', True) ;
   reg.WriteString('',software_pfad+software_name+' %1');
   reg.CloseKey;

  finally
   reg.Free;
  end;

  SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil) ;


end;

Aufruf via:
Delphi-Quellcode:
RegisterFileType('http1',extractfilename(application.exename),extractfilepath(application.exename));
werds mal in den nächsten tagen auf verschiedene Maschionen testen ..

Vielen Dank

Erich


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:38 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