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 Shellapi.pas Updates Downloaden? (https://www.delphipraxis.net/86622-shellapi-pas-updates-downloaden.html)

Schaedel 16. Feb 2007 12:52


Shellapi.pas Updates Downloaden?
 
Hallo Narrenvolk :)

Ich hab mir die neuen Funktionen der Shellapi mal angeschaut und so einiges gefunden was mir weiterhelfen könnte.
Nur finde ich kein "Update" oder Downloadlink zu der "neuen" Version.

Kann man die überhaupt runterladen?
Muss man die kaufen?

Ich steh echt im Wald :)

danke schonmal für die Antworten...

Daniel 16. Feb 2007 12:58

Re: Shellapi.pas Updates Downloaden?
 
Huch ... was genau hast Du Dir denn angesehen? Die Datei "Shellapi" ist Teil des jeweiligen BDS und ist separat alleine für sich nicht erhältlich.

Schaedel 16. Feb 2007 13:10

Re: Shellapi.pas Updates Downloaden?
 
Hallo,

ich hab in einer aktullen Shellapi das Flag " FOF_NOCOPYSECURITYATTRIBS " gefunden.
Das möchte ich gern nutzen... nur kennt meine API dieses Flag nicht.
Kann ich das einfach "reintippen" in dem ich die Regeln dort beachte?

In der Shell32.dll müsste es vorhanden sein, oder wie funktioniert das?

Danke :-D

MagicAndre1981 16. Feb 2007 13:14

Re: Shellapi.pas Updates Downloaden?
 
Zitat:

Zitat von Schaedel
ich hab in einer aktullen Shellapi das Flag " FOF_NOCOPYSECURITYATTRIBS " gefunden.
Das möchte ich gern nutzen... nur kennt meine API dieses Flag nicht.

dann schau mal hier: http://search.msdn.microsoft.com/sea...ECURITYATTRIBS

sh17 16. Feb 2007 13:14

Re: Shellapi.pas Updates Downloaden?
 
Funktionen aus einer DLL kannst Du Dir natürlich auch selbst, ohne Shellapi.pas, importieren. Konstanten definierst Du entsprechend der API-Dokumentation.

Mena 16. Feb 2007 13:30

Re: Shellapi.pas Updates Downloaden?
 
Der Schaedel musste weg, daher frag ich jetzt weiter:

Also, dass es das Flag FOF_NOCOPYSECURITYATTRIBS gibt haben wir bei Microsoft entdeckt. Es ist genau das, was wir brauchen, um via SHFILEOPSRUCT ein Verzeichnis samt Inhalt zu verschieben. Leider kopiert das SHFILEOPSTRUCT dabei auch die Berechtigungen, die auf der Datei liegen, mit. Das führt dazu, dass ein Anwender in das neue Verzeichnis sehen kann, die dort liegende Datei aber nicht öffnen darf. Nicht gut.

Ein Blick in unsere ShellApi.pas fördert 11 Flags zutage, von FOF_MULTIDESTFILES = $0001 bis FOF_NOERRORUI = $0400. Wir wollen aber FOF_NOCOPYSECURITYATTRIBS, das lt. MSDN $0800 sein soll.

Wie kommen wir da dran? Selber reinschreiben? Wenn ja, wie und wo überall? Wenn nein, wie dann? Wie importiert man Funktionen und Konstanten aus einer dll?

Ich verdiene seit fast 8 Jahren meinen Lebensunterhalt mit Programmierung, aber das ist mir noch nicht untergekommen...


Grüße von Mena

Daniel 16. Feb 2007 13:44

Re: Shellapi.pas Updates Downloaden?
 
Ach, die Konstanten kannst Du Dir natürlich selbst definieren. Den Wert kannst Du ja aus MSDN übernehmen. Innerhalb Deiner Delphi-Anwendung muss diese Konstante dort verfügbar sein, wo sie im Rahmen der Deiner Anwendung an die API-Funktion übergeben wird (also wie jede andere Konstante auch).

Christian Seehase 16. Feb 2007 13:44

Re: Shellapi.pas Updates Downloaden?
 
Moin Mena,

Zitat:

Zitat von Mena
Wie kommen wir da dran? Selber reinschreiben? Wenn ja, wie und wo überall? Wenn nein, wie dann?

Die API-Deklarationen, die bei Delphi mitgeliefert werden, sind nun einmal nicht komplett.
Teilweise, weil es sie zum Zeitpunkt der Auslieferung noch nicht gab, teilweise weil sie für verschiedene OS-Schienen unterschiedlich deklariert werden müssten, teilweise... weiss nicht warum ;-)

Da man als nicht C-Nutzer nicht direkt die Header-Dateien und Libraries des PSDK nutzen kann, bleibt einem dann nichts weiter übrig, als das alles selber zu deklarieren.
Ob Du das nun je Datei, in der Du es brauchst einzeln machst (unpraktisch ;-)) oder Dir selber passende Bibliotheken/Units anlegst, in denen Du Deine Deklarationen dann zentral zur Verfügung hast, bleibt natürlich Dir überlassen.

shmia 16. Feb 2007 13:47

Re: Shellapi.pas Updates Downloaden?
 
Borland hinkt der Windows API immer ein "bisschen" hinterher.
Je älter die Delphi Version, umso älter sind die Units über die die Windows API DLL eingebunden werden.
Es gibt 3 Lösungen:
a) auf neuere Delphi Version umsteigen
b) kleinere Probleme durch eigene Deklarationen ausbessern
c) Verwendung von der Jedi API Library (Ziemlich vollständige Umsetzung, aber doch recht umfangreich)

Für dein Problem scheint mir doch b) am Besten:
Delphi-Quellcode:
const
{$EXTERNALSYM FOF_NOCOPYSECURITYATTRIBS}
FOF_NOCOPYSECURITYATTRIBS =$0800;

Mena 16. Feb 2007 14:29

Re: Shellapi.pas Updates Downloaden?
 
Vielen Dank an Euch alle!

Es klappt!
Ich habe mir das FOF_NOCOPY(unaussprechliche Ding) zwar global aber in der Unit, in der ich es aufrufe definiert (so wie shmia es vorgemacht) hat und einfach benutzt und siehe da, es funktioniert! (Und begriffen habe ich es auch!)
:hello: :dance: :party:

Klasse, wieder was dazugelernt.

Grüße von Mena


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