Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Wie spricht man ShellExtentions an (https://www.delphipraxis.net/78940-wie-spricht-man-shellextentions.html)

jag_the_rapper 13. Okt 2006 13:01


Wie spricht man ShellExtentions an
 
Ich habe in den Delphi-Demos (Delphi5) ein Beispiel gefunden, wie man eine DLL erzeugt, die sich in die Windowskontextmenüs einhängt. Wenn ich jezt auf ein Verzeichnis rechts klicke, erscheint mein PRogramm (die DLL) mit im Kontextmenü und lässt sich auch öffnen. Die DLL listet mir alle Dateien aus dem Verzeichnis auf. Soweit so gut. Jetzt möchte ich eine Anbindung an diese DLL schreiben. Also ich habe ein eigenen kleinen Dateibrowser geschrieben und ich möchte, dass man da auch diese DLL ansprechen kann. Ich mein, ein Popupmenü mit der DirectoryListBox zu verbinden, ist kein Ackt, aber wie rufe ich jetzt die DLL auf und wie übergebe ich ihr den Verzeichnispfad?

Das Demo ist zu finden unter <DELPHIPROGRAMMDIR>\Demos\ActivX\shellext\contmenu .dpr

Ich muss auch dazu sagen, dass ich kaum bis keine Kenntnisse über ActivX und COM-Objecten habe. Wenn jemand ein gut verstänndliches Tutorial kennt, wäre ich ihm sehr verbunden, wenn er die URL posten könnte.

gmc616 13. Okt 2006 15:21

Re: Wie spricht man ShellExtentions an
 
Zwar hab ich nicht ganz kapiert, was dein Problem ist, aber ich schätze
dieser Link zu den Schweitzern könnte dir weiter helfen.

jag_the_rapper 13. Okt 2006 17:27

Re: Wie spricht man ShellExtentions an
 
Hey, danke für das Tutorial. Genau das habe ich gesucht.


Ich habe das jetzt überarbeitet und es funktioniert schon ganz gut, nur dass ich ne Exception beim Programmende bekomme (EInvalidPointer). Jetzt stellt sich die Frage, woher kommt dieser Fehler und noch besser, wie bekommt man ihn weg?

Hier mal nen Auszu auf meinen Quelltexten:

Delphi-Quellcode:
library DirListor;

uses ShareMem,
     Windows,
     ComServ,
     untMain     in 'untMain.pas',
     DirlistorDlg in 'DirlistorDlg.pas' {Form_Dirlistor};

{$R DIRLISTOR.res}


procedure StartDirListor(APath : string);
var Dialog : TForm_DirListor;

begin
  try
    Dialog         := TForm_DirListor.Create(nil);
    Dialog.FileName := APath;
    Dialog.ShowModal;
  finally
    Dialog.Free;
  end; // of try
end;

exports
  DllGetClassObject,
  DllCanUnloadNow,
  DllRegisterServer,
  DllUnregisterServer,
  StartDirListor;

begin
end.
und jetzt mein Hauptprogramm, was den Fehler am Ende bringt:

Delphi-Quellcode:
unit AnbindungsDlg;

interface

uses
  ShareMem, Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, DirListorDlg;

procedure StartDirListor(APath : string);

type

  TForm_Anbindung = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);

  end;

var
  Form_Anbindung: TForm_Anbindung;

implementation

{$R *.DFM}

procedure StartDirListor(APath : string); external 'DirListor.dll';

procedure TForm_Anbindung.Button1Click(Sender: TObject);
begin
  StartDirListor('C:\Windows\');
end;

procedure TForm_Anbindung.Button2Click(Sender: TObject);
begin
  Self.Close;
end;

end.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:26 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz