Einzelnen Beitrag anzeigen

Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.027 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#12

Re: Windows Opendialog in Details Ansicht starten

  Alt 1. Sep 2004, 10:22
Zitat von No Voices:
@ Stevie

Super klasse, schön dank.

Endlich mal was richtig gutes. mich würde nur noch interesieren wie das so funktioniert. Schön währe auch wenn er sich den zuletzt geöfneten eintrag merkt. Wenn ich eine lange liste habe und das fenster sich nach jedem öffnen schliest muß ich immer wieder recht weit scrollen und suchen. Kann man das auch noch mit rein nehmen? ach so die Fenstergröße merkt er sich scheinbar auch nicht.

Selbst mit diesen "anregungen" finde ich es toll das Du dich da so schnell drum gekümmert hast. DANKE!
Wie's funktioniert? Verrat ich nich!!!
Ist eigentlich ganz einfach (wenn man weiß, wie geht und ne Hilfs-Lib dafür hat..):
Ist dir das Prinzip der Dll-Injektion ein Begriff? (Artikel im Entwickler) Grob gesagt, wird zwischen den Prozeduraufruf einer Dll-Funktion und der Dll eine zweite Dll gehangen, die dann angesprochen wird. Das heißt, wenn die Funktionen GetFileOpenName oder GetFileSaveName aufgerufen werden, startet die neue Dll diese Funktionen. Dort werden einige Modifikationen vorgenommen, bevor die eigentliche Funktion aufgerufen wird: als Parameter für diese beiden Funktionen wird ein Record mit Informationen für den Dialog übergeben. Dort kann man eine Hook-Funktion einbauen, die bei Botschaften aufgerufen wird. Dies ist auch eine Funktion aus der Dll (ähnlich der WndProc). Wenn dort eine bestimmte Botschaft ankommt, dann sucht man sich das Dateilisten-Objekt und sagt ihm, es soll in der Detailansicht angezeigt werden. Mit dem Dienst bewirke ich, dass die Dll die ganze Zeit geladen ist.
Den zuletzt gewählten Eintrag zu merken wäre nicht so einfach, weil das dann global geschehen müsste, dass heißt aber wiederum, dass in jedem Dialog - in welcher Anwendung auch immer - dieser Eintrag ausgewählt sein würde, was ja nicht unbedingt das Beste ist. Einige Anwedungen bieten dies sicherlich an, aber dann liegt es bei der Anwendung, das zu tun. Bei der Fenstergröße muss ich dir wiedersprechen, die merkt er sich (ich hab's mit Notepad und einer anderen Anwendung ausprobiert, allerdings immer innerhalb derselben Anwendung!!)
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat