Seite 1 von 2

Windows 7 OpenFileRequester() Ansicht merken ?

Verfasst: 09.07.2014 11:17
von silbersurfer
Hallo Leute,
habe nach vergeblicher suche im Forum diesen Tread erstellt, es geht um OpenFileRequester() unter Win7
Dort kann man ja die Ansicht ändern z.b auf Symbole,Details,Kacheln u.s.w Soweit so gut.
Was mich Ärgert ist wenn Ich z.b Symbole aus gewählt habe, und dann eine Datei lade. Nach nochmaligen Öffnen des FileRequester
er meine einstellungen vergessen hat :cry:

meine Frage nun, gibt es da eine möglichkeit das OpenFileRequest() meine Einstellungen nicht vergisst,
oder Ich Parameter übergeben kann welche die Ansicht´s einstellungen verändern kann ?

würde mich freuen wenn es da einige tipps von euch gibt

Re: Windows 7 OpenFileRequester() Ansicht merken ?

Verfasst: 09.07.2014 14:09
von andi256

Code: Alles auswählen

Global StandardDatei$
StandardDatei$ = "C:\Windows\"

For i = 1 To 5
 File$ = OpenFileRequester("Eingabe",StandardDatei$,"*.*",0)
 StandardDatei$ = GetPathPart(File$)
 MessageRequester("","Filerequester steht nun im verzeichnis " + StandardDatei$)
Next
DateiName$ = OpenFileRequester(Titel$, StandardDatei$, Pattern$, PatternPosition [, Flags])

Deine Einstellung übergibst du an die "StandardDatei$" die du Dir halt irgendwie merken musst.

falls du dazwischen das Programm verlässt .. musst dir halt dein zuletzt verwendetes Verzeichnis in eine ".ini" Datei schreiben

PS. das mit GetPathPart(..) kannst auch weglassen, hab ich nur zur Verdeutlichung rein gemacht.

mfg
Andi

Re: Windows 7 OpenFileRequester() Ansicht merken ?

Verfasst: 09.07.2014 14:26
von NicTheQuick
Es geht doch hier nicht um den Standardpfad, sondern um die Ansicht, also Liste, Details, Symbole, oder wie die alle heißen.

Re: Windows 7 OpenFileRequester() Ansicht merken ?

Verfasst: 09.07.2014 19:36
von silbersurfer
Es geht doch hier nicht um den Standardpfad, sondern um die Ansicht
Das was NicTheQuick Sagt ist richtig andi256, mit dem Dateipfad ist es ja gut in der hilfe erklärt
mir geht es um die Ansicht der Datein aber danke dir für deine mühe...

Re: Windows 7 OpenFileRequester() Ansicht merken ?

Verfasst: 09.07.2014 20:22
von ts-soft
Zuständig ist dafür die "GetOpenFileName_" API. Ich kann da aber keine voreinstellungen diesbezüglich finden.
GetOpenFileName

Re: Windows 7 OpenFileRequester() Ansicht merken ?

Verfasst: 09.07.2014 21:00
von Sicro
Hier wird beschrieben, wie es per WinAPI funktioniert:
http://msdn.microsoft.com/de-de/library/bb979268.aspx

Für ein PB-Code habe ich gerade zu wenig Zeit.

Re: Windows 7 OpenFileRequester() Ansicht merken ?

Verfasst: 09.07.2014 21:46
von silbersurfer
erstmal Danke ts-soft und Sirco,
Hier wird beschrieben, wie es per WinAPI funktioniert:
also das was Ich dort gelesen habe, ist für mich doch etwas schwerer Tobak Sirco :oops:
Das ist ja doch schwieriger als ich dachte, für ein solch kleines Future

naja dann werde Ich darauf erstmal verzichten, bis mal in der lage bin das richtig zu verstehen

Re: Windows 7 OpenFileRequester() Ansicht merken ?

Verfasst: 10.07.2014 20:51
von Sicro
silbersurfer hat geschrieben:also das was Ich dort gelesen habe, ist für mich doch etwas schwerer Tobak Sirco :oops:
Das ist ja doch schwieriger als ich dachte, für ein solch kleines Future
Mit dem Link wollte ich dir (und ts-soft) nur zeigen, dass dein Vorhaben per WinAPI möglich ist. Beispiel-Codes kann man im englischem Forum finden (nach "ofn" suchen"), aber diese funktionieren anscheinend nicht mehr unter neueren Windows-Versionen richtig. Zudem habe ich erfahren, dass diese Vorgehensweise die Open/Save-FileRequester nur noch im klassischem Stil darstellt (kein XP/Vista/7-Stil): https://stackoverflow.com/questions/473 ... enfilename

Wie wäre es, wenn du einfach ein eigenen OpenFileRequester bastelst? Bei dem ExplorerListGadget kannst du die Ansichteinstellung per SetGadgetAttribute setzen und per GetGadgetAttribute auslesen.

Re: Windows 7 OpenFileRequester() Ansicht merken ?

Verfasst: 11.07.2014 11:45
von Shardik
Ganz so schwierig ist die Sache auch nicht! Ich habe einmal versucht, alle wesentlichen Elemente in einem kurzen funktionsfähigen Beispiel zusammenzufassen. Allerdings wird nicht der OpenFileRequester von PB genutzt, sondern die Windows API-Funktion GetOpenFileName(). Ich habe das Beispiel erfolgreich unter Windows XP SP3 und Windows 7 x86 SP1 getestet:

Code: Alles auswählen

EnableExplicit

#OFN_ENABLESIZING = $800000
#OFN_VIEW_REPORT        = $702C
#OFN_VIEW_LIST          = $702B
#OFN_VIEW_LARGEICON     = $7029
#OFN_VIEW_SMALLICON     = $702A
#OFN_VIEW_THUMBNAIL     = $702D
#OFN_VIEW_THUMBNAIL_2K  = $7031
#OFN_VIEW_TILE          = $702E

Procedure HookCallback(DialogHandle.I, Msg.I, WParam.I, LParam.I)
  Protected DialogWindow.I
  Protected *NMHdr.NMHDR

  If Msg = #WM_NOTIFY
    *NMHdr = LParam

    If *NMHdr\code = #CDN_FOLDERCHANGE
      DialogWindow = FindWindowEx_(GetParent_(DialogHandle), 0, "ShellDll_DefView", 0)
      
      If DialogWindow
        SendMessage_(DialogWindow, #WM_COMMAND, #OFN_VIEW_LARGEICON, 0)
      EndIf
    EndIf
  EndIf
EndProcedure

Define Filename.S{#MAX_PATH}
Define OFN.OPENFILENAME

OFN\lStructSize = SizeOf(OPENFILENAME)
OFN\lpstrFile = @Filename
OFN\nMaxFile = #MAX_PATH 
OFN\Flags = #OFN_EXPLORER | #OFN_ENABLESIZING | #OFN_FILEMUSTEXIST | #OFN_ENABLEHOOK
OFN\lpfnHook = @HookCallback()

If GetOpenFileName_(OFN) = 0
  MessageRequester("Information", "Der Requester wurde abgebrochen!")
Else
  MessageRequester("Information", "Sie haben folgende Datei ausgewählt:" + #CR$ + Filename)
EndIf

Re: Windows 7 OpenFileRequester() Ansicht merken ?

Verfasst: 11.07.2014 11:49
von NeoChris
Wie geil is das den.Wen man #OFN_EXPLORER entfernt dann hat man den ganz alten FileRequester. Voll alt und nostalgisch. :D