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 WIN XP Ordneroption aus einem Programm heraus ändern? (https://www.delphipraxis.net/129615-win-xp-ordneroption-aus-einem-programm-heraus-aendern.html)

Stargate3 22. Feb 2009 12:58


WIN XP Ordneroption aus einem Programm heraus ändern?
 
Hey,
ich möchte gerne aus meinem Delphi Programm heraus die Ansich eines Ordners ändern.
Im konkreten Fall sollen alle versteckten Dateien ausgeblendet werden. Nach beendigung des Programms aber wieder sichtbar sein.
Hat da jemand eine Idee und kann mir helfen?

Danke Stargate7

Luckie 22. Feb 2009 13:05

Re: WIN XP Ordneroption aus einem Programm heraus ändern?
 
Das sind alles nur Registryeinstellungen, so weit ich weiß. Du musst also nur die richtigen Schlüssel und Werte finden. Solltes du mit Google nichts finden, dann nimm den Regmon von Sysinternals und guck, wo und was der Explorer beim Ändern in die Registry schreibt. Allerdings kann es sein, dass der Explorer neu gestartet werden muss, damit die Änderungen wirksam werden. Man könnte auch probieren, ob der Explorer auf WM_SETTINGCHANGE reagiert.

Aber was soll das werden? Willst du damit irgendwelche Dateien schützen? Hinzukommt, dass diese Einstellungen sich auf alle Ordner auswirken. Während dein Programm läuft, könnte ich also systemweit keine versteckten Dateien sehen. Wenn ich nicht weiß, dass dein Programm die Einstellungen ändert, würde mich das ziemlich verwirren. Und ich mag so was gar nicht, wenn irgendwelche Programme mir meine persönlichen Einstellungen hinter dem Rücken ändern. Und was machst du, wenn jemand einen alternativen Dateiexplorer benutzt?

Stargate3 22. Feb 2009 13:13

Re: WIN XP Ordneroption aus einem Programm heraus ändern?
 
Ok, du hast da wohl nicht ganz unrecht. Also eigentlich ist mein Problem ja auch etwas anders gelagert und ich bin schliesslich bei dieser Idee gelandet.
Also zurück zum Anfang.
Ich möchte gerne mit dem TOpenDialog BildDateien also Endung *.JPG auswählen und diese in einer Access DAtenbank eintragen. Mein Programm ändert den Dateinamen des Bildes in eine InventarNummer. Damit beim nächsten Auswählen eines neuen Bildes, jetzt noch ohne Inventarnummer, die Unübersichlichkeit ohne Grenzen ist hatte ich das Dateiattribut auf Hidden gesetzt. Der TOpenDialog zeigt mir aber auch alle Dateien mit Hidden an. Kann ich den Dialog denn dazu bringen mir diese nicht anzuzeigen?
Wenn ich im Explorer die Ansicht auf "Versteckte Datein Ausblenden" gesetzt habe sind diese auch im TOpen Dialog verschwunden.
Uff hoffe du steigst durch?

Luckie 22. Feb 2009 13:16

Re: WIN XP Ordneroption aus einem Programm heraus ändern?
 
Du willst also der übersichtlickiet halber nur bestimmte Dateien im Opendialog anzeigen. Da die Dateien die gleiche Endung haben kannst du keinen Filter auf die Dateiendung setzen.

Hm. :gruebel: Ich würde die Dateien, die schon in der DB sind in einen anderen Ordner verschieben.

Stargate3 22. Feb 2009 13:19

Re: WIN XP Ordneroption aus einem Programm heraus ändern?
 
Das ginge natürlich, dann muß ich aber auch die Pfade in der Access Datei mit berücksichtigen und ändern.
Mit Filter ist da nix zu machen, hab auch schon gedacht die Endung zu ändern, aber dann meckern wieder die normalen Bildbetrachtungs Programme

toms 22. Feb 2009 13:25

Re: WIN XP Ordneroption aus einem Programm heraus ändern?
 
Eine Möglichkeit wäre die Dateien readonly zu setzen und den Flag ofHideReadOnly im Dialog zu aktivieren.

HalloDu 22. Feb 2009 13:26

Re: WIN XP Ordneroption aus einem Programm heraus ändern?
 
Kannst du denn nicht die Endungen der schon eingefügen auf *.JPEG ändern und die die noch dürfen *.JPG lassen. Wenn ich mich nicht irre, sind das beides korrekte JPEG-Endungen. Und dann filterst du nach *.JPG.

Stargate3 22. Feb 2009 13:28

Re: WIN XP Ordneroption aus einem Programm heraus ändern?
 
Hallo toms,
wie mach ich das? mit dem Flag setzen? Stehe gerade irgendwie auf dem Schlauch...
Danke

himitsu 22. Feb 2009 13:29

Re: WIN XP Ordneroption aus einem Programm heraus ändern?
 
Du könntest doch die Dateinamen ändern, bzw. die Dateien dann woanders hinverschieben?

toms 22. Feb 2009 13:44

Re: WIN XP Ordneroption aus einem Programm heraus ändern?
 
Zitat:

Zitat von Stargate3
Hallo toms,
wie mach ich das? mit dem Flag setzen? Stehe gerade irgendwie auf dem Schlauch...
Danke

Im OI, TOpenDialog.Options

OldGrumpy 22. Feb 2009 14:02

Re: WIN XP Ordneroption aus einem Programm heraus ändern?
 
Zitat:

Zitat von toms
Eine Möglichkeit wäre die Dateien readonly zu setzen und den Flag ofHideReadOnly im Dialog zu aktivieren.

Öhm, möchtest Du nicht vorher einmal die OH konsultieren bevor Du Vorschläge machst? Solltest Du... :mrgreen:

Zitat:

Zitat von Delphi Onlinehilfe
ofHideReadOnly: Removes the Open As Read Only check box from the dialog.


jaenicke 22. Feb 2009 16:23

Re: WIN XP Ordneroption aus einem Programm heraus ändern?
 
Es gibt Beispiele zur Manipulation der Dialoge in C++:
http://msdn.microsoft.com/en-us/magazine/cc300464.aspx
Fast ganz unten meine ich, das müsste sich, wenn das so funktioniert auch in Delphi umsetzen lassen.
http://msdn.microsoft.com/de-de/maga...95(en-us).aspx
Ich habe mir das nicht genauer angeschaut, ist aber zur Filterung wohl wenn das klappt die sinnvollste Möglichkeit.

Was ich mich aber frage ist, ob man nicht CDN_INCLUDEITEM benutzen könnte. Das ist ja auch in dem Delphi-Dialog erreichbar. Normalerweise hilft einem das zwar nicht viel, denn:
Zitat:

The dialog box always includes items that have both the SFGAO_FILESYSTEM and SFGAO_FILESYSANCESTOR attributes, regardless of the value returned by CDN_INCLUDEITEM.
Aber ich frage mich, ob man SFGAO_FILESYSTEM vielleicht von diesen Dateien entfernen könnte. Obwohl das unlogisch wäre dem Namen nach, aber wie genau das mit diesem Attribut aussieht weiß ich nicht, also ich weiß gar nicht, wofür es überhaupt dient.

OldGrumpy 23. Feb 2009 12:57

Re: WIN XP Ordneroption aus einem Programm heraus ändern?
 
Der Trick geht eher andersrum... Jedes Mal wenn der OpenDialog sein Listview befüllt alle Elemente enumerieren und die unerwünschten entfernen. Da hat man die Wahl ob man einen ugly Hack implementiert oder halt einen eigenen OpenDialog baut :-/


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