Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Alain CROS
Bonjour.
Personne ?
C'est vrai que d'habitude, on cherche plutôt à supprimer la croix de fermeture. J'ai essayé de changer le style de la fenêtre, de restaurer le menu système etc... mais rien n'y fait. Je suis toujours intéressé par une piste. Merci d'avance.
Alain CROS.
"Alain CROS" a écrit dans le message de news:
Bonjour.
Je cherche à rétablir le fonctionnement de la croix de fermeture sur une MsgBox. Si quelqu'un a une piste !
Merci.
Alain CROS.
Bonjour.
Personne ?
C'est vrai que d'habitude, on cherche plutôt à supprimer la croix de fermeture.
J'ai essayé de changer le style de la fenêtre, de restaurer le menu système etc... mais rien n'y fait.
Je suis toujours intéressé par une piste.
Merci d'avance.
Alain CROS.
"Alain CROS" <Personne@ICI> a écrit dans le message de news: OxBIU4N5DHA.2188@TK2MSFTNGP10.phx.gbl...
Bonjour.
Je cherche à rétablir le fonctionnement de la croix de fermeture sur une MsgBox.
Si quelqu'un a une piste !
C'est vrai que d'habitude, on cherche plutôt à supprimer la croix de fermeture. J'ai essayé de changer le style de la fenêtre, de restaurer le menu système etc... mais rien n'y fait. Je suis toujours intéressé par une piste. Merci d'avance.
Alain CROS.
"Alain CROS" a écrit dans le message de news:
Bonjour.
Je cherche à rétablir le fonctionnement de la croix de fermeture sur une MsgBox. Si quelqu'un a une piste !
Merci.
Alain CROS.
Michel Pierron
Bonsoir Alain; Une idée comme ça; tu pourrais créer un message avec les boutons OK et Cancel (OK par défaut) auquel cas la croix de fermeture serait accessible et masquer le bouton Cancel avant l'affichage dans une procédure de hooking. MP
"Alain CROS" a écrit dans le message de news:
Bonjour.
Je cherche à rétablir le fonctionnement de la croix de fermeture sur une MsgBox.
Si quelqu'un a une piste !
Merci.
Alain CROS.
Bonsoir Alain;
Une idée comme ça; tu pourrais créer un message avec les boutons OK et
Cancel (OK par défaut) auquel cas la croix de fermeture serait accessible et
masquer le bouton Cancel avant l'affichage dans une procédure de hooking.
MP
"Alain CROS" <Personne@ICI> a écrit dans le message de
news:OxBIU4N5DHA.2188@TK2MSFTNGP10.phx.gbl...
Bonjour.
Je cherche à rétablir le fonctionnement de la croix de fermeture sur une
MsgBox.
Bonsoir Alain; Une idée comme ça; tu pourrais créer un message avec les boutons OK et Cancel (OK par défaut) auquel cas la croix de fermeture serait accessible et masquer le bouton Cancel avant l'affichage dans une procédure de hooking. MP
"Alain CROS" a écrit dans le message de news:
Bonjour.
Je cherche à rétablir le fonctionnement de la croix de fermeture sur une MsgBox.
Si quelqu'un a une piste !
Merci.
Alain CROS.
Alain CROS
Bonjour.
Merci Michel. Ce n'est pas satisfaisant mais je m'en contenterais pour le moment.
Alain CROS.
"Michel Pierron" a écrit dans le message de news:
Bonsoir Alain; Une idée comme ça; tu pourrais créer un message avec les boutons OK et Cancel (OK par défaut) auquel cas la croix de fermeture serait accessible et masquer le bouton Cancel avant l'affichage dans une procédure de hooking. MP
"Alain CROS" a écrit dans le message de news:
Bonjour.
Je cherche à rétablir le fonctionnement de la croix de fermeture sur une MsgBox.
Si quelqu'un a une piste !
Merci.
Alain CROS.
Bonjour.
Merci Michel.
Ce n'est pas satisfaisant mais je m'en contenterais pour le moment.
Alain CROS.
"Michel Pierron" <michel.pierron@free.fr> a écrit dans le message de news: uChKxMp5DHA.2432@TK2MSFTNGP10.phx.gbl...
Bonsoir Alain;
Une idée comme ça; tu pourrais créer un message avec les boutons OK et
Cancel (OK par défaut) auquel cas la croix de fermeture serait accessible et
masquer le bouton Cancel avant l'affichage dans une procédure de hooking.
MP
"Alain CROS" <Personne@ICI> a écrit dans le message de
news:OxBIU4N5DHA.2188@TK2MSFTNGP10.phx.gbl...
Bonjour.
Je cherche à rétablir le fonctionnement de la croix de fermeture sur une
MsgBox.
Merci Michel. Ce n'est pas satisfaisant mais je m'en contenterais pour le moment.
Alain CROS.
"Michel Pierron" a écrit dans le message de news:
Bonsoir Alain; Une idée comme ça; tu pourrais créer un message avec les boutons OK et Cancel (OK par défaut) auquel cas la croix de fermeture serait accessible et masquer le bouton Cancel avant l'affichage dans une procédure de hooking. MP
"Alain CROS" a écrit dans le message de news:
Bonjour.
Je cherche à rétablir le fonctionnement de la croix de fermeture sur une MsgBox.
Si quelqu'un a une piste !
Merci.
Alain CROS.
Michel Pierron
Bonsoir Alain; Testé avec XP uniquement: Option Explicit Private Declare Function GetCurrentThreadId Lib "kernel32" () As Long Private Declare Function SetWindowsHookEx& Lib "user32" Alias "SetWindowsHookExA" _ (ByVal idHook&, ByVal lpfn&, ByVal hmod&, ByVal dwThreadId&) Private Declare Function UnhookWindowsHookEx& Lib "user32" (ByVal hHook&) Private Declare Function SetWindowLong& Lib "user32" Alias "SetWindowLongA" _ (ByVal hWnd&, ByVal nIndex&, ByVal dwNewLong&) Private Declare Function GetClassName& Lib "user32" Alias "GetClassNameA" _ (ByVal hWnd&, ByVal lpClassName$, ByVal nMaxCount&) Private Declare Function SetWindowPos Lib "user32" (ByVal hWnd As Long _ , ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long _ , ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Private Type CWPSTRUCT lParam As Long wParam As Long Message As Long hWnd As Long End Type
Private MyHook&
Sub MsgBoxReset() Const Title As String = "MsgBox personnalisé..." Const Prompt As String = "Cliquez sur la croix pour quitter !" MyHook = SetWindowsHookEx(4, AddressOf WndProc, 0, GetCurrentThreadId) MsgBox Prompt, 0, Title End Sub
Private Function WndProc&(ByVal nCode&, ByVal wParam&, MyStruct As CWPSTRUCT) If Not MyStruct.Message = &H1 Then Exit Function Dim hWnd&: hWnd = MyStruct.hWnd If GetWindowClass(hWnd) = "#32770" Then SetWindowLong hWnd, -16, &H0 Or &H800000 Or &H400000 Or &H80000 Or &H40000 SetWindowPos hWnd, 0, 0, 0, 0, 0, &H20 Or &H2 Or &H4 Or &H1 End If UnhookWindowsHookEx MyHook End Function
Private Function GetWindowClass$(ByVal hWnd&) Dim tbuf$, ins% tbuf = String(255, 0) Call GetClassName(hWnd, tbuf, 256) ins = InStr(tbuf, Chr(0)) tbuf = IIf(ins, Left(tbuf, ins - 1), tbuf) GetWindowClass = LCase(tbuf) End Function
MP
"Alain CROS" a écrit dans le message de news:
Bonjour.
Merci Michel. Ce n'est pas satisfaisant mais je m'en contenterais pour le moment.
Alain CROS.
"Michel Pierron" a écrit dans le message de news:
Bonsoir Alain; Une idée comme ça; tu pourrais créer un message avec les boutons OK et Cancel (OK par défaut) auquel cas la croix de fermeture serait accessible et
masquer le bouton Cancel avant l'affichage dans une procédure de hooking.
MP
"Alain CROS" a écrit dans le message de news:
Bonjour.
Je cherche à rétablir le fonctionnement de la croix de fermeture sur une
MsgBox.
Si quelqu'un a une piste !
Merci.
Alain CROS.
Bonsoir Alain;
Testé avec XP uniquement:
Option Explicit
Private Declare Function GetCurrentThreadId Lib "kernel32" () As Long
Private Declare Function SetWindowsHookEx& Lib "user32" Alias
"SetWindowsHookExA" _
(ByVal idHook&, ByVal lpfn&, ByVal hmod&, ByVal dwThreadId&)
Private Declare Function UnhookWindowsHookEx& Lib "user32" (ByVal hHook&)
Private Declare Function SetWindowLong& Lib "user32" Alias "SetWindowLongA"
_
(ByVal hWnd&, ByVal nIndex&, ByVal dwNewLong&)
Private Declare Function GetClassName& Lib "user32" Alias "GetClassNameA" _
(ByVal hWnd&, ByVal lpClassName$, ByVal nMaxCount&)
Private Declare Function SetWindowPos Lib "user32" (ByVal hWnd As Long _
, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long _
, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Private Type CWPSTRUCT
lParam As Long
wParam As Long
Message As Long
hWnd As Long
End Type
Private MyHook&
Sub MsgBoxReset()
Const Title As String = "MsgBox personnalisé..."
Const Prompt As String = "Cliquez sur la croix pour quitter !"
MyHook = SetWindowsHookEx(4, AddressOf WndProc, 0, GetCurrentThreadId)
MsgBox Prompt, 0, Title
End Sub
Private Function WndProc&(ByVal nCode&, ByVal wParam&, MyStruct As
CWPSTRUCT)
If Not MyStruct.Message = &H1 Then Exit Function
Dim hWnd&: hWnd = MyStruct.hWnd
If GetWindowClass(hWnd) = "#32770" Then
SetWindowLong hWnd, -16, &H0 Or &H800000 Or &H400000 Or &H80000 Or
&H40000
SetWindowPos hWnd, 0, 0, 0, 0, 0, &H20 Or &H2 Or &H4 Or &H1
End If
UnhookWindowsHookEx MyHook
End Function
Private Function GetWindowClass$(ByVal hWnd&)
Dim tbuf$, ins%
tbuf = String(255, 0)
Call GetClassName(hWnd, tbuf, 256)
ins = InStr(tbuf, Chr(0))
tbuf = IIf(ins, Left(tbuf, ins - 1), tbuf)
GetWindowClass = LCase(tbuf)
End Function
MP
"Alain CROS" <Personne@ICI> a écrit dans le message de
news:eAwL8K15DHA.1816@TK2MSFTNGP12.phx.gbl...
Bonjour.
Merci Michel.
Ce n'est pas satisfaisant mais je m'en contenterais pour le moment.
Alain CROS.
"Michel Pierron" <michel.pierron@free.fr> a écrit dans le message de news:
uChKxMp5DHA.2432@TK2MSFTNGP10.phx.gbl...
Bonsoir Alain;
Une idée comme ça; tu pourrais créer un message avec les boutons OK et
Cancel (OK par défaut) auquel cas la croix de fermeture serait
accessible et
masquer le bouton Cancel avant l'affichage dans une procédure de
hooking.
MP
"Alain CROS" <Personne@ICI> a écrit dans le message de
news:OxBIU4N5DHA.2188@TK2MSFTNGP10.phx.gbl...
Bonjour.
Je cherche à rétablir le fonctionnement de la croix de fermeture sur
une
Bonsoir Alain; Testé avec XP uniquement: Option Explicit Private Declare Function GetCurrentThreadId Lib "kernel32" () As Long Private Declare Function SetWindowsHookEx& Lib "user32" Alias "SetWindowsHookExA" _ (ByVal idHook&, ByVal lpfn&, ByVal hmod&, ByVal dwThreadId&) Private Declare Function UnhookWindowsHookEx& Lib "user32" (ByVal hHook&) Private Declare Function SetWindowLong& Lib "user32" Alias "SetWindowLongA" _ (ByVal hWnd&, ByVal nIndex&, ByVal dwNewLong&) Private Declare Function GetClassName& Lib "user32" Alias "GetClassNameA" _ (ByVal hWnd&, ByVal lpClassName$, ByVal nMaxCount&) Private Declare Function SetWindowPos Lib "user32" (ByVal hWnd As Long _ , ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long _ , ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Private Type CWPSTRUCT lParam As Long wParam As Long Message As Long hWnd As Long End Type
Private MyHook&
Sub MsgBoxReset() Const Title As String = "MsgBox personnalisé..." Const Prompt As String = "Cliquez sur la croix pour quitter !" MyHook = SetWindowsHookEx(4, AddressOf WndProc, 0, GetCurrentThreadId) MsgBox Prompt, 0, Title End Sub
Private Function WndProc&(ByVal nCode&, ByVal wParam&, MyStruct As CWPSTRUCT) If Not MyStruct.Message = &H1 Then Exit Function Dim hWnd&: hWnd = MyStruct.hWnd If GetWindowClass(hWnd) = "#32770" Then SetWindowLong hWnd, -16, &H0 Or &H800000 Or &H400000 Or &H80000 Or &H40000 SetWindowPos hWnd, 0, 0, 0, 0, 0, &H20 Or &H2 Or &H4 Or &H1 End If UnhookWindowsHookEx MyHook End Function
Private Function GetWindowClass$(ByVal hWnd&) Dim tbuf$, ins% tbuf = String(255, 0) Call GetClassName(hWnd, tbuf, 256) ins = InStr(tbuf, Chr(0)) tbuf = IIf(ins, Left(tbuf, ins - 1), tbuf) GetWindowClass = LCase(tbuf) End Function
MP
"Alain CROS" a écrit dans le message de news:
Bonjour.
Merci Michel. Ce n'est pas satisfaisant mais je m'en contenterais pour le moment.
Alain CROS.
"Michel Pierron" a écrit dans le message de news:
Bonsoir Alain; Une idée comme ça; tu pourrais créer un message avec les boutons OK et Cancel (OK par défaut) auquel cas la croix de fermeture serait accessible et
masquer le bouton Cancel avant l'affichage dans une procédure de hooking.
MP
"Alain CROS" a écrit dans le message de news:
Bonjour.
Je cherche à rétablir le fonctionnement de la croix de fermeture sur une
MsgBox.
Si quelqu'un a une piste !
Merci.
Alain CROS.
Alain CROS
Bonjour.
Merci Michel mais ça ne fonctionne pas sur Win98.
Plusieurs fois dans tes messages apparaît une ligne tel que : SetWindowLong hWnd, -16, &H0 Or &H800000 Or &H400000 Or &H80000 Or &H40000 avec &H0 Or ... Ce paramètre sert il à forcer quelque chose ou ... ? Merci encore.
Alain CROS.
Bonjour.
Merci Michel mais ça ne fonctionne pas sur Win98.
Plusieurs fois dans tes messages apparaît une ligne tel que :
SetWindowLong hWnd, -16, &H0 Or &H800000 Or &H400000 Or &H80000 Or &H40000
avec &H0 Or ...
Ce paramètre sert il à forcer quelque chose ou ... ?
Merci encore.
Plusieurs fois dans tes messages apparaît une ligne tel que : SetWindowLong hWnd, -16, &H0 Or &H800000 Or &H400000 Or &H80000 Or &H40000 avec &H0 Or ... Ce paramètre sert il à forcer quelque chose ou ... ? Merci encore.
Alain CROS.
Michel Pierron
Bonjour Alain; Désolé, mais je ne peux pas tester actuellement sous Win98. Les constantes sont les suivantes: SetWindowLong hWnd, -16, &H0 Or &H800000 Or &H400000 Or &H80000 Or &H40000 GWL_STYLE& = -16 WS_OVERLAPPED = &H0 WS_BORDER = &H800000 WS_DLGFRAME = &H400000 WS_SYSMENU = &H80000 WS_THICKFRAME = &H40000 Pour info: WS_CAPTION = WS_BORDER Or WS_DLGFRAME
La procédure SetWindowPos force la mise à jour de la fenêtre et n'est pas utile avec XP; en fait, avec XP, il suffit de: If GetWindowClass(hWnd) = "#32770" Then SetWindowLong hWnd, -16, GetWindowLong(hWnd, -16) Or &H80000 End If
MP
"Alain CROS" a écrit dans le message de news:
Bonjour.
Merci Michel mais ça ne fonctionne pas sur Win98.
Plusieurs fois dans tes messages apparaît une ligne tel que : SetWindowLong hWnd, -16, &H0 Or &H800000 Or &H400000 Or &H80000 Or &H40000 avec &H0 Or ... Ce paramètre sert il à forcer quelque chose ou ... ? Merci encore.
Alain CROS.
Bonjour Alain;
Désolé, mais je ne peux pas tester actuellement sous Win98.
Les constantes sont les suivantes:
SetWindowLong hWnd, -16, &H0 Or &H800000 Or &H400000 Or &H80000 Or &H40000
GWL_STYLE& = -16
WS_OVERLAPPED = &H0
WS_BORDER = &H800000
WS_DLGFRAME = &H400000
WS_SYSMENU = &H80000
WS_THICKFRAME = &H40000
Pour info: WS_CAPTION = WS_BORDER Or WS_DLGFRAME
La procédure SetWindowPos force la mise à jour de la fenêtre et n'est pas
utile avec XP; en fait, avec XP, il suffit de:
If GetWindowClass(hWnd) = "#32770" Then
SetWindowLong hWnd, -16, GetWindowLong(hWnd, -16) Or &H80000
End If
MP
"Alain CROS" <Personne@ICI> a écrit dans le message de
news:u2GrRI95DHA.2056@TK2MSFTNGP10.phx.gbl...
Bonjour.
Merci Michel mais ça ne fonctionne pas sur Win98.
Plusieurs fois dans tes messages apparaît une ligne tel que :
SetWindowLong hWnd, -16, &H0 Or &H800000 Or &H400000 Or &H80000 Or &H40000
avec &H0 Or ...
Ce paramètre sert il à forcer quelque chose ou ... ?
Merci encore.
Bonjour Alain; Désolé, mais je ne peux pas tester actuellement sous Win98. Les constantes sont les suivantes: SetWindowLong hWnd, -16, &H0 Or &H800000 Or &H400000 Or &H80000 Or &H40000 GWL_STYLE& = -16 WS_OVERLAPPED = &H0 WS_BORDER = &H800000 WS_DLGFRAME = &H400000 WS_SYSMENU = &H80000 WS_THICKFRAME = &H40000 Pour info: WS_CAPTION = WS_BORDER Or WS_DLGFRAME
La procédure SetWindowPos force la mise à jour de la fenêtre et n'est pas utile avec XP; en fait, avec XP, il suffit de: If GetWindowClass(hWnd) = "#32770" Then SetWindowLong hWnd, -16, GetWindowLong(hWnd, -16) Or &H80000 End If
MP
"Alain CROS" a écrit dans le message de news:
Bonjour.
Merci Michel mais ça ne fonctionne pas sur Win98.
Plusieurs fois dans tes messages apparaît une ligne tel que : SetWindowLong hWnd, -16, &H0 Or &H800000 Or &H400000 Or &H80000 Or &H40000 avec &H0 Or ... Ce paramètre sert il à forcer quelque chose ou ... ? Merci encore.
Alain CROS.
Michel Pierron
Bonsoir Alain; As-tu essayé de créer le msgbox par API qui donne accès aussi à la croix de fermeture sous XP. Private Declare Function MessageBox Lib "user32" Alias "MessageBoxA" _ (ByVal hwnd As Long, ByVal lpText As String, ByVal lpCaption As String _ , ByVal wType As Long) As Long Private Declare Function GetForegroundWindow Lib "user32" () As Long
Sub MsgBox_OkOnly() Dim hwnd As Long hwnd = GetForegroundWindow MessageBox hwnd, "Cliquez la croix pour test !" _ , Application.Caption, &H0& + &H40& End Sub
MP
"Alain CROS" a écrit dans le message de news:
Bonjour.
Merci Michel mais ça ne fonctionne pas sur Win98.
Plusieurs fois dans tes messages apparaît une ligne tel que : SetWindowLong hWnd, -16, &H0 Or &H800000 Or &H400000 Or &H80000 Or &H40000 avec &H0 Or ... Ce paramètre sert il à forcer quelque chose ou ... ? Merci encore.
Alain CROS.
Bonsoir Alain;
As-tu essayé de créer le msgbox par API qui donne accès aussi à la croix de
fermeture sous XP.
Private Declare Function MessageBox Lib "user32" Alias "MessageBoxA" _
(ByVal hwnd As Long, ByVal lpText As String, ByVal lpCaption As String _
, ByVal wType As Long) As Long
Private Declare Function GetForegroundWindow Lib "user32" () As Long
Sub MsgBox_OkOnly()
Dim hwnd As Long
hwnd = GetForegroundWindow
MessageBox hwnd, "Cliquez la croix pour test !" _
, Application.Caption, &H0& + &H40&
End Sub
MP
"Alain CROS" <Personne@ICI> a écrit dans le message de
news:u2GrRI95DHA.2056@TK2MSFTNGP10.phx.gbl...
Bonjour.
Merci Michel mais ça ne fonctionne pas sur Win98.
Plusieurs fois dans tes messages apparaît une ligne tel que :
SetWindowLong hWnd, -16, &H0 Or &H800000 Or &H400000 Or &H80000 Or &H40000
avec &H0 Or ...
Ce paramètre sert il à forcer quelque chose ou ... ?
Merci encore.
Bonsoir Alain; As-tu essayé de créer le msgbox par API qui donne accès aussi à la croix de fermeture sous XP. Private Declare Function MessageBox Lib "user32" Alias "MessageBoxA" _ (ByVal hwnd As Long, ByVal lpText As String, ByVal lpCaption As String _ , ByVal wType As Long) As Long Private Declare Function GetForegroundWindow Lib "user32" () As Long
Sub MsgBox_OkOnly() Dim hwnd As Long hwnd = GetForegroundWindow MessageBox hwnd, "Cliquez la croix pour test !" _ , Application.Caption, &H0& + &H40& End Sub
MP
"Alain CROS" a écrit dans le message de news:
Bonjour.
Merci Michel mais ça ne fonctionne pas sur Win98.
Plusieurs fois dans tes messages apparaît une ligne tel que : SetWindowLong hWnd, -16, &H0 Or &H800000 Or &H400000 Or &H80000 Or &H40000 avec &H0 Or ... Ce paramètre sert il à forcer quelque chose ou ... ? Merci encore.