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 Browseforfolder und Delphi 2007 (https://www.delphipraxis.net/132350-browseforfolder-und-delphi-2007-a.html)

gargano 10. Apr 2009 17:32


Browseforfolder und Delphi 2007
 
Hi,

ich kämpfe gerade mit SHBrowseForFolder und Delphi 20007 herum.
Wenn ich BIF_NEWDIALOGSTYLE setze und das Programm aufrufe, danach SHBrowseForFolder aufrufe
ist bis hierhin alles wunderbar : Dialog wird angezeigt. Dann schließe ich den Dialog und schließe
das Programm. Doch jetzt kommt das Problem : Im Task Manager bleibt noch der Process der Applikation vorhanden.

In der IDE wird das Pogram nicht beendet.

Betriebssystem ist XP SP3.

Hat jemand schon mal das Problem gehabt ?

Viele Grüße und schöne Ostern

Gargano

Luckie 10. Apr 2009 17:38

Re: Browseforfolder und Delphi 2007
 
Ist das auch der Fall, wenn du den Dialog nicht öffnest? Oder leigt es an dem Code, der ausgeführt wird, nach dem der Dialog mit OK geschlossen wurde? Passiert das auch, wenn der Dialog abgebrochen wurde? Weil, dass es am Dialog liegt, kann ich mir nicht vorstellen.

gargano 10. Apr 2009 17:57

Re: Browseforfolder und Delphi 2007
 
Hallo Luckie,

Das passiert immer dann wenn SHBrowseForFolder mit BIF_NEWDIALOGSTYLE aufgerufen wird, egal ob ich abbreche oder OK drücke.

Passiert auch bei Delphi 6.

Das Lustige ist, unter Vista wird er alte Style angezeigt, aber das nur am Rande.

Gruß
Werner

Luckie 10. Apr 2009 18:24

Re: Browseforfolder und Delphi 2007
 
Häng mal ein Demoprogramm mit Quellcode an. Ich will mal testen, ob das auch auf meinem System passiert.

gargano 10. Apr 2009 18:43

Re: Browseforfolder und Delphi 2007
 
Liste der Anhänge anzeigen (Anzahl: 1)
OK, Zip hängt dran.

Jetzt habe ich das ganze nochmal in der VMWare getestet, dort ist XP mit SP2 und dort wird der alte DialogStyle angezeigt, mit dem Ergebnis, das es geht.

Also nur bei dem neuen Style tritt der Effekt auf.

Gruß
Gargano

gargano 10. Apr 2009 22:45

Re: Browseforfolder und Delphi 2007
 
So, jetzt hab ichs:


Wenn pidlRoot = nil ist, dann geht das ganze nicht.

Mit
Delphi-Quellcode:
 
if (not SUCCEEDED(SHGetSpecialFolderLocation(GetActiveWindow, CSIDL_DRIVES,
    pidlPrograms))) then exit;
und
Delphi-Quellcode:
pidlRoot:=pidlPrograms;
Funktioniert es.

Gruß und schöne Ostern

Gargano

Luckie 10. Apr 2009 23:29

Re: Browseforfolder und Delphi 2007
 
Da hat MS geschlampt. Wenn pidlRoot nil ist, müsste die Funktion einen default Wt nehmen. Zumindest hätte ich es so gemacht.

gargano 10. Apr 2009 23:38

Re: Browseforfolder und Delphi 2007
 
War noch nicht der Weisheit letzter Schluß, weil damit die Folder eingeschränkt werden.

Nach einigen Suchen, meine ich daß ich die Lösung hätte :

Schuld ist der CoInitialize(nil) der als internen Parameter COINIT_APARTMENTTHREADED hat.

verwendet man den
Delphi-Quellcode:
CoInitializeEx(nil,COINIT_MULTITHREADED);
dann gehts es.

Gruß
Gargano

[edit=mkinzler]Delphi-Tag eingefügt Mfg, mkinzler[/edit]


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