Geschrieben von scheff-koch am 27.06.2005, 12:38

ich möchte ein kleines Delphi tool vorstellen.

man hatt eine form mit einem button und einer listbox.

wenn man eine datei auf das fenster zieht(Drag 'n Drop) dann wird der datei name der listbox hinzugefügt.

wenn es ein *.lnk (verknüpfung) ist wird der dateiname auf den die verknüpfung zeigt angezeigt,
bei *.url datein wird die verknüpfte internetadresse angezeigt.
mit dem button wird der makierte eintrag in die zwischenablage kopiert.

mann brauch eine form mit einer listbox und einem button. bei NAME die 1 streichen.

code:

unit unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ShellApi, clipbrd, ShlObj, ComObj, ActiveX, CommCtrl;

type
TForm1 = class(TForm)
Button: TButton;
ListBox: TListBox;
procedure FormCreate(Sender: TObject);
procedure ButtonClick(Sender: TObject);
private
procedure WMDROPFILES (var Msg: TMessage); message WM_DROPFILES;
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
TShellLinkInfoStruct = record
LinkFile: array[0..MAX_PATH] of Char;
FileToExecute: array[0..MAX_PATH] of Char;
ParamStrings: array[0..MAX_PATH] of Char;
WorkingDirectroy: array[0..MAX_PATH] of Char;
Description: array[0..MAX_PATH] of Char;
Icon: array[0..MAX_PATH] of Char;
IconIndex: Integer;
HotKey: Word;
ShowCommand: Integer;
FindData: TWIN32FINDDATA;
end;
var
Form1: TForm1;

implementation
{$R *.DFM}

function GetLinkInfo(FileName:string): TShellLinkInfoStruct;
var
ShellLink: IShellLink;
PersistFile: IPersistFile;
AnObj: IUnknown;
begin
try
StrCopy(Result.LinkFile,PChar(FileName));
AnObj := CreateComObject(CLSID_ShellLink);
ShellLink := AnObj as IShellLink;
PersistFile := AnObj as IPersistFile;
PersistFile.Load(PWChar(WideString(Result.LinkFile)), 0);
with ShellLink do
begin
GetPath(Result.FileToExecute,
SizeOf(Result.LinkFile),
Result.FindData,
SLGP_UNCPRIORITY);
GetDescription(Result.Description,
SizeOf(Result.Description));
GetArguments(Result.ParamStrings,
SizeOf(Result.ParamStrings));
GetWorkingDirectory(Result.WorkingDirectroy,
SizeOf(Result.WorkingDirectroy));
GetIconLocation(Result.Icon,
SizeOf(Result.Icon),
Result.IconIndex);
GetHotKey(Result.HotKey);
GetShowCmd(Result.ShowCommand);
end;
except
end;
end;

procedure TForm1.WMDROPFILES (var Msg: TMessage);
var i, anzahl, size: integer;
Dateiname: PChar;

function ProcFileName(FN:string):string;
var ext:string;
buffer:array[0..2047] of Char;
begin
ext:= LowerCase(extractfileext(FN));
if ext = '.lnk' then
begin
Result := getlinkinfo(FN).FileToExecute;
end
else if ext = '.url' then
begin
buffer:='';
GetPrivateProfileString('InternetShortcut',PChar('URL'), PChar('ERROR'), Buffer, SizeOf(Buffer),PChar(FN));
Result:=buffer;
end
else result:=FN;
end;

begin
Dateiname:='';
inherited;
anzahl := DragQueryFile(Msg.WParam, $FFFFFFFF, Dateiname, 255);
for i := 0 to (anzahl - 1) do
begin
size := DragQueryFile(Msg.WParam, i , nil, 0) + 1;
Dateiname:= StrAlloc(size);
DragQueryFile(Msg.WParam,i , Dateiname, size);
Listbox.items.add(ProcFileName(StrPas(Dateiname)));
StrDispose(Dateiname);
end;
DragFinish(Msg.WParam);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
DragAcceptFiles(Handle, true);
end;

procedure TForm1.ButtonClick(Sender: TObject);
begin
Clipboard.AsText:= ListBox.Items[ListBox.ItemIndex];
end;

end.

Bewertung Anzahl
6
100,0 %
1 Bewertungen