Entwickler-Ecke
Internet / Netzwerk - ED2K-Link - Daten an laufenden Prozess per IE senden
MaxiTB - Mi 11.06.03 20:01
Titel: ED2K-Link - Daten an laufenden Prozess per IE senden
Wer kennt es nicht, das liebe Maultier.
Frage - hat jemand eine Ahnung, wie ich einen eigenen Link an ein laufendes Programm weitersenden kann, so wie der ED2K an den emule ?
Zweck:
Z.B. Skins aus dem Internet laden und automatisch installieren.
Die Applikation lauft natürlich - nur wie verknüpf ich sie jetzt mit dem IE und zweitens, wie bekommt meine App die Daten übermittelt (z.B. URL) ?
Schon jemand damit rumgespielt ?
MaxiTB - Mi 11.06.03 20:17
Titel: Re: ED2K-Link - Daten an laufenden Prozess per IE senden
| MaxiTB an Motzi hat folgendes geschrieben: |
Hehe - nop - stell dir vor:
Meine App läuft auf dem Rechner.
Der User klickt auf meiner HP auf einen Link wie mxnet://<Blablabla>
Nun soll der IE das an mein Proggi weiterleiten, damit es das auswerten kann.
Also funken tut sowas, siehe e-mule, weiß nur nicht wie ... |
Ich hoffe, jetzt ists verständlicher ausgedrückt - scheinbar wars oben nicht recht glücklich formuliert ...
mars - Mi 11.06.03 21:05
Ich habs noch nie ausprobiert, aber der ein Schlüssel findet sich dazu in der Registry:
Unter
HKEY_CLASSES_ROOT habe ich den Ordner ed2k. Und so sieht der aus:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\ed2k] @="URL: ed2k Protocol" "URL Protocol"=""
[HKEY_CLASSES_ROOT\ed2k\DefaultIcon] @="C:\\Internet\\eMule\\emule.exe"
[HKEY_CLASSES_ROOT\ed2k\shell] @="open"
[HKEY_CLASSES_ROOT\ed2k\shell\open]
[HKEY_CLASSES_ROOT\ed2k\shell\open\command] @="\"C:\\Internet\\eMule\\eMule.exe\" \"%1\"" "OldDefault"="\"C:\\Internet\\eMule\\eMule.exe\" \"%1\"" |
Hoffe, es hat geholfen...
MaxiTB - Mi 11.06.03 21:08
Titel: Jep ...
Bin dem selben auf der Spur gewesen.
Alle Einträge von Protokollen haben diesen Schlüssel gemeinsam:
"URL Protocol"=""
Das ist wahrscheinlich der springende Punkt an der Sache - ich werde es mal ein bisserl austesten ;-) ...
mars - Mi 11.06.03 21:15
Würdest du posten, wenn du's rausgefunden hast? Interessiert mich auch... :wink:
MaxiTB - Mi 11.06.03 21:17
Titel: Was denkst du wohl ?
Klare Sache - werde es gleich mal ausprobieren ...
Hat meine CommonLib wieder ein Feature mehr. *g*
MaxiTB - Mi 11.06.03 22:14
Titel: Wie versprochen
Die Unit:
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: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161: 162: 163: 164: 165: 166: 167: 168: 169: 170: 171: 172: 173: 174: 175: 176: 177: 178: 179: 180: 181: 182: 183: 184: 185: 186: 187: 188: 189: 190: 191: 192: 193: 194: 195: 196: 197: 198: 199: 200: 201: 202: 203: 204: 205:
| unit uiShlRegUrl;
interface
{2003-06-11 N ================================================================}
type iShlRegUrlCmd=class(TObject)
private
fName: string; fCmd: string; fTitle: string;
public
constructor Create;
property Name: string read fName write fName; property Command: string read fCmd write fCmd; property Title: string read fTitle write fTitle;
end;
{2003-06-11 N ================================================================}
type iShlRegUrl=class(TObject)
private
fIcon: string; fPrt: string; fTitle: string;
public
constructor Create(aProtocol: string);
procedure Make; procedure MakeCmd(aCmd: iShlRegUrlCmd); procedure Remove; procedure RemoveCmd(aCmd: iShlRegUrlCmd);
property Icon: string read fIcon write fIcon; property Protocol: string read fPrt write fPrt; property Title: string read fTitle write fTitle;
end;
implementation
uses SysUtils, {$IFDEF MSWINDOWS} Registry, Windows, {$ENDIF} uiSysBase, uiSysCore;
{2003-06-11 N ================================================================}
constructor iShlRegUrlCmd.Create; begin guard('iShlRegUrlCmd.Create');
fName:='Open'; fTitle:='Open';
unguard; end;
{2003-06-11 N ================================================================}
constructor iShlRegUrl.Create(aProtocol: string); begin guard('iShlRegUrl.Create');
fIcon:=''; fPrt:=aProtocol; fTitle:=qSysAppinfo.AppCompany+' '+qSysAppinfo.AppName+' '+UpperCase(fPrt)+' protocol';
unguard; end;
{2003-06-11 N ================================================================}
procedure iShlRegUrl.Make; {$IFDEF MSWINDOWS} var lReg: TRegistry; {$ENDIF} begin guard('iShlRegUrl.Make');
if fPrt='' then trap(vTrapIllegalName);
{$IFDEF MSWINDOWS}
lReg:=TRegistry.Create;
lReg.RootKey:=HKEY_CLASSES_ROOT;
lReg.OpenKey(fPrt, true); lReg.WriteString('', 'URL:'+fTitle); lReg.WriteString('URL Protocol',''); lReg.CloseKey;
if fIcon<>'' then begin lReg.OpenKey(fPrt+'\DefaultIcon', true); lReg.WriteString('', fIcon); lReg.CloseKey; end;
FreeAndNil(lReg);
{$ENDIF}
unguard; end;
{2003-06-11 N ================================================================}
procedure iShlRegUrl.MakeCmd(aCmd: iShlRegUrlCmd); {$IFDEF MSWINDOWS} var lReg: TRegistry; {$ENDIF} begin guard('iShlRegUrl.MakeCmd');
if fPrt='' then trap(vTrapIllegalName);
{$IFDEF MSWINDOWS}
lReg:=TRegistry.Create;
lReg.RootKey:=HKEY_CLASSES_ROOT;
lReg.CreateKey(fPrt+'\shell'); lReg.CloseKey;
lReg.OpenKey(fPrt+'\shell\'+aCmd.Name, true); lReg.WriteString('', aCmd.Title+' ('+qSysAppinfo.AppCompany+' '+qSysAppinfo.AppName+')'); lReg.CloseKey;
lReg.OpenKey(fPrt+'\shell\'+aCmd.Name+'\command', true); lReg.WriteString('', aCmd.Command); lReg.CloseKey;
FreeAndNil(lReg);
{$ENDIF}
unguard; end;
{2003-06-11 N ================================================================}
procedure iShlRegUrl.Remove; var {$IFDEF MSWINDOWS}lReg: TRegistry; {$ENDIF} begin guard('iShlRegUrl.Remove');
if fPrt='' then trap(vTrapIllegalName);
{$IFDEF MSWINDOWS}
lReg:=TRegistry.Create;
lReg.RootKey:=HKEY_CLASSES_ROOT;
lReg.DeleteKey(fPrt+'\DefaultIcon'); lReg.DeleteKey(fPrt);
FreeAndNil(lReg);
{$ENDIF}
unguard; end;
{2003-06-11 N ================================================================}
procedure iShlRegUrl.RemoveCmd(aCmd: iShlRegUrlCmd); {$IFDEF MSWINDOWS}var lReg: TRegistry; {$ENDIF} begin guard('iShlRegUrl.RemoveCmd');
if fPrt='' then trap(vTrapIllegalName);
{$IFDEF MSWINDOWS}
lReg:=TRegistry.Create;
lReg.RootKey:=HKEY_CLASSES_ROOT;
lReg.DeleteKey(fPrt+'\shell\'+aCmd.Name+'\command'); lReg.DeleteKey(fPrt+'\shell\'+aCmd.Name); lReg.DeleteKey(fPrt+'\shell');
FreeAndNil(lReg);
{$ENDIF}
unguard; end;
end. |
Ein kleines Demo:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| var lCmd: iShlRegUrlCmd; lReg: iShlRegUrl; begin lCmd:=iShlRegUrlCmd.Create; lReg:=iShlRegUrl.Create('mxnet');
lCmd.Command:=ParamStr(0)+' %1';
lReg.Title:='Maxisoft Net Protocol';
lReg.Make; lReg.MakeCmd(lCmd);
lReg.Free; lCmd.Free; end. |
Ich weiß, ich weiß - in der Unit steht eine Menge, was ihr nicht gebrauchen könnt ... sehts von der Seite: Durch das nicht mögliche Copy&Paste müßt ihr euch selber reindenken. ;-)
Auch wenns nicht wirklich schwer ist ... :lol:
Einen Hacken hat die Sache aber doch ... ein IE Fenster wird geöffnet !
Trotz vielem herumprobieren, bin ich nicht draufgekommen, warum es z.B. beim mule nicht aufgemacht wird.
Aber vielleicht liegst auch daran, daß der mule das Fenster gleich wieder killt ? (Fenstername = URL ...) Was solls - vielleicht kommt ja noch wer drauf ...
Auf jedem Fall viel Spaß mit dem Code !
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 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!