Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Fehler: Privelgierte Anweisung beim laden eines Icons (https://www.delphipraxis.net/115637-fehler-privelgierte-anweisung-beim-laden-eines-icons.html)

Andreas L. 15. Jun 2008 17:15


Fehler: Privelgierte Anweisung beim laden eines Icons
 
Hi,
wenn ich mit folgenden Code ein Icon aus einer Datei lade, bekomme ich die untenstehende Fehlermeldung. Der Debugger bleibt beim end; stehen. Wo liegt der Fehler?

Delphi-Quellcode:

function GethIcon(FileName: String; icoSize: Cardinal; icoIndex: integer = 0): Cardinal;
var DeskTopISF: IShellFolder; IExIcon: IExtractIcon; PathPidl: PItemIDList; hIconL, hIconS: HIcon;
begin
  Result := 0;
  if SHGetDesktopFolder(DeskTopISF) <> NOERROR then Exit;
  PathPidl := nil;
  if DeskTopISF.GetUIObjectOf(0, 1, PathPidl, IID_IExtractIconA, nil, IExIcon) <> NOERROR then Exit;
  if (IExIcon.Extract(PChar(FileName), icoIndex, hIconL, hIconS,
    icoSize or (16 shl 16)) = NOERROR) and (hIconL <> 0) then Result := hIconL;
  DestroyIcon(hIconS);
end;

//Aufruf:
Icon.handle := GethIcon('C:\Program Files\Mozilla Firefox\firefox.exe', 16, 0);
Zitat:

---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt Demo.exe ist eine Exception der Klasse EPrivilege mit der Meldung 'Privilegierte Anweisung' aufgetreten.
---------------------------
Anhalten Fortsetzen Hilfe
---------------------------
Ciao,
Andy

Codewalker 15. Jun 2008 17:25

Re: Fehler: Privelgierte Anweisung beim laden eines Icons
 
"Priviligierte Anweisung" kenne ich nur von meinen wenigen Ausflügen in die Assembler-Welt, wenn man bestimmte Aktionen durchführen möchte, die nur im Kernel-Mode erlaubt sind. Aber auf der ersten Blick ist davon jetzt hier nicht zu sehen...

Apollonius 15. Jun 2008 17:27

Re: Fehler: Privelgierte Anweisung beim laden eines Icons
 
Kannst du mal in der CPU-Ansicht schauen, wo das auftritt?

Andreas L. 15. Jun 2008 17:37

Re: Fehler: Privelgierte Anweisung beim laden eines Icons
 
Bei

Zitat:

778442EB C9 leave
Jetzt kommt aber eine Zugriffsverletzung. Wenn ich Delphi beende und neustarte kommt wieder priveligierte Anweisung.

Apollonius 15. Jun 2008 17:43

Re: Fehler: Privelgierte Anweisung beim laden eines Icons
 
Wo steht dieses Leave? Delphi verwendet das normalerweise nicht. Kannst du mal einen Screenshot posten?

Andreas L. 15. Jun 2008 19:08

Re: Fehler: Privelgierte Anweisung beim laden eines Icons
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von Apollonius
Wo steht dieses Leave? Delphi verwendet das normalerweise nicht. Kannst du mal einen Screenshot posten?

Jetzt kommt wieder was anderes...

EDIT: Vllt. hilft noch folgender Code:
Delphi-Quellcode:
function TBrowserInfo.GetIcon(Size: Cardinal = 32):TIcon;
begin
  Result.Handle := GethIcon(Binary, Size, 0);
end;
Binary ist eine String-Eigenschaft von TBrowserInfo mit den Dateiname inkl. Pfad

Apollonius 15. Jun 2008 19:14

Re: Fehler: Privelgierte Anweisung beim laden eines Icons
 
Das ist doch schon nach einer Exception (siehe @HandleAnyException).

Andreas L. 15. Jun 2008 19:18

Re: Fehler: Privelgierte Anweisung beim laden eines Icons
 
Liste der Anhänge anzeigen (Anzahl: 1)
Und noch ein Bild...

Apollonius 15. Jun 2008 20:20

Re: Fehler: Privelgierte Anweisung beim laden eines Icons
 
Auch das ist zu spät (Kernel32.RaiseException). Der Debugger stoppt da nur, weil in dem vorherigen Call das eigentlich Werfen der Exception stattfand.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:45 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 by Thomas Breitkreuz