Mein Vorschlag einer universelleren Funktion als die, die im
SwissDelphiCenter gepostet wurde, sieht so aus:
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:
| uses Registry, ComObj;
procedure CreateExplorerButton(const szAppname, szButtonText, szMenuText, szStatusbarText: string; const IsVisible: boolean; const szHotIcon, szIcon: string); const IEExtensions = 'Software\Microsoft\Internet Explorer\Extensions\'; DefVisible : array[boolean]of string = ('No','Yes'); var reg : TRegistry; begin reg := TRegistry.Create; with reg do try RootKey := HKEY_LOCAL_MACHINE; if(OpenKey(IEExtensions + CreateClassId,true)) then try WriteString('ButtonText',szButtonText); WriteString('MenuText',szMenuText); WriteString('MenuStatusBar',szStatusbarText); WriteString('CLSID','{1FBA04EE-3024-11d2-8F1F-0000F87ABD16}'); WriteString('Default Visible',DefVisible[IsVisible]); WriteString('Exec','"' + szAppname + '"'); WriteString('HotIcon',szHoticon); WriteString('Icon',szIcon); finally CloseKey; end; finally Free; end; end; |
Sie hat zwar mehr Parameter, muss aber genau deswegen nicht für jedes Programm extra angepasst werden, weil man alle wichtigen Dinge direkt angeben kann. Etwa so:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| procedure TForm1.Button1Click(Sender: TObject); begin CreateExplorerButton(paramstr(0), 'MeinButtontext', 'MeinMenüeintrag', 'Text in der Statuszeile', true, ',1', ',2'); end; |