Est t'il possible en c++ de faire en sorte que tant que l'utilisateur n'a pas cliquer sur un boutton tout windows soit figer ?
Est t'il possible en c++ de faire en sorte que tant que l'utilisateur n'a pas cliquer sur un boutton tout windows soit figer ?
tout est possible en c++
à part commettre une horrible erreur de logique qui déstabilisera le système et du coup ni bouton, ni rien...
et je crois que ta question n'est pas sur le bon forum, car c'est une question qui concerne windows...
@blackhorus : J'ai ésiter de poster ici mais bon vu que c'etais en c++...
@philippe V : as tu une piste a me donner dans laquelle me diriger...
ce que tu veux dépends du système d'exploitation, je vais supposer que c'est Windows.
Même ici, ça dépend de la version, Windows 95,98 un Hook globale suffit pour intercepter toutes les touches et les combinaison (ctrl+tab, ctrl+alt,suppr), alors que sur windows 2000,XP essaye de voir du côté de GINA
un lien
http://www.codeproject.com/win32/AntonioWinLock.asp
J'ai trouver ce code sur le net qui permet de cacher les icones et de les réaficher ce qui en definitive me convient a peut pres.
Mais ... Je ne sais pas trop ou lintegré dans mon programe pour que dès qu'il se lance il cache les icones et des qu'il se ferme les réafiche...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 #include <windows.h> void main() { //HWND hProgMan = FindWindow("Shell_TrayWnd" , 0); HWND hProgMan = FindWindow(0 , "Program Manager"); if (!hProgMan) return; if (IsWindowVisible(hProgMan)) ShowWindow(hProgMan, SW_HIDE); else ShowWindow(hProgMan, SW_SHOW); }
Mon code est le suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124 // Test_FenetreDlg.cpp : implementation file // #include "stdafx.h" #include "Test_Fenetre.h" #include "Test_FenetreDlg.h" #include <windows.h> #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CTest_FenetreDlg dialog CTest_FenetreDlg::CTest_FenetreDlg(CWnd* pParent /*=NULL*/) : CDialog(CTest_FenetreDlg::IDD, pParent) { //{{AFX_DATA_INIT(CTest_FenetreDlg) m_login = _T(""); //}}AFX_DATA_INIT // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); } void CTest_FenetreDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CTest_FenetreDlg) DDX_Text(pDX, IDC_EDIT1, m_login); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CTest_FenetreDlg, CDialog) //{{AFX_MSG_MAP(CTest_FenetreDlg) ON_WM_PAINT() ON_WM_QUERYDRAGICON() //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CTest_FenetreDlg message handlers BOOL CTest_FenetreDlg::OnInitDialog() { CDialog::OnInitDialog(); CRect rect; GetWindowRect( rect ); ::SetWindowPos(m_hWnd , HWND_TOPMOST, (GetSystemMetrics(SM_CXSCREEN)-rect.right)/2, (GetSystemMetrics(SM_CYSCREEN)-rect.bottom)/2, rect.Width(), rect.Height(), SWP_SHOWWINDOW); /*ModifyStyleEx( WS_EX_APPWINDOW, WS_EX_TOOLWINDOW );*/ // Set the icon for this dialog. The framework does this automatically // when the application's main window is not a dialog SetIcon(m_hIcon, TRUE); // Set big icon SetIcon(m_hIcon, FALSE); // Set small icon // TODO: Add extra initialization here return TRUE; // return TRUE unless you set the focus to a control } // If you add a minimize button to your dialog, you will need the code below // to draw the icon. For MFC applications using the document/view model, // this is automatically done for you by the framework. void CTest_FenetreDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // device context for painting SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); // Center icon in client rectangle int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // Draw the icon dc.DrawIcon(x, y, m_hIcon); } else { CDialog::OnPaint(); } } // The system calls this to obtain the cursor to display while the user drags // the minimized window. HCURSOR CTest_FenetreDlg::OnQueryDragIcon() { return (HCURSOR) m_hIcon; } void CTest_FenetreDlg::OnOK() { UpdateData(true); FILE *log; log = fopen("c:\\log.txt","a+"); fputs(m_login, log); fclose(log); CDialog::OnOK(); }
dans le début de BOOL CTest_FenetreDlg::OnInitDialog()
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 HWND hProgMan = FindWindow(0 , "Program Manager"); if (!hProgMan) return; ShowWindow(hProgMan, SW_HIDE);
dans la fin de void CTest_FenetreDlg::OnOK()
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 HWND hProgMan = FindWindow(0 , "Program Manager"); if (!hProgMan) return; ShowWindow(hProgMan, SW_SHOW);
J'ai déja 3 erreurs quand je met la premiere dans le debut de BOOL CTest...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 C:\Program Files\...\Test_FenetreDlg.cpp(56) : error C2440: 'initializing' : cannot convert from 'class CWnd *' to 'struct HWND__ *' Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast C:\Program Files\...\Test_FenetreDlg.cpp(57) : error C2561: 'OnInitDialog' : function must return a value c:\program files\...\test_fenetredlg.h(40) : see declaration of 'OnInitDialog' C:\Program Files\...\Test_FenetreDlg.cpp(59) : error C2660: 'ShowWindow' : function does not take 2 parameters Error executing cl.exe. Test_Fenetre.exe - 3 error(s), 0 warning(s)
On m'a dit que ça a un rapport avec le fait que j'ai utiliser MFC.
Il y a pas moyen de faire en sorte que ça marche avec un prgramme sous MFC ?
Eh bien tu as des erreurs dans ton code dans Test_FenetreDlg.cpp lignes 56 et 57.
A vu de nez tu mixes Win32 et MFC via un ShowWindow( MyWnd, SW_HIDE ) au lieu de faire MyWnd->ShowWindow( SW_HIDE );
Mais pense à nous copier-coller les lignes qui font une erreur au lieu de donner les erreurs.
J'ai faisjuste après :
Code : Sélectionner tout - Visualiser dans une fenêtre à part ShowWindow( MyWnd, SW_HIDE );
mais le probleme c'est que j'ai droit à un "error C2065: 'MyWnd' : undeclared identifier".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 BOOL CTest_FenetreDlg::OnInitDialog() { CDialog::OnInitDialog();
J'ai été voir dans msdn et MyWnd est sensé retourner l'Handle de la fenetre mais vu que je l'ais jamais déclaré je sais pas ou le prendre vu que j'ai fais la fenetre avec MFC...
fais ça pour l'instant
sache que le membre m_hWnd est un membre déclare dans la classe parent, et c'est pas à toi de le déclarer...
Code : Sélectionner tout - Visualiser dans une fenêtre à part ::ShowWindow(m_hWnd, SW_HIDE );
Ouai deja j'ai plus d'erreur mais il ne fais rien...
Il ne cache pas les icones.
Par contre je viens de trouver. C'est bon pour cacher les icones :
Et de même pour les reaficher :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 BOOL CTest_FenetreDlg::OnInitDialog() { CDialog::OnInitDialog(); HWND hProgMan = ::FindWindow(0 , "Program Manager"); ::ShowWindow(hProgMan, SW_HIDE);
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 void CTest_FenetreDlg::OnCancel() { // TODO: Add extra cleanup here HWND hProgMan = ::FindWindow(0 , "Program Manager"); ::ShowWindow(hProgMan, SW_SHOW); CDialog::OnCancel(); }
Merci pour votre aide.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager