Entwickler-Ecke

Sonstiges (Delphi) - mehere buttons in IE


patrick - Do 10.10.02 21:16
Titel: mehere buttons in IE
schau dir mal diesen beitrag an:
http://www.swissdelphicenter.ch/de/showcode.php?id=1115
hier wird erklärt wie man einen button in IE einbindet. aber wie muss ich die(oder das, der) guid umändern das ich weitere button einfügen kann??


CU


Delete - Fr 11.10.02 07:00

Offenbar wusste der Autor selbst nicht, wie´s geht, sonst hätte er nicht geschrieben:
Zitat:
Your classID. I won`t explain it because its complex.

:roll: Immerhin gibt´s ´ne recht einfache Funktion, die dir das abnimmt:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
uses
  ComObj;

procedure CreateExplorerButton(Path: string);
var
  Tagit : string;
  { ... }
begin
  Tagit := CreateClassID;

  { ... }
end;

Die Konstante "Tagit" entfernst du, meine Änderung übernimmst du, und der Rest ist die unveränderte Funktion aus dem SwissDelphiCenter.

Gruß,
Mathias.


Delete - Fr 11.10.02 07:17

Oder besser: machen wir gleich eine universell nutzbare Funktion daraus:

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:
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;

So, damit kann alles via Parameter angegeben werden, und der Aufruf reduziert sich auf:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure TForm1.Button1Click(Sender: TObject);
begin
  CreateExplorerButton(paramstr(0), // Pfad meiner Anwendung
    'MeinButtontext', // Buttontext
    'MeinMenüeintrag', // Text im Menü "Extras"
    'Text in der Statuszeile', // Text in der Statuszeile
    true, // Button sichtbar?
    ',1', // HotIcon
    ',2'); // Icon
end;

@Tino: Wäre doch ein Beitrag für die FAQs? Oder? :wink:


Tino - Fr 11.10.02 08:04

MathiasSimmack hat folgendes geschrieben:
@Tino: Wäre doch ein Beitrag für die FAQs? Oder?

Gute Idee. Postest Du den Beitrag in die FAQ? Dann steht auch Dein Name mit dabei :-D

Gruß


Delete - Fr 11.10.02 08:39

wo ich doch soviel Wert auf namentliche Erwähnungen lege ... :roll:


patrick - Fr 11.10.02 13:25

danke für die schnelle antwort
ich schau mal ob mein IQ ausreicht damit ich das auch umsetzten kann :oops:

THX


patrick - So 13.10.02 11:35

mein IQ hat gereicht :P :P :P

geht,klappt und läuft!!!

danke:!: