Deutsch
Forum

GetOpenFileNameA funktioniert nicht unter win98

 

Pedro
Santos
Hallo Profaner

Diesen code ich glaube von Pascal Niemeier funktioniert prima unter XP leider nicht unter
Win98, kann jemand das bestätigen. Habe GetOpenFileNameA in der Api Win32 nachgeschaut
aber blicke überhaupt ich nicht durch

Danke
Gruss
Pedro
window 10,10-700,500
 $H Messages.ph
 $H Windows.ph

proc OpenFileHook-------------------------------OpenFileHook----------------------------

    parameters dlg&,msg&,wparam&,lparam&
    case Status%:return 1-----Ansicht muss nur einmal angepasst werden
    casenot msg&=~WM_NOTIFY:return 1

    if long(lparam&,8)=-603---Bei Init existieren DefView und LV noch nicht!

        Status%=1
        DefView&=~FindWindowEx(~GetParent(dlg&),0,SHELLDLL_DefView,)
        sendmessage(DefView&,~WM_COMMAND,$702D,0)--Undokumentierte Message

    endif

    return 1
    endproc---------------------------------------------------------------------------------

    proc LoadPicDialog------------------------------LoadPicDialog---------------------------

        parameters Pfad$,Titel$,Name$
        declare ofn#,Result$,Result&
        declare DefView&,Status%------Variablen für Hook
        Name$=Name$+z*.bmp;*.jpe;*.jpeg;*.jpg;*.gifzz--Filter (bei Bedarf anpassen)
        dim ofn#,88+256---------------Struktur (Win2000/NT/XP) + Puffer
        clear ofn#
        long ofn#,0=88----------------Grösse Struktur für GetOpenFileName (76 für Win9x)
        long ofn#,4=%hwnd-------------übergeordnetes Fenster
        long ofn#,12=addr(Name$)------Filter/Typ
        long ofn#,28=ofn#+88----------Beginn Puffer
        long ofn#,32=255--------------Puffergrösse
        long ofn#,44=addr(Pfad$)------Anfangspfad
        long ofn#,48=addr(Titel$)-----Titel
        long ofn#,52=$880024----------Flags
        long ofn#,68=procaddr(OpenFileHook,4)
        Result&=external(COMDLG32,GetOpenFileNameA,ofn#)
        Result$=string$(ofn#,88)
        casenot Result&:Result$=
        procaddr(OpenFileHook,-4)
        dispose ofn#
        return Result$
        endproc---------------------------------------------------------------------------------
        print LoadPicDialog(,Wähle Graphic,BMP)
        waitkey
 
Windows XP Home
Xprofan 10
15.07.2006  
 




Michael
Dell
Hi Pedro,

wie schon in Uwe`s Beispiel angedeutet:
Long Ofn#,0=Gl_Puffer&----------------Grösse Struktur für GetOpenFileName (76 für Win9x)
Die Structurgröße muß angepasst werden z.B.:
Window 10,10-700,500
 $H Messages.ph
 $H Windows.ph
**** Structurgröße an System anpassen ****
Declare Gl_Puffer&
Gl_Puffer& = 88
Case (Val(Left$($WinVer,1)) = 4): Gl_Puffer& = 76
******************************************

Proc Openfilehook-------------------------------OpenFileHook----------------------------

    Parameters Dlg&,Msg&,Wparam&,Lparam&
    Case Status%:Return 1-----Ansicht muss nur einmal angepasst werden
    Casenot Msg&=~Wm_notify:Return 1

    If Long(Lparam&,8)=-603---Bei Init existieren DefView und LV noch nicht!

        Status%=1
        Defview&=~Findwindowex(~Getparent(Dlg&),0,SHELLDLL_DefView,)
        Sendmessage(Defview&,~Wm_command,$702D,0)--Undokumentierte Message

    Endif

    Return 1
    Endproc---------------------------------------------------------------------------------

    Proc Loadpicdialog------------------------------LoadPicDialog---------------------------

        Parameters Pfad$,Titel$,Name$
        Declare Ofn#,Result$,Result&
        Declare Defview&,Status%------Variablen für Hook
        Name$=Name$+z*.bmp;*.jpe;*.jpeg;*.jpg;*.gifzz--Filter (bei Bedarf anpassen)
        Dim Ofn#,Gl_Puffer&+256---------------Struktur (Win2000/NT/XP) + Puffer
        Clear Ofn#
        Long Ofn#,0=Gl_Puffer&----------------Grösse Struktur für GetOpenFileName (76 für Win9x)
        Long Ofn#,4=%Hwnd-------------übergeordnetes Fenster
        Long Ofn#,12=Addr(Name$)------Filter/Typ
        Long Ofn#,28=Ofn#+Gl_Puffer&----------Beginn Puffer
        Long Ofn#,32=255--------------Puffergrösse
        Long Ofn#,44=Addr(Pfad$)------Anfangspfad
        Long Ofn#,48=Addr(Titel$)-----Titel
        Long Ofn#,52=$880024----------Flags
        Long Ofn#,68=Procaddr(OpenFileHook,4)
        Result&=External(COMDLG32,GetOpenFileNameA,Ofn#)
        Result$=String$(Ofn#,Gl_Puffer&)
        Casenot Result&:Result$=
        procaddr(OpenFileHook,-4)
        Dispose Ofn#
        Return Result$
        Endproc---------------------------------------------------------------------------------
        Print Loadpicdialog(,Wähle Graphic,BMP)
        Waitkey
Ps.: Oder Du nimmst nur 76 das geht auf beiden Systemen. Gibt allerdings keine Garantie das es immer geht!
 
Salu Michael...

Hab zwar krumme Fieß awer dofir e' ecklich Gsicht! 
15.07.2006  
 




Pedro
Santos
Hallo M.Dell

Danke, habe es schon gemacht, überall die 88 durch 76 ersetzt, der Dialog erscheint aber
nicht im Miniaturen modus, allerdings nur auf einen alten notebook laufen gelassen
Werde es am Montag auf einen anderen PC testen

Gruss

Pedro
 
Windows XP Home
Xprofan 10
15.07.2006  
 




Uwe
''Pascal''
Niemeier
Hallo Pedro!

Soweit ich sehe, gibt es die Miniatur-Ansicht unter Win98 noch garnicht...

Hier die Möglichkeiten für den Hook:

Win XP:
sendmessage(DefView&,~WM_COMMAND,$702A,0)--Symbole
sendmessage(DefView&,~WM_COMMAND,$702B,0)--Liste
sendmessage(DefView&,~WM_COMMAND,$702C,0)--Details
sendmessage(DefView&,~WM_COMMAND,$702D,0)--Miniaturansicht
sendmessage(DefView&,~WM_COMMAND,$702E,0)--Kacheln

Win 98:
sendmessage(DefView&,~WM_COMMAND,$7029,0)--grosse Symbole
sendmessage(DefView&,~WM_COMMAND,$702A,0)--kleine Smbole
sendmessage(DefView&,~WM_COMMAND,$702B,0)--Liste
sendmessage(DefView&,~WM_COMMAND,$702C,0)--Details

Da kann man wohl nichts machen

HTH
Pascal
 
16.07.2006  
 




Pedro
Santos
Hallo Pascal

Vielen Dank für Deine Antwort, in der Tat existiert die Miniaturen Ansicht bei Win98 nicht, leider..

Und die ganzen Sendmessages wo kann man die suchen?

Darum war schon in einen anderen Tread mein Wunsch die Sendmessasges mit Beschreibung in einen Speziellen Rubrik
zu sammeln, den wie Du schon mal erwähnt hast kann man damit sehr viel errreichen

Danke

Gruss

Pedro
 
Windows XP Home
Xprofan 10
17.07.2006  
 




Jac
de
Lad
Die Messages kannst du unter [web]https://msdn.microsoft.com[/web] nachschauen.
Oder du lädst dir das MSDN runter, dann hast du es auch offline.
Oder du nimmst das Platform SDK, das ist kleiner und erfüllt den Zweck auch.
Oder du googlest; viele andere Seiten haben das auch alles aufgeführt, manche sogar auf deutsch.

Jac
 
Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)
Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
18.05.2008  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

2.004 Betrachtungen

Unbenanntvor 0 min.
E.T.06.11.2014
gerd27.08.2013

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie