Hai,
Also ich habe ein Problem mit meiner Schnellstartleiste, ich habe bis jetzt ein Drag&Drop Message eingebaut und kann auch die Programme starten, die in der Schnellstartleiste drin sind.
Jetzt fehlt mir noch das Icon des Gedroppeden Gegenstandes, das Problem ist
ich weiß nicht wie ich das Icon der .Exe auslesen, dann in Bitmap konvertieren, abspeichern, und dann auf dem Button, wo man Drag&Drop gemacht hat, absetzt...
Hier mein Codeschnipsel:
Delphi-Quellcode:
function FileIcon(FileName: String): TIcon;
var FileInfo: TSHFileInfo; AIcon: TIcon;
begin
FillChar(FileInfo,SizeOf(FileInfo),#0);
SHGetFileInfo(PChar(FileName),0,FileInfo,SizeOf(FileInfo),SHGFI_ICON or SHGFI_LARGEICON);
AIcon:=TIcon.Create;
Try
AIcon.Handle:=FileInfo.HIcon;
AIcon.Transparent:=True;
Except end;
Result:=AIcon;
end;
procedure TForm1.WMDROPFILES (var Msg: TMessage);
var i, anzahl, size: integer;
Dateiname: PChar;
antwort: Integer;
s : string;
Icon: TIcon;
begin
inherited;
Dateiname := '';
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);
//hier dein source - in "Dateiname" ist der name des droped objectes
begin
Icon := TIcon.Create;
try
Icon.Loadfromfile(dateiname);
s:= ChangeFileExt(dateiname,'.BMP');
Image1.Width := Icon.Width;
Image1.Height := Icon.Height;
Image1.Canvas.Draw(0,0,Icon);
Image1.Picture.SaveToFile((ExtractFilePath(ParamStr(0))+'1.BMP'));
finally
Icon.Free;
end;
end;
Ja, noch eine Frage... Muss ich das Icon jetzt unbedingt abspeichern oder kann ich das auch als TempIcon machen??
Mfg Philipp
Wer sich interisiert sich mal das halbfertige Programm anzuschauen,
kann sich
hier den Source oder die Exe herunterladen...