Delphi-PRAXiS
Seite 3 von 4     123 4      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Problem mit Shellicons... (https://www.delphipraxis.net/5793-problem-mit-shellicons.html)

Christian Seehase 19. Jun 2003 23:36

Moin FriFra,

und wenn Du es mal mit .htm versuchst?

FriFra 19. Jun 2003 23:40

Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von Christian Seehase
Moin FriFra,

und wenn Du es mal mit .htm versuchst?

nein, geht nicht...

Du kannst Dir ja mal den Screenshot und den Code von APP ansehen und meinen Screenshot...
Ich befürchte fast, das es mit dem XP-SP1 zusammenhängt...

Wie gesagt, unter NT hab ich das Problem nicht...

Christian Seehase 20. Jun 2003 00:01

Moin FriFra,

nur zur Info:
Ich hab' mir das Attachement von APP mal runtergeladen:
Button1 -> geht (4)
Button2 -> geht nicht (0)

W2K SP2

FriFra 20. Jun 2003 00:11

Wie schon gesagt, unter XP scheint der Code nicht zuverlässig zu sein...

So siet es bei mir aus (XP Home und XP pro!):
http://www.delphipraxis.net/download.php?id=1371

und so bei APP:
http://www.delphipraxis.net/download.php?id=1369

Ich frage mich dabei nur, welche andere verborgene API-Funktion verwendet der Explorer, denn der kann diese Icons anzeigen...

Christian Seehase 20. Jun 2003 00:44

Moin FriFra,

Du könntest noch versuchen mal gezielt InitCommonControls bzw. InitCommonControlsEx aufzurufen. Die haben auch was mit den ImageListen zu tun.

Jens Schumann 20. Jun 2003 06:56

Hallo,
folgende Methode liefert mir unter Win200 immer das richtige ICON.
Delphi-Quellcode:
procedure GetAssociatedIconEx(const Filename : String; Icon : TIcon);
var
  SHFileInfo: TSHFileInfo;
begin
  // CoInitialize has to be called before SHGetFileInfo (done by Delphi)
  FillChar(SHFileInfo, SizeOf(TSHFileInfo), 0);
  if (SHGetFileInfo(PChar(Filename), FILE_ATTRIBUTE_NORMAL, SHFileInfo,
    SizeOf(TSHFileInfo), SHGFI_USEFILEATTRIBUTES or SHGFI_ICON or SHGFI_SMALLICON) <> 0) then
    // or SHGFI_LARGEICON, SHGFI_LINKOVERLAY, SHGFI_OPENICON, SHGFI_SELECTED
  try
    // get it
    Icon.Handle := CopyIcon(SHFileInfo.hIcon);
  finally
    // you are responsible for destroying the icon handle
    DestroyIcon(SHFileInfo.hIcon);
  end;
end;
Quelle: Nico Bendlin

FriFra 20. Jun 2003 07:53

Zitat:

Zitat von Jens Schumann
Hallo,
folgende Methode liefert mir unter Win200 immer das richtige ICON.

Bei Dir kann das schon sein, aber bei mir nicht http://www.frifra.de/Temp/DEF.jpg :?
Ausserdem machst Du ja im Prinzip das Gleiche wie alle anderen auch...

Marco Haffner 20. Jun 2003 21:34

Hast Du eigentlich meine Routine auch ausprobiert, eine neue Anwendung nur mit einem TImage drauf? Falls nein, dann solltest Du es mal probieren, wahrscheinlich wird auch da nichts angezeigt.
Habe gerade noch etwas herumgebastelt und festgestellt, das bei mir die psd (Photoshop) und mpeg-Icons nicht angezeigt werden, es wird immer eine 3 als Index zurückgeliefert, genauso wir für ico-Dateien.

FriFra 20. Jun 2003 21:41

Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von Marco Haffner
Hast Du eigentlich meine Routine auch ausprobiert...

:( Hab ich...

http://www.delphipraxis.net/download.php?id=1385
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Buttons, ExtCtrls, ShellAPI;

type
  TForm1 = class(TForm)
    Image1: TImage;
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure GetAssociatedIconEx(const Filename : String; Icon : TIcon);
var
  SHFileInfo: TSHFileInfo;
begin
  // CoInitialize has to be called before SHGetFileInfo (done by Delphi)
  FillChar(SHFileInfo, SizeOf(TSHFileInfo), 0);
  if (SHGetFileInfo(PChar(Filename), FILE_ATTRIBUTE_NORMAL, SHFileInfo,
    SizeOf(TSHFileInfo), SHGFI_USEFILEATTRIBUTES or SHGFI_ICON or SHGFI_SMALLICON) <> 0) then
    // or SHGFI_LARGEICON, SHGFI_LINKOVERLAY, SHGFI_OPENICON, SHGFI_SELECTED
  try
    // get it
    Icon.Handle := CopyIcon(SHFileInfo.hIcon);
  finally
    // you are responsible for destroying the icon handle
    DestroyIcon(SHFileInfo.hIcon);
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
GetAssociatedIconEx('c:\test.htm',Image1.Picture.Icon);
end;

end.

Marco Haffner 20. Jun 2003 22:03

Zitat:

Zitat von FriFra
:( Hab ich...

Tja, wüßte jetzt wirklich nur zu gerne was das schon wieder ist, wie ja bereits erwähnt, tritt bei mir das gleiche Prob mit psd, mpg und mp3-Dateien auf. Hatte htm, ini, jpg, gif, tif, bmp, zip, rar, pas, dfm, dpr, dpk, avi mit Symbol.
Aber da ich ja jetzt weiß wonach ich bei mir suchen muß...


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:04 Uhr.
Seite 3 von 4     123 4      

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