Windows 7 OpenFileRequester() Ansicht merken ?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
silbersurfer
Beiträge: 175
Registriert: 06.07.2014 12:21

Windows 7 OpenFileRequester() Ansicht merken ?

Beitrag 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
Intel Quad Core 3,2 Ghz - GTX 1060 - BlitzBasic Plus 1.48 , PureBasic 5.70 LTS / Aktuelles Projekt PureCommander
andi256
Beiträge: 100
Registriert: 06.11.2004 11:23
Computerausstattung: PB 5.30 (x64) Win7
Wohnort: Österreich

Re: Windows 7 OpenFileRequester() Ansicht merken ?

Beitrag 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
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Windows 7 OpenFileRequester() Ansicht merken ?

Beitrag von NicTheQuick »

Es geht doch hier nicht um den Standardpfad, sondern um die Ansicht, also Liste, Details, Symbole, oder wie die alle heißen.
Benutzeravatar
silbersurfer
Beiträge: 175
Registriert: 06.07.2014 12:21

Re: Windows 7 OpenFileRequester() Ansicht merken ?

Beitrag 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...
Intel Quad Core 3,2 Ghz - GTX 1060 - BlitzBasic Plus 1.48 , PureBasic 5.70 LTS / Aktuelles Projekt PureCommander
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Windows 7 OpenFileRequester() Ansicht merken ?

Beitrag von ts-soft »

Zuständig ist dafür die "GetOpenFileName_" API. Ich kann da aber keine voreinstellungen diesbezüglich finden.
GetOpenFileName
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Sicro
Beiträge: 964
Registriert: 11.08.2005 19:08
Kontaktdaten:

Re: Windows 7 OpenFileRequester() Ansicht merken ?

Beitrag 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.
Bild
Warum OpenSource eine Lizenz haben sollte :: PB-CodeArchiv-Rebirth :: Pleasant-Dark (Syntax-Farbschema) :: RegEx-Engine (kompiliert RegExes zu NFA/DFA)
Manjaro Xfce x64 (Hauptsystem) :: Windows 10 Home (VirtualBox) :: Neueste PureBasic-Version
Benutzeravatar
silbersurfer
Beiträge: 175
Registriert: 06.07.2014 12:21

Re: Windows 7 OpenFileRequester() Ansicht merken ?

Beitrag 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
Intel Quad Core 3,2 Ghz - GTX 1060 - BlitzBasic Plus 1.48 , PureBasic 5.70 LTS / Aktuelles Projekt PureCommander
Benutzeravatar
Sicro
Beiträge: 964
Registriert: 11.08.2005 19:08
Kontaktdaten:

Re: Windows 7 OpenFileRequester() Ansicht merken ?

Beitrag 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.
Bild
Warum OpenSource eine Lizenz haben sollte :: PB-CodeArchiv-Rebirth :: Pleasant-Dark (Syntax-Farbschema) :: RegEx-Engine (kompiliert RegExes zu NFA/DFA)
Manjaro Xfce x64 (Hauptsystem) :: Windows 10 Home (VirtualBox) :: Neueste PureBasic-Version
Benutzeravatar
Shardik
Beiträge: 746
Registriert: 25.01.2005 12:19

Re: Windows 7 OpenFileRequester() Ansicht merken ?

Beitrag 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
NeoChris
Beiträge: 205
Registriert: 21.11.2013 21:17
Wohnort: Schweiz
Kontaktdaten:

Re: Windows 7 OpenFileRequester() Ansicht merken ?

Beitrag von NeoChris »

Wie geil is das den.Wen man #OFN_EXPLORER entfernt dann hat man den ganz alten FileRequester. Voll alt und nostalgisch. :D
Antworten