J'ai bien vu que pour le controle "Commondialog", la propriété Flag
permet de personnaliser les options de ce contrôle. Malheureusement
rien pour masquer les boutons "Afficher bureau" et "Créer un nouveau
dossier".
Est-ce qd même possible de les masquer???
J'ai bien vu que pour le controle "Commondialog", la propriété Flag
permet de personnaliser les options de ce contrôle. Malheureusement
rien pour masquer les boutons "Afficher bureau" et "Créer un nouveau
dossier".
Est-ce qd même possible de les masquer???
J'ai bien vu que pour le controle "Commondialog", la propriété Flag
permet de personnaliser les options de ce contrôle. Malheureusement
rien pour masquer les boutons "Afficher bureau" et "Créer un nouveau
dossier".
Est-ce qd même possible de les masquer???
Hello,
La common dialog est entièrement "hookable" pour pas cher comme
décrit ici:
Au lieu de repositionner, il faudrait intercepter le message de
création de la toolbar pour ensuite la sous classer et empêcher
l'ajout (si c'est faisable...) ou plus simplement attendre la fin de
la création de la boite de dialogue pour supprimer les bouttons en
envoyant des messages TB_HIDEBUTTON (il faudrait lors de la création
de la toolbar avoir récupéré son hwnd)
Pour cette seconde méthode, les messages à intercepter seraient (non
vérifié):
WM_CREATE (création du contrôle)
CDN_INITDONE (Fin de l'initialisation de la boite de dialogue, quand
le boutton est créé)
En fonction du temps qu'il me faudra pour étudier math, je ferai
peut-être un exemple ;-)
"TouTenN" <gelapplication[Nospam]@tiscali.fr> a écrit dans le message
de news:c6iscc$pf3$J'ai bien vu que pour le controle "Commondialog", la propriété Flag
permet de personnaliser les options de ce contrôle. Malheureusement
rien pour masquer les boutons "Afficher bureau" et "Créer un nouveau
dossier".
Est-ce qd même possible de les masquer???
Hello,
La common dialog est entièrement "hookable" pour pas cher comme
décrit ici:
Au lieu de repositionner, il faudrait intercepter le message de
création de la toolbar pour ensuite la sous classer et empêcher
l'ajout (si c'est faisable...) ou plus simplement attendre la fin de
la création de la boite de dialogue pour supprimer les bouttons en
envoyant des messages TB_HIDEBUTTON (il faudrait lors de la création
de la toolbar avoir récupéré son hwnd)
Pour cette seconde méthode, les messages à intercepter seraient (non
vérifié):
WM_CREATE (création du contrôle)
CDN_INITDONE (Fin de l'initialisation de la boite de dialogue, quand
le boutton est créé)
En fonction du temps qu'il me faudra pour étudier math, je ferai
peut-être un exemple ;-)
"TouTenN" <gelapplication[Nospam]@tiscali.fr> a écrit dans le message
de news:c6iscc$pf3$1@news-reader5.wanadoo.fr
J'ai bien vu que pour le controle "Commondialog", la propriété Flag
permet de personnaliser les options de ce contrôle. Malheureusement
rien pour masquer les boutons "Afficher bureau" et "Créer un nouveau
dossier".
Est-ce qd même possible de les masquer???
Hello,
La common dialog est entièrement "hookable" pour pas cher comme
décrit ici:
Au lieu de repositionner, il faudrait intercepter le message de
création de la toolbar pour ensuite la sous classer et empêcher
l'ajout (si c'est faisable...) ou plus simplement attendre la fin de
la création de la boite de dialogue pour supprimer les bouttons en
envoyant des messages TB_HIDEBUTTON (il faudrait lors de la création
de la toolbar avoir récupéré son hwnd)
Pour cette seconde méthode, les messages à intercepter seraient (non
vérifié):
WM_CREATE (création du contrôle)
CDN_INITDONE (Fin de l'initialisation de la boite de dialogue, quand
le boutton est créé)
En fonction du temps qu'il me faudra pour étudier math, je ferai
peut-être un exemple ;-)
"TouTenN" <gelapplication[Nospam]@tiscali.fr> a écrit dans le message
de news:c6iscc$pf3$J'ai bien vu que pour le controle "Commondialog", la propriété Flag
permet de personnaliser les options de ce contrôle. Malheureusement
rien pour masquer les boutons "Afficher bureau" et "Créer un nouveau
dossier".
Est-ce qd même possible de les masquer???
> voici l'exemple promis:
'Dans une form, Form1:
Option Explicit
> voici l'exemple promis:
'Dans une form, Form1:
Option Explicit
> voici l'exemple promis:
'Dans une form, Form1:
Option Explicit
> > voici l'exemple promis:
> 'Dans une form, Form1:
> Option Explicit
SendMessage hWndToolbar, TB_HIDEBUTTON, 40962, ByVal 1
> > voici l'exemple promis:
> 'Dans une form, Form1:
> Option Explicit
SendMessage hWndToolbar, TB_HIDEBUTTON, 40962, ByVal 1
> > voici l'exemple promis:
> 'Dans une form, Form1:
> Option Explicit
SendMessage hWndToolbar, TB_HIDEBUTTON, 40962, ByVal 1
Hello,
voici l'exemple promis:
'Dans une form, Form1:
Option Explicit
' Déclaration de l'API
Private Declare Function GetOpenFileName _
Lib "comdlg32.dll" _
Alias "GetOpenFileNameA" _
( _
pOpenfilename As OPENFILENAME _
) _
As Long
' GetOpenFileName flags
Public Enum OFN_Constants
OFN_ALLOWMULTISELECT = &H200
OFN_CREATEPROMPT = &H2000
OFN_DONTADDTORECENT = &H2000000
OFN_ENABLEHOOK = &H20
OFN_ENABLEINCLUDENOTIFY = &H400000
OFN_ENABLESIZING = &H800000
OFN_ENABLETEMPLATE = &H40
OFN_ENABLETEMPLATEHANDLE = &H80
OFN_EX_NOPLACESBAR = &H1
OFN_EXPLORER = &H80000
OFN_EXTENSIONDIFFERENT = &H400
OFN_FILEMUSTEXIST = &H1000
OFN_FORCESHOWHIDDEN = &H10000000
OFN_HIDEREADONLY = &H4
OFN_LONGNAMES = &H200000
OFN_NOCHANGEDIR = &H8
OFN_NODEREFERENCELINKS = &H100000
OFN_NOLONGNAMES = &H40000
OFN_NONETWORKBUTTON = &H20000
OFN_NOREADONLYRETURN = &H8000
OFN_NOTESTFILECREATE = &H10000
OFN_NOVALIDATE = &H100
OFN_OVERWRITEPROMPT = &H2
OFN_PATHMUSTEXIST = &H800
OFN_READONLY = &H1
OFN_SHAREAWARE = &H4000
OFN_SHAREFALLTHROUGH = 2
OFN_SHARENOWARN = 1
OFN_SHAREWARN = 0
OFN_SHOWHELP = &H10
OFN_USEMONIKERS = &H1000000
End Enum
Public Function OpenFileDialog(Optional DialogTitle As String, _
Optional sFilter As String, _
Optional Flags As OFN_Constants, _
Optional InitialDir As String, _
Optional hInstance As Long _
) _
As String
Dim OFName As OPENFILENAME
With OFName
.lStructSize = Len(OFName)
.hInstance = hInstance
.lpstrFilter = sFilter
.lpstrFile = String$(260, vbNullChar)
.nMaxFile = 255
.lpstrFileTitle = String$(260, vbNullChar)
.nMaxFileTitle = 255
.lpstrInitialDir = InitialDir
.lpstrTitle = DialogTitle
.Flags = Flags
.lpfnHook = GetProcAddress(AddressOf OFNHookProc)
End With
If GetOpenFileName(OFName) Then
OpenFileDialog = Trim$(OFName.lpstrFile)
End If
End Function
Private Sub Form_Load()
OpenFileDialog "Choississez un fichier...", "Tous les fichiers (*.*)"
_
vbNullChar & "*.*" & vbNullChar & vbNullChar, _
OFN_EXPLORER Or OFN_ENABLEHOOK, _
"", App.hInstance
End Sub
Private Function GetProcAddress(ProcAddress As Long) As Long
GetProcAddress = ProcAddress
End Function
'Dans un module standard, module1:
Option Explicit
Private Const WM_NOTIFY = &H4E
Private Const CDN_FIRST = (-601&)
Private Const CDN_INITDONE = (CDN_FIRST - &H0)
Private Const WM_USER = &H400
Private Const TB_DELETEBUTTON = (WM_USER + 22)
Private Const TB_HIDEBUTTON = (WM_USER + 4)
Private Const TOOLBARCLASSNAME = "ToolbarWindow32"
Public Type OPENFILENAME
lStructSize As Long
hwndOwner As Long
hInstance As Long
lpstrFilter As String
lpstrCustomFilter As String
nMaxCustFilter As Long
nFilterIndex As Long
lpstrFile As String
nMaxFile As Long
lpstrFileTitle As String
nMaxFileTitle As Long
lpstrInitialDir As String
lpstrTitle As String
Flags As Long
nFileOffset As Integer
nFileExtension As Integer
lpstrDefExt As String
lCustData As Long
lpfnHook As Long
lpTemplateName As String
'pvReserved As Long 'pour afficher la
'dwReserved As Long ' places bar sous 2000/XP
'FlagsEx As Long
End Type
Private Type NMHDR
hwndFrom As Long
idFrom As Long
code As Long
End Type
Private Type OFNOTIFY
hdr As NMHDR
lpOFN As Long
pszFile As Long
End Type
Private Declare Sub CopyMemory _
Lib "kernel32" _
Alias "RtlMoveMemory" _
( _
Destination As Any, _
Source As Any, _
ByVal Length As Long _
)
Private Declare Function FindWindowEx _
Lib "user32" _
Alias "FindWindowExA" _
( _
ByVal hWnd1 As Long, _
ByVal hWnd2 As Long, _
ByVal lpsz1 As String, _
ByVal lpsz2 As String _
) _
As Long
Private Declare Function GetParent _
Lib "user32" _
( _
ByVal hwnd As Long _
) _
As Long
Private Declare Function SendMessage _
Lib "user32" _
Alias "SendMessageA" _
( _
ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
lParam As Any _
) _
As Long
Function OFNHookProc(ByVal hdlg As Long, _
ByVal uiMsg As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) As Long
Dim udtNotifyStruct As NMHDR
Dim hWndParent As Long
Dim hWndToolbar As Long
'hdlg
'[in] Handle to the child dialog box of the Open or Save As
'dialog box. Use the GetParent function to get the handle
'to the Open or Save As dialog box.
hWndParent = GetParent(hdlg)
Select Case uiMsg
Case WM_NOTIFY
CopyMemory udtNotifyStruct, ByVal lParam,
Select Case udtNotifyStruct.code
Case CDN_INITDONE
hWndToolbar = FindWindowEx(hWndParent, 0,
TOOLBARCLASSNAME, vbNullString)
If hWndToolbar Then 'toolbar trouvée
'On supprime le boutton d'index 2
'SendMessage hWndToolbar, TB_DELETEBUTTON, 2,
'ou masquer par command id qui peut se révéler
précis:
SendMessage hWndToolbar, TB_HIDEBUTTON, 40962,
1&
End If
End Select
End Select
OFNHookProc = 0
End Function
--
François Picalausa (MVP VB)
http://faq.vb.free.fr --- http://msdn.microsoft.com
http://apisvb.europe.webmatrixhosting.net
"François Picalausa" a écrit dans le message de
news:
> Hello,
>
> La common dialog est entièrement "hookable" pour pas cher comme
> décrit ici:
>
>
> Au lieu de repositionner, il faudrait intercepter le message de
> création de la toolbar pour ensuite la sous classer et empêcher
> l'ajout (si c'est faisable...) ou plus simplement attendre la fin de
> la création de la boite de dialogue pour supprimer les bouttons en
> envoyant des messages TB_HIDEBUTTON (il faudrait lors de la création
> de la toolbar avoir récupéré son hwnd)
>
> Pour cette seconde méthode, les messages à intercepter seraient (non
> vérifié):
> WM_CREATE (création du contrôle)
> CDN_INITDONE (Fin de l'initialisation de la boite de dialogue, quand
> le boutton est créé)
>
> En fonction du temps qu'il me faudra pour étudier math, je ferai
> peut-être un exemple ;-)
>
>
> "TouTenN" <gelapplication[Nospam]@tiscali.fr> a écrit dans le message
> de news:c6iscc$pf3$
>> J'ai bien vu que pour le controle "Commondialog", la propriété Flag
>> permet de personnaliser les options de ce contrôle. Malheureusement
>> rien pour masquer les boutons "Afficher bureau" et "Créer un nouveau
>> dossier".
>>
>> Est-ce qd même possible de les masquer???
Hello,
voici l'exemple promis:
'Dans une form, Form1:
Option Explicit
' Déclaration de l'API
Private Declare Function GetOpenFileName _
Lib "comdlg32.dll" _
Alias "GetOpenFileNameA" _
( _
pOpenfilename As OPENFILENAME _
) _
As Long
' GetOpenFileName flags
Public Enum OFN_Constants
OFN_ALLOWMULTISELECT = &H200
OFN_CREATEPROMPT = &H2000
OFN_DONTADDTORECENT = &H2000000
OFN_ENABLEHOOK = &H20
OFN_ENABLEINCLUDENOTIFY = &H400000
OFN_ENABLESIZING = &H800000
OFN_ENABLETEMPLATE = &H40
OFN_ENABLETEMPLATEHANDLE = &H80
OFN_EX_NOPLACESBAR = &H1
OFN_EXPLORER = &H80000
OFN_EXTENSIONDIFFERENT = &H400
OFN_FILEMUSTEXIST = &H1000
OFN_FORCESHOWHIDDEN = &H10000000
OFN_HIDEREADONLY = &H4
OFN_LONGNAMES = &H200000
OFN_NOCHANGEDIR = &H8
OFN_NODEREFERENCELINKS = &H100000
OFN_NOLONGNAMES = &H40000
OFN_NONETWORKBUTTON = &H20000
OFN_NOREADONLYRETURN = &H8000
OFN_NOTESTFILECREATE = &H10000
OFN_NOVALIDATE = &H100
OFN_OVERWRITEPROMPT = &H2
OFN_PATHMUSTEXIST = &H800
OFN_READONLY = &H1
OFN_SHAREAWARE = &H4000
OFN_SHAREFALLTHROUGH = 2
OFN_SHARENOWARN = 1
OFN_SHAREWARN = 0
OFN_SHOWHELP = &H10
OFN_USEMONIKERS = &H1000000
End Enum
Public Function OpenFileDialog(Optional DialogTitle As String, _
Optional sFilter As String, _
Optional Flags As OFN_Constants, _
Optional InitialDir As String, _
Optional hInstance As Long _
) _
As String
Dim OFName As OPENFILENAME
With OFName
.lStructSize = Len(OFName)
.hInstance = hInstance
.lpstrFilter = sFilter
.lpstrFile = String$(260, vbNullChar)
.nMaxFile = 255
.lpstrFileTitle = String$(260, vbNullChar)
.nMaxFileTitle = 255
.lpstrInitialDir = InitialDir
.lpstrTitle = DialogTitle
.Flags = Flags
.lpfnHook = GetProcAddress(AddressOf OFNHookProc)
End With
If GetOpenFileName(OFName) Then
OpenFileDialog = Trim$(OFName.lpstrFile)
End If
End Function
Private Sub Form_Load()
OpenFileDialog "Choississez un fichier...", "Tous les fichiers (*.*)"
_
vbNullChar & "*.*" & vbNullChar & vbNullChar, _
OFN_EXPLORER Or OFN_ENABLEHOOK, _
"", App.hInstance
End Sub
Private Function GetProcAddress(ProcAddress As Long) As Long
GetProcAddress = ProcAddress
End Function
'Dans un module standard, module1:
Option Explicit
Private Const WM_NOTIFY = &H4E
Private Const CDN_FIRST = (-601&)
Private Const CDN_INITDONE = (CDN_FIRST - &H0)
Private Const WM_USER = &H400
Private Const TB_DELETEBUTTON = (WM_USER + 22)
Private Const TB_HIDEBUTTON = (WM_USER + 4)
Private Const TOOLBARCLASSNAME = "ToolbarWindow32"
Public Type OPENFILENAME
lStructSize As Long
hwndOwner As Long
hInstance As Long
lpstrFilter As String
lpstrCustomFilter As String
nMaxCustFilter As Long
nFilterIndex As Long
lpstrFile As String
nMaxFile As Long
lpstrFileTitle As String
nMaxFileTitle As Long
lpstrInitialDir As String
lpstrTitle As String
Flags As Long
nFileOffset As Integer
nFileExtension As Integer
lpstrDefExt As String
lCustData As Long
lpfnHook As Long
lpTemplateName As String
'pvReserved As Long 'pour afficher la
'dwReserved As Long ' places bar sous 2000/XP
'FlagsEx As Long
End Type
Private Type NMHDR
hwndFrom As Long
idFrom As Long
code As Long
End Type
Private Type OFNOTIFY
hdr As NMHDR
lpOFN As Long
pszFile As Long
End Type
Private Declare Sub CopyMemory _
Lib "kernel32" _
Alias "RtlMoveMemory" _
( _
Destination As Any, _
Source As Any, _
ByVal Length As Long _
)
Private Declare Function FindWindowEx _
Lib "user32" _
Alias "FindWindowExA" _
( _
ByVal hWnd1 As Long, _
ByVal hWnd2 As Long, _
ByVal lpsz1 As String, _
ByVal lpsz2 As String _
) _
As Long
Private Declare Function GetParent _
Lib "user32" _
( _
ByVal hwnd As Long _
) _
As Long
Private Declare Function SendMessage _
Lib "user32" _
Alias "SendMessageA" _
( _
ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
lParam As Any _
) _
As Long
Function OFNHookProc(ByVal hdlg As Long, _
ByVal uiMsg As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) As Long
Dim udtNotifyStruct As NMHDR
Dim hWndParent As Long
Dim hWndToolbar As Long
'hdlg
'[in] Handle to the child dialog box of the Open or Save As
'dialog box. Use the GetParent function to get the handle
'to the Open or Save As dialog box.
hWndParent = GetParent(hdlg)
Select Case uiMsg
Case WM_NOTIFY
CopyMemory udtNotifyStruct, ByVal lParam,
Select Case udtNotifyStruct.code
Case CDN_INITDONE
hWndToolbar = FindWindowEx(hWndParent, 0,
TOOLBARCLASSNAME, vbNullString)
If hWndToolbar Then 'toolbar trouvée
'On supprime le boutton d'index 2
'SendMessage hWndToolbar, TB_DELETEBUTTON, 2,
'ou masquer par command id qui peut se révéler
précis:
SendMessage hWndToolbar, TB_HIDEBUTTON, 40962,
1&
End If
End Select
End Select
OFNHookProc = 0
End Function
--
François Picalausa (MVP VB)
http://faq.vb.free.fr --- http://msdn.microsoft.com
http://apisvb.europe.webmatrixhosting.net
"François Picalausa" <fpicalausa@chez.com> a écrit dans le message de
news:uClfzH6KEHA.1340@TK2MSFTNGP12.phx.gbl
> Hello,
>
> La common dialog est entièrement "hookable" pour pas cher comme
> décrit ici:
>
>
> Au lieu de repositionner, il faudrait intercepter le message de
> création de la toolbar pour ensuite la sous classer et empêcher
> l'ajout (si c'est faisable...) ou plus simplement attendre la fin de
> la création de la boite de dialogue pour supprimer les bouttons en
> envoyant des messages TB_HIDEBUTTON (il faudrait lors de la création
> de la toolbar avoir récupéré son hwnd)
>
> Pour cette seconde méthode, les messages à intercepter seraient (non
> vérifié):
> WM_CREATE (création du contrôle)
> CDN_INITDONE (Fin de l'initialisation de la boite de dialogue, quand
> le boutton est créé)
>
> En fonction du temps qu'il me faudra pour étudier math, je ferai
> peut-être un exemple ;-)
>
>
> "TouTenN" <gelapplication[Nospam]@tiscali.fr> a écrit dans le message
> de news:c6iscc$pf3$1@news-reader5.wanadoo.fr
>> J'ai bien vu que pour le controle "Commondialog", la propriété Flag
>> permet de personnaliser les options de ce contrôle. Malheureusement
>> rien pour masquer les boutons "Afficher bureau" et "Créer un nouveau
>> dossier".
>>
>> Est-ce qd même possible de les masquer???
Hello,
voici l'exemple promis:
'Dans une form, Form1:
Option Explicit
' Déclaration de l'API
Private Declare Function GetOpenFileName _
Lib "comdlg32.dll" _
Alias "GetOpenFileNameA" _
( _
pOpenfilename As OPENFILENAME _
) _
As Long
' GetOpenFileName flags
Public Enum OFN_Constants
OFN_ALLOWMULTISELECT = &H200
OFN_CREATEPROMPT = &H2000
OFN_DONTADDTORECENT = &H2000000
OFN_ENABLEHOOK = &H20
OFN_ENABLEINCLUDENOTIFY = &H400000
OFN_ENABLESIZING = &H800000
OFN_ENABLETEMPLATE = &H40
OFN_ENABLETEMPLATEHANDLE = &H80
OFN_EX_NOPLACESBAR = &H1
OFN_EXPLORER = &H80000
OFN_EXTENSIONDIFFERENT = &H400
OFN_FILEMUSTEXIST = &H1000
OFN_FORCESHOWHIDDEN = &H10000000
OFN_HIDEREADONLY = &H4
OFN_LONGNAMES = &H200000
OFN_NOCHANGEDIR = &H8
OFN_NODEREFERENCELINKS = &H100000
OFN_NOLONGNAMES = &H40000
OFN_NONETWORKBUTTON = &H20000
OFN_NOREADONLYRETURN = &H8000
OFN_NOTESTFILECREATE = &H10000
OFN_NOVALIDATE = &H100
OFN_OVERWRITEPROMPT = &H2
OFN_PATHMUSTEXIST = &H800
OFN_READONLY = &H1
OFN_SHAREAWARE = &H4000
OFN_SHAREFALLTHROUGH = 2
OFN_SHARENOWARN = 1
OFN_SHAREWARN = 0
OFN_SHOWHELP = &H10
OFN_USEMONIKERS = &H1000000
End Enum
Public Function OpenFileDialog(Optional DialogTitle As String, _
Optional sFilter As String, _
Optional Flags As OFN_Constants, _
Optional InitialDir As String, _
Optional hInstance As Long _
) _
As String
Dim OFName As OPENFILENAME
With OFName
.lStructSize = Len(OFName)
.hInstance = hInstance
.lpstrFilter = sFilter
.lpstrFile = String$(260, vbNullChar)
.nMaxFile = 255
.lpstrFileTitle = String$(260, vbNullChar)
.nMaxFileTitle = 255
.lpstrInitialDir = InitialDir
.lpstrTitle = DialogTitle
.Flags = Flags
.lpfnHook = GetProcAddress(AddressOf OFNHookProc)
End With
If GetOpenFileName(OFName) Then
OpenFileDialog = Trim$(OFName.lpstrFile)
End If
End Function
Private Sub Form_Load()
OpenFileDialog "Choississez un fichier...", "Tous les fichiers (*.*)"
_
vbNullChar & "*.*" & vbNullChar & vbNullChar, _
OFN_EXPLORER Or OFN_ENABLEHOOK, _
"", App.hInstance
End Sub
Private Function GetProcAddress(ProcAddress As Long) As Long
GetProcAddress = ProcAddress
End Function
'Dans un module standard, module1:
Option Explicit
Private Const WM_NOTIFY = &H4E
Private Const CDN_FIRST = (-601&)
Private Const CDN_INITDONE = (CDN_FIRST - &H0)
Private Const WM_USER = &H400
Private Const TB_DELETEBUTTON = (WM_USER + 22)
Private Const TB_HIDEBUTTON = (WM_USER + 4)
Private Const TOOLBARCLASSNAME = "ToolbarWindow32"
Public Type OPENFILENAME
lStructSize As Long
hwndOwner As Long
hInstance As Long
lpstrFilter As String
lpstrCustomFilter As String
nMaxCustFilter As Long
nFilterIndex As Long
lpstrFile As String
nMaxFile As Long
lpstrFileTitle As String
nMaxFileTitle As Long
lpstrInitialDir As String
lpstrTitle As String
Flags As Long
nFileOffset As Integer
nFileExtension As Integer
lpstrDefExt As String
lCustData As Long
lpfnHook As Long
lpTemplateName As String
'pvReserved As Long 'pour afficher la
'dwReserved As Long ' places bar sous 2000/XP
'FlagsEx As Long
End Type
Private Type NMHDR
hwndFrom As Long
idFrom As Long
code As Long
End Type
Private Type OFNOTIFY
hdr As NMHDR
lpOFN As Long
pszFile As Long
End Type
Private Declare Sub CopyMemory _
Lib "kernel32" _
Alias "RtlMoveMemory" _
( _
Destination As Any, _
Source As Any, _
ByVal Length As Long _
)
Private Declare Function FindWindowEx _
Lib "user32" _
Alias "FindWindowExA" _
( _
ByVal hWnd1 As Long, _
ByVal hWnd2 As Long, _
ByVal lpsz1 As String, _
ByVal lpsz2 As String _
) _
As Long
Private Declare Function GetParent _
Lib "user32" _
( _
ByVal hwnd As Long _
) _
As Long
Private Declare Function SendMessage _
Lib "user32" _
Alias "SendMessageA" _
( _
ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
lParam As Any _
) _
As Long
Function OFNHookProc(ByVal hdlg As Long, _
ByVal uiMsg As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) As Long
Dim udtNotifyStruct As NMHDR
Dim hWndParent As Long
Dim hWndToolbar As Long
'hdlg
'[in] Handle to the child dialog box of the Open or Save As
'dialog box. Use the GetParent function to get the handle
'to the Open or Save As dialog box.
hWndParent = GetParent(hdlg)
Select Case uiMsg
Case WM_NOTIFY
CopyMemory udtNotifyStruct, ByVal lParam,
Select Case udtNotifyStruct.code
Case CDN_INITDONE
hWndToolbar = FindWindowEx(hWndParent, 0,
TOOLBARCLASSNAME, vbNullString)
If hWndToolbar Then 'toolbar trouvée
'On supprime le boutton d'index 2
'SendMessage hWndToolbar, TB_DELETEBUTTON, 2,
'ou masquer par command id qui peut se révéler
précis:
SendMessage hWndToolbar, TB_HIDEBUTTON, 40962,
1&
End If
End Select
End Select
OFNHookProc = 0
End Function
--
François Picalausa (MVP VB)
http://faq.vb.free.fr --- http://msdn.microsoft.com
http://apisvb.europe.webmatrixhosting.net
"François Picalausa" a écrit dans le message de
news:
> Hello,
>
> La common dialog est entièrement "hookable" pour pas cher comme
> décrit ici:
>
>
> Au lieu de repositionner, il faudrait intercepter le message de
> création de la toolbar pour ensuite la sous classer et empêcher
> l'ajout (si c'est faisable...) ou plus simplement attendre la fin de
> la création de la boite de dialogue pour supprimer les bouttons en
> envoyant des messages TB_HIDEBUTTON (il faudrait lors de la création
> de la toolbar avoir récupéré son hwnd)
>
> Pour cette seconde méthode, les messages à intercepter seraient (non
> vérifié):
> WM_CREATE (création du contrôle)
> CDN_INITDONE (Fin de l'initialisation de la boite de dialogue, quand
> le boutton est créé)
>
> En fonction du temps qu'il me faudra pour étudier math, je ferai
> peut-être un exemple ;-)
>
>
> "TouTenN" <gelapplication[Nospam]@tiscali.fr> a écrit dans le message
> de news:c6iscc$pf3$
>> J'ai bien vu que pour le controle "Commondialog", la propriété Flag
>> permet de personnaliser les options de ce contrôle. Malheureusement
>> rien pour masquer les boutons "Afficher bureau" et "Créer un nouveau
>> dossier".
>>
>> Est-ce qd même possible de les masquer???
voici l'exemple promis:
'Dans une form, Form1:
Option Explicit
Je viens de repérer la commande d'exécution du masquage mais comment
savoir les autres numéros des boutons (ici 40962 pour la création
d'un dossier)???SendMessage hWndToolbar, TB_HIDEBUTTON, 40962, ByVal 1
Merci
GuY
voici l'exemple promis:
'Dans une form, Form1:
Option Explicit
Je viens de repérer la commande d'exécution du masquage mais comment
savoir les autres numéros des boutons (ici 40962 pour la création
d'un dossier)???
SendMessage hWndToolbar, TB_HIDEBUTTON, 40962, ByVal 1
Merci
GuY
voici l'exemple promis:
'Dans une form, Form1:
Option Explicit
Je viens de repérer la commande d'exécution du masquage mais comment
savoir les autres numéros des boutons (ici 40962 pour la création
d'un dossier)???SendMessage hWndToolbar, TB_HIDEBUTTON, 40962, ByVal 1
Merci
GuY
Il y a des **** qui effacent les bouts de codes qu'ils utilisent pour
récupérer ces numéros.. vraiment ;-)
Hello!
Il y a des **** qui effacent les bouts de codes qu'ils utilisent pour
récupérer ces numéros.. vraiment ;-)
Le message est TB_GETBUTTON et il s'utilise avec la structure appropriée
qu'est TBBUTTON
(pour traduire les structures documentées dans la MSDN, il y a un
automatique qui fonctionne pas si mal sur
http://apisvb.europe.webmatrixhosting.net )
Type TBBUTTON
iBitmap As Long
idCommand As Long
fsState As Byte
fsStyle As Byte
bReserved As Integer
iString As Long
End Type
Const TB_GETBUTTON = (WM_USER+23)
Avec
Dim ButtonInfos As TBBUTTON
SendMessage ToolbarWindow, TB_GETBUTTON, IndexBoutton, ButtonInfos
argument déclaré As Any
On retrouve l'id par:
ButtonInfos.idCommand
Voila voila :-)
--
François Picalausa (MVP VB)
http://faq.vb.free.fr --- http://msdn.microsoft.com
http://apisvb.europe.webmatrixhosting.net
"TouTenN" <gelapplication[Nospam]@tiscali.fr> a écrit dans le message
de news:c6l2nf$n5b$
>>> voici l'exemple promis:
>>> 'Dans une form, Form1:
>>> Option Explicit
>
> Je viens de repérer la commande d'exécution du masquage mais comment
> savoir les autres numéros des boutons (ici 40962 pour la création
> d'un dossier)???
>> SendMessage hWndToolbar, TB_HIDEBUTTON, 40962, ByVal 1
>
> Merci
>
> GuY
Il y a des **** qui effacent les bouts de codes qu'ils utilisent pour
récupérer ces numéros.. vraiment ;-)
Hello!
Il y a des **** qui effacent les bouts de codes qu'ils utilisent pour
récupérer ces numéros.. vraiment ;-)
Le message est TB_GETBUTTON et il s'utilise avec la structure appropriée
qu'est TBBUTTON
(pour traduire les structures documentées dans la MSDN, il y a un
automatique qui fonctionne pas si mal sur
http://apisvb.europe.webmatrixhosting.net )
Type TBBUTTON
iBitmap As Long
idCommand As Long
fsState As Byte
fsStyle As Byte
bReserved As Integer
iString As Long
End Type
Const TB_GETBUTTON = (WM_USER+23)
Avec
Dim ButtonInfos As TBBUTTON
SendMessage ToolbarWindow, TB_GETBUTTON, IndexBoutton, ButtonInfos
argument déclaré As Any
On retrouve l'id par:
ButtonInfos.idCommand
Voila voila :-)
--
François Picalausa (MVP VB)
http://faq.vb.free.fr --- http://msdn.microsoft.com
http://apisvb.europe.webmatrixhosting.net
"TouTenN" <gelapplication[Nospam]@tiscali.fr> a écrit dans le message
de news:c6l2nf$n5b$1@news-reader3.wanadoo.fr
>>> voici l'exemple promis:
>>> 'Dans une form, Form1:
>>> Option Explicit
>
> Je viens de repérer la commande d'exécution du masquage mais comment
> savoir les autres numéros des boutons (ici 40962 pour la création
> d'un dossier)???
>> SendMessage hWndToolbar, TB_HIDEBUTTON, 40962, ByVal 1
>
> Merci
>
> GuY
Il y a des **** qui effacent les bouts de codes qu'ils utilisent pour
récupérer ces numéros.. vraiment ;-)
Hello!
Il y a des **** qui effacent les bouts de codes qu'ils utilisent pour
récupérer ces numéros.. vraiment ;-)
Le message est TB_GETBUTTON et il s'utilise avec la structure appropriée
qu'est TBBUTTON
(pour traduire les structures documentées dans la MSDN, il y a un
automatique qui fonctionne pas si mal sur
http://apisvb.europe.webmatrixhosting.net )
Type TBBUTTON
iBitmap As Long
idCommand As Long
fsState As Byte
fsStyle As Byte
bReserved As Integer
iString As Long
End Type
Const TB_GETBUTTON = (WM_USER+23)
Avec
Dim ButtonInfos As TBBUTTON
SendMessage ToolbarWindow, TB_GETBUTTON, IndexBoutton, ButtonInfos
argument déclaré As Any
On retrouve l'id par:
ButtonInfos.idCommand
Voila voila :-)
--
François Picalausa (MVP VB)
http://faq.vb.free.fr --- http://msdn.microsoft.com
http://apisvb.europe.webmatrixhosting.net
"TouTenN" <gelapplication[Nospam]@tiscali.fr> a écrit dans le message
de news:c6l2nf$n5b$
>>> voici l'exemple promis:
>>> 'Dans une form, Form1:
>>> Option Explicit
>
> Je viens de repérer la commande d'exécution du masquage mais comment
> savoir les autres numéros des boutons (ici 40962 pour la création
> d'un dossier)???
>> SendMessage hWndToolbar, TB_HIDEBUTTON, 40962, ByVal 1
>
> Merci
>
> GuY
Il y a des **** qui effacent les bouts de codes qu'ils utilisent pour
récupérer ces numéros.. vraiment ;-)
Je dois être mirrot ou pas réveillé mais je ne trouve pas la partie
du code qui me renvoie les numéro des boutons....
Il y a des **** qui effacent les bouts de codes qu'ils utilisent pour
récupérer ces numéros.. vraiment ;-)
Je dois être mirrot ou pas réveillé mais je ne trouve pas la partie
du code qui me renvoie les numéro des boutons....
Il y a des **** qui effacent les bouts de codes qu'ils utilisent pour
récupérer ces numéros.. vraiment ;-)
Je dois être mirrot ou pas réveillé mais je ne trouve pas la partie
du code qui me renvoie les numéro des boutons....
> hmm.. je parlais de moi.. parce que j'ai effacé cette partie.
Enfin, voici la modification de l'exemple kivabien:
'Dans le module standard, module1:
Option Explicit
Private Const WM_NOTIFY = &H4E
> hmm.. je parlais de moi.. parce que j'ai effacé cette partie.
Enfin, voici la modification de l'exemple kivabien:
'Dans le module standard, module1:
Option Explicit
Private Const WM_NOTIFY = &H4E
> hmm.. je parlais de moi.. parce que j'ai effacé cette partie.
Enfin, voici la modification de l'exemple kivabien:
'Dans le module standard, module1:
Option Explicit
Private Const WM_NOTIFY = &H4E