Den Source gabs mal im SwissDelphiCenter.
Aber noch ein Hinweis zum verwenden eines eigenes Protokolls: Ein Protokoll ist ein Sicherheits Risiko, ein Angreifer könnte einer Webseite soetwas plazieren
bla und diesen link per JS aufrufen. Deshalb empfielt es sich bei der generierung der Links einen Token al la myone://something?token=4554655654654 an alle URLs dranzuhängen und diesen Token im Programm mit dem richtigen Server abzugleichen. Damit hat ein Angreifer kaum noch Chancen.
Hier die Version die ich verwendet habe:
Delphi-Quellcode:
UOperatingSystem =
class
public
// [url]http://www.swissdelphicenter.ch/torry/showcode.php?id=2272[/url]
/**
* @param
Name Bezeichnung des Protokolls z.B. http,
ftp oder myone
* @param Describtion Beschreibung z.B. MyCompany Protokoll zur einfachen Anzeige von xyz aus dem Browser
* @param ExecuteStr Anwendung die gestartet werden soll, wichtig ist hier das %1 am Ende damit die
URL auch übergeben wird z.B. '
C:\myone.exe %1'
*/
class procedure RegisterProtocol(
const Name, Describtion, ExecuteStr:
string);
class procedure UnregisterProtocol(
const Name:
string);
end;
...
{ UOperatingSystem }
class procedure UOperatingSystem.RegisterProtocol(
const Name, Describtion,
ExecuteStr:
string);
var
reg: TRegistry;
begin
reg := TRegistry.Create;
try
reg.RootKey := HKEY_CLASSES_ROOT;
reg.OpenKey(
Name, True);
try
reg.Writestring('
', '
URL:' +
Name +'
(' + Describtion + '
)');
reg.WriteInteger('
EditFlags', 2);
reg.WriteString('
Source Filter', '
');
reg.WriteString('
URL Protocol', '
');
reg.OpenKey('
shell', True);
reg.OpenKey('
open', True);
reg.OpenKey('
command', True);
reg.Writestring('
', ExecuteStr);
finally
reg.CloseKey;
end;
finally
reg.Free;
end;
end;
class procedure UOperatingSystem.UnregisterProtocol(
const Name:
string);
var
reg: TRegistry;
begin
reg := TRegistry.Create;
try
reg.RootKey := HKEY_CLASSES_ROOT;
reg.DeleteKey(
Name);
finally
reg.Free;
end;
end;