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 SHGetSpecialFolderPath fehlt in meiner Shell32.dll (https://www.delphipraxis.net/8090-shgetspecialfolderpath-fehlt-meiner-shell32-dll.html)

Fischy 28. Aug 2003 12:10


SHGetSpecialFolderPath fehlt in meiner Shell32.dll
 
Hi,

beim Ausführen von SHGetSpecialFolderPath bekomme ich folgende Fehlermeldung:
"Der Prozedureinstiegspunkt "SHGetSpecialFolderPathA" konnte in der Dynamic Link Libary "shell32.dll" nicht gefunden werden."

Liegt das an NT 4.0? Hat noch jemand eine andere Idee den Autostartordner vom CurrentUser ausfindig zu machen? Ich hatte überlegt das über den aktuellen Usernamen zu machen, aber das ist nicht 100% sicher. Ich möchte im Übrigen keinen Eintrag in die Registry vornehmen um das Programm beim Windowsstart zu öffnen.

Gruß und danke im Vorraus,

Fischy

Luckie 28. Aug 2003 12:40

Re: SHGetSpecialFolderPath fehlt in meiner Shell32.dll
 
Zitat:

shell32.dll version 4.71 or later
Zitat:

Windows 2000, Windows NT 4.0 with Internet Explorer 4.0, Windows 98, Windows 95 with Internet Explorer 4.0

Fischy 28. Aug 2003 14:10

Re: SHGetSpecialFolderPath fehlt in meiner Shell32.dll
 
Zitat:

Windows 2000, Windows NT 4.0 with Internet Explorer 4.0, Windows 98, Windows 95 with Internet Explorer 4.0
Die Vorraussetzungen erfüll ich wohl! (Das hatte ich auch schon vor meinem Post gelesen. Ich dachte aber, daß das nicht so ganz stimmt, weils eben bei mir nicht zutrifft :( )

Zitat:

shell32.dll version 4.71 or later
Die allerdings nicht. Meine Version ist 4.00. Das hat mich ein wenig stutzig gemacht, weshalb ich mich mal auf die Suche nach dem Grund für diesen Versionsunterschied begeben hab... Der Grund ist natürlich Microsoft :-/ Mit dem Hotfix Q313829 wird die alte Ver. der Shell32.dll wieder aufgespielt :( Sowas doofes, der is natürlich auf allen Rechnern auf denen das Programm laufen soll drauf.

Also Nochmal:

Zitat:

Hat noch jemand eine andere Idee den Autostartordner vom CurrentUser ausfindig zu machen? Ich hatte überlegt das über den aktuellen Usernamen zu machen, aber das ist nicht 100% sicher. Ich möchte im Übrigen keinen Eintrag in die Registry vornehmen um das Programm beim Windowsstart zu öffnen.
Gruß Fischy

APP 28. Aug 2003 15:20

Re: SHGetSpecialFolderPath fehlt in meiner Shell32.dll
 
Hallo,

ob das Funkt weiß ich nicht, da ich im Moment nur XP-Home habe, aber einen Versuch ist es Wert:
Delphi-Quellcode:
PROCEDURE TForm1.Button1Click(Sender: TObject);
   FUNCTION StartUpPath: STRING;
   VAR
      FilePath                    : ARRAY[0..MAX_PATH] OF Char;
      IDL                         : PItemIDList;
   BEGIN
      Result := '';
      IF Succeeded(SHGetSpecialFolderLocation(0, CSIDL_STARTUP, IDL)) THEN
         IF SHGetPathFromIDList(IDL, FilePath) THEN
            Result := FilePath;
   END;
BEGIN
   showmessage(StartUpPath);
END;
MSDN:
Zitat:

...
SHGetSpecialFolderLocation Function


Function Information

Minimum DLL Version shell32.dll version 4.0 or later
Custom Implementation No
Header shlobj.h
Import library shell32.lib
Minimum operating systems Windows NT 4.0, Windows 95

Fischy 28. Aug 2003 15:31

Re: SHGetSpecialFolderPath fehlt in meiner Shell32.dll
 
Funktioniert! Vielen Dank!

Fischy 29. Aug 2003 08:41

Re: SHGetSpecialFolderPath fehlt in meiner Shell32.dll
 
Der Vollständigkeit halber einmal mit Freigabe des Speichers:

Delphi-Quellcode:
function GetAutostartPathCurrentUser : String;
var
  buffer : Array[0..MAX_PATH+1] of Char;
  IDL    : PItemIDList;
  pMalloc : IMalloc;
begin
  result:='';
  if SHGetMalloc(pMalloc) <> NO_ERROR then exit;
  if Succeeded(SHGetSpecialFolderLocation(0, CSIDL_STARTUP, IDL)) then
    if SHGetPathFromIDList(IDL, buffer) then
      result:=buffer;
  pMalloc.Free(IDL);
end;

Delphideppen 7. Jun 2005 14:16

Re: SHGetSpecialFolderPath fehlt in meiner Shell32.dll
 
ich such auch schon ne ganze zeitlang nach dieser function. ich bin leider noch ein ziehmlicher noob hab grad erst angefangen zu programmieren deshalb würde ich mich sehr freuen wenn du (App) mir die function kurz erklären könntest da wir es noch nicht geschafft haben die funktion in unser programm einzubauen.
Vielen Dank schon mal

Gruss

Amon

PS: Ich hab mich mit nem freund zusammen angemeldet wir lernen grad zusammen delphi, er kam auf den behinderten nick

MathiasSimmack 7. Jun 2005 14:18

Re: SHGetSpecialFolderPath fehlt in meiner Shell32.dll
 
Es steht dir frei, dich/euch umbenennen zu lassen, wenn ihr einen passenderen Namen gefunden habt.
Ansonsten: Keine Entschuldigungen! Das ist nicht unterhalb der Grenze des guten Geschmacks. ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:42 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