Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi SHGetFolderPath -> TOKEN_DEFAULTUSER -> Undef. Bezeichner (https://www.delphipraxis.net/136163-shgetfolderpath-token_defaultuser-undef-bezeichner.html)

MCXSC 24. Jun 2009 21:13


SHGetFolderPath -> TOKEN_DEFAULTUSER -> Undef. Bezeich
 
Hallo!

Ich habe eine Frage zu dem Tutorial "Entwicklung für Windows Vista", bzw. mit dem Part "Wohin mit den Dateien?".

Und zwar habe ich folgenden Delphi-Code:

Delphi-Quellcode:
uses ShlObj, SysUtils;

function GetSpecialFolder(const AFolder: Integer): string;
var
  path: string
begin
  SetLength(path, 250);
  SHGetFolderPath(Application.Handle, AFolder, TOKEN_DEFAULTUSER, 0, PChar(path);
  result := PChar(path);
end;
Problem ist nun, dass "TOKEN_DEFAULTUSER" ein undefinierter Bezeichner ist; Google sagt mir dazu aber nichts... Jemand hier vielleicht eine Idee?

Danke,
MCXSC

Fridolin Walther 24. Jun 2009 21:19

Re: SHGetFolderPath -> TOKEN_DEFAULTUSER -> Undef. Bez
 
Aus der Dokumentation zu MSDN-Library durchsuchenSHGetFolderPath:
Zitat:

Assigning the hToken parameter a value of -1 indicates the Default User.
Entsprechend:
Delphi-Quellcode:
const
  TOKEN_DEFAULTUSER = -1;

MCXSC 24. Jun 2009 21:21

Re: SHGetFolderPath -> TOKEN_DEFAULTUSER -> Undef. Bez
 
Hm, dann bekomme ich die Meldung "Konstantenausdruck verletzt untere Grenzen"... :(

Fridolin Walther 24. Jun 2009 21:27

Re: SHGetFolderPath -> TOKEN_DEFAULTUSER -> Undef. Bez
 
Sorry, muss natürlich so heißen:
Delphi-Quellcode:
const
  TOKEN_DEFAULTUSER = Cardinal(-1);

MCXSC 24. Jun 2009 21:41

Re: SHGetFolderPath -> TOKEN_DEFAULTUSER -> Undef. Bez
 
Ah, danke schön!³

toms 24. Jun 2009 21:59

Re: SHGetFolderPath -> TOKEN_DEFAULTUSER -> Undef. Bez
 
oder

Delphi-Quellcode:
const
  TOKEN_DEFAULTUSER = $FFFF;

Fridolin Walther 24. Jun 2009 22:05

Re: SHGetFolderPath -> TOKEN_DEFAULTUSER -> Undef. Bez
 
Zitat:

Zitat von toms
Delphi-Quellcode:
const
  TOKEN_DEFAULTUSER = $FFFF;

Wenn dann schon
Delphi-Quellcode:
const
  TOKEN_DEFAULTUSER = $FFFFFFFF;
Da hToken als THandle (-> DWORD) übergeben wird, würde bei Dir dann aus dem Word $FFFF ein $0000FFFF werden, was nicht -1 ist. Kannst es gerne auch kurz selbst nachprüfen :).

dietru 18. Dez 2020 20:48

AW: SHGetFolderPath -> TOKEN_DEFAULTUSER -> Undef. Bezeichner
 
Hallo,

es ist zwar eine Weile her, ich muss die Sache aber nochmal aufwärmen. Ich hatte SHgetfolderpath vermutlich unter W7 zuletzt benutzt. Da hatte ich bei TOKEN_DEFAULT_USER eine 1 stehen und bekam das Verzeichnis des aktuellen users zurück. Habe jetzt Delphi 10.3 unter Win10/64. Dort klappt das nicht mehr.
Was muss ich jetzt eintragen, die Konstante heisst vermutlich TOKEN_CURRENTUSER?

Vielen Dank und freundliche Grüße
Dieter

Dalai 18. Dez 2020 21:24

AW: SHGetFolderPath -> TOKEN_DEFAULTUSER -> Undef. Bezeichner
 
@dietru:
Einfach mal mit einer 0 probieren. Steht übrigens auch so in der Doku zu MSDN-Library durchsuchenSHGetFolderPath (die weiter oben auch schon verlinkt ist):
Zitat:

This parameter is usually set to NULL [...]
Grüße
Dalai

dietru 18. Dez 2020 23:00

AW: SHGetFolderPath -> TOKEN_DEFAULTUSER -> Undef. Bezeichner
 
Hallo, Dalai,

danke, es hat geklappt.

MfG
Dieter


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:56 Uhr.

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