| |
|
|
- Seite 1 - |
|
Thomas Freier | Gibt es eine Möglichkeit, diese Dialoge immer im Vordergrund zu halten? |
|
|
| |
|
|
|
« Dieser Beitrag wurde als Lösung gekennzeichnet. » |
|
| Vlt. hilft Dir das: KompilierenMarkierenSeparierendef GetOpenFileName(1) ! "COMDLG32.DLL","GetOpenFileNameA"
def CommDlgExtendedError(0) ! "COMDLG32.DLL","CommDlgExtendedError"
def GetParent(1) ! "USER32.DLL","GetParent"
cls
Multiloadfile()
end
Proc Multiloadfile
declare title$,fmask$,drive$,fle$,mem#
Dim mem#,8100
title$="Dateiwahl:"
fmask$="Beliebige Datei (*.*)z*.*zz"
Long mem#,0=76,0,%hInstance,Addr(fmask$)
Long mem#,28=mem#+100,8000
Long mem#,44=Addr(drive$),Addr(title$)
Long mem#,52=( 4 | 2 | 32 | 524288 )
Long mem#,68=procaddr(Multiloadfile.hookProc,4)
Getopenfilename(mem#)
if Commdlgextendederror()
Dispose mem#
return 0
endif
fle$=String$(mem#,100)
Dispose mem#
Return fle$
proc Multiloadfile.hookProc
parameters h&,m&,w&,l&
casenot m&=$110 : return m&//wm_initDialog
setWindowPos getParent(h&)=(%maxx2-215),(%maxy2-200) - width(getParent(h&))+6,height(getParent(h&))+%cyCaption+6;-1
return 0
endproc
Endproc
Und mit NProc (absturzsicher): KompilierenMarkierenSeparierendef GetOpenFileName(1) ! "COMDLG32.DLL","GetOpenFileNameA"
def CommDlgExtendedError(0) ! "COMDLG32.DLL","CommDlgExtendedError"
cls
Multiloadfile()
end
Proc Multiloadfile
declare title$,fmask$,drive$,fle$,mem#
Dim mem#,8100
title$="Dateiwahl:"
fmask$="Beliebige Datei (*.*)z*.*zz"
Long mem#,0=76,0,%hInstance,Addr(fmask$)
Long mem#,28=mem#+100,8000
Long mem#,44=Addr(drive$),Addr(title$)
Long mem#,52=( 4 | 2 | 32 | 524288 )
Long mem#,68=procaddr(Multiloadfile.hookProc,4)
Getopenfilename(mem#)
if Commdlgextendederror()
Dispose mem#
return 0
endif
fle$=String$(mem#,100)
Dispose mem#
Return fle$
nproc Multiloadfile.hookProc
parameters h&,m&,w&,l&
casenot m&=wm_initDialog : return m&
setWindowPos(getParent(h&),hwnd_topmost,200,200,0,0,swp_nosize)
return 0
endproc
Endproc
|
|
|
| |
|
|
|
|
| Mit eigenem LoadFile-Dialog sollte das schon gehen, vlt. hilft [...] [...] [...] . |
|
|
| |
|
|
|
Thomas Freier | Bekannte Versionen. Löst aber ncht das Problem.Alle Varianten bleiben nur vorm Hauptfenster und nicht vorm Create("Window",N,S,X1,Y1,X2,Y2) bzw. Create("Dialog",N,S,X1,Y1,X2,Y2) im Vordergrund. |
|
|
| |
|
|
|
| Vlt. hilft Dir das: KompilierenMarkierenSeparierendef GetOpenFileName(1) ! "COMDLG32.DLL","GetOpenFileNameA"
def CommDlgExtendedError(0) ! "COMDLG32.DLL","CommDlgExtendedError"
def GetParent(1) ! "USER32.DLL","GetParent"
cls
Multiloadfile()
end
Proc Multiloadfile
declare title$,fmask$,drive$,fle$,mem#
Dim mem#,8100
title$="Dateiwahl:"
fmask$="Beliebige Datei (*.*)z*.*zz"
Long mem#,0=76,0,%hInstance,Addr(fmask$)
Long mem#,28=mem#+100,8000
Long mem#,44=Addr(drive$),Addr(title$)
Long mem#,52=( 4 | 2 | 32 | 524288 )
Long mem#,68=procaddr(Multiloadfile.hookProc,4)
Getopenfilename(mem#)
if Commdlgextendederror()
Dispose mem#
return 0
endif
fle$=String$(mem#,100)
Dispose mem#
Return fle$
proc Multiloadfile.hookProc
parameters h&,m&,w&,l&
casenot m&=$110 : return m&//wm_initDialog
setWindowPos getParent(h&)=(%maxx2-215),(%maxy2-200) - width(getParent(h&))+6,height(getParent(h&))+%cyCaption+6;-1
return 0
endproc
Endproc
Und mit NProc (absturzsicher): KompilierenMarkierenSeparierendef GetOpenFileName(1) ! "COMDLG32.DLL","GetOpenFileNameA"
def CommDlgExtendedError(0) ! "COMDLG32.DLL","CommDlgExtendedError"
cls
Multiloadfile()
end
Proc Multiloadfile
declare title$,fmask$,drive$,fle$,mem#
Dim mem#,8100
title$="Dateiwahl:"
fmask$="Beliebige Datei (*.*)z*.*zz"
Long mem#,0=76,0,%hInstance,Addr(fmask$)
Long mem#,28=mem#+100,8000
Long mem#,44=Addr(drive$),Addr(title$)
Long mem#,52=( 4 | 2 | 32 | 524288 )
Long mem#,68=procaddr(Multiloadfile.hookProc,4)
Getopenfilename(mem#)
if Commdlgextendederror()
Dispose mem#
return 0
endif
fle$=String$(mem#,100)
Dispose mem#
Return fle$
nproc Multiloadfile.hookProc
parameters h&,m&,w&,l&
casenot m&=wm_initDialog : return m&
setWindowPos(getParent(h&),hwnd_topmost,200,200,0,0,swp_nosize)
return 0
endproc
Endproc
|
|
|
| |
|
|
|
Thomas Freier | |
|
| |
|
|