| |
|
|
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
|
|
|
| |
|
|
|
Michael Dell | Hi Pedro,
wie schon in Uwe`s Beispiel angedeutet: 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 |
|
|
| |
|
|
|
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 |
|
|
| |
|
|
|
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 |
|
|
| |
|
|
|
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 ▲ |
|
|
|