OVH Cloud OVH Cloud

XP SP2 bug avec Timer???

12 réponses
Avatar
Jean-Claude
Bonjour,
Est-ce-qqn a aussi des problèmes avec la fontion CWnd::SetTimer( ...) et
XP +SP2+MFC72? Mon prg fonctionne sous XP SP1 mais plus avec le SP2 ie. la
fonction SetTimer(...) n'appel plus OnTimer(...)

je fais

// Timer

UINT m_nTimerID=1;
UINT m_iRolloverDelay=10;

SetTimer(m_nTimerID,m_iRolloverDelay,NULL);

mais

void CColorButton::OnTimer(UINT nIDEvent)
{
n'est plus appelé avec SP2 mais est appelé avec SP1 ??????
}

10 réponses

1 2
Avatar
Sepehr Ramezani
Jean-Claude wrote:

Bonjour,
Est-ce-qqn a aussi des problèmes avec la fontion CWnd::SetTimer( ...) et
XP +SP2+MFC72? Mon prg fonctionne sous XP SP1 mais plus avec le SP2 ie. la
fonction SetTimer(...) n'appel plus OnTimer(...)

je fais

// Timer

UINT m_nTimerID=1;
UINT m_iRolloverDelay;

SetTimer(m_nTimerID,m_iRolloverDelay,NULL);

mais

void CColorButton::OnTimer(UINT nIDEvent)
{
n'est plus appelé avec SP2 mais est appelé avec SP1 ??????
}









Bonjour,
j'utilise xp sp2 et je n'ai pas de problème.

j'utilise visual .net et vous ?

voici le code

m_nTimer = SetTimer(1, 100, NULL);

void Cprogressfile::OnTimer(UINT nIDEvent)
{
m_progress.SetPos(comp_aff);
CDialog::OnTimer(nIDEvent);
}
Avatar
Jean-Claude
moi aussi. C'était un projet VC6 avec MFC que j'ai converti en .net.
J'ai lu que le SetTimer( ) pouvait dans certains cas être utilisé par des
"hacker" comme faille de l'OS Windows. Je pense que Microsoft a donc fait
qqch dans le SP2 pour palier à cette faille. C'est peutêtre pour ça , que
dans mon cas, ça ne fonctionne plus...

Merci, Jean-Claude

"Sepehr Ramezani" a écrit dans le message de
news:chp6is$sm2$
Jean-Claude wrote:

> Bonjour,
> Est-ce-qqn a aussi des problèmes avec la fontion CWnd::SetTimer( ...)


et
> XP +SP2+MFC72? Mon prg fonctionne sous XP SP1 mais plus avec le SP2 ie.


la
> fonction SetTimer(...) n'appel plus OnTimer(...)
>
> je fais
>
> // Timer
>
> UINT m_nTimerID=1;
> UINT m_iRolloverDelay;
>
> SetTimer(m_nTimerID,m_iRolloverDelay,NULL);
>
> mais
>
> void CColorButton::OnTimer(UINT nIDEvent)
> {
> n'est plus appelé avec SP2 mais est appelé avec SP1 ??????
> }
>
>
>
>
>
>
>
Bonjour,
j'utilise xp sp2 et je n'ai pas de problème.

j'utilise visual .net et vous ?

voici le code

m_nTimer = SetTimer(1, 100, NULL);

void Cprogressfile::OnTimer(UINT nIDEvent)
{
m_progress.SetPos(comp_aff);
CDialog::OnTimer(nIDEvent);
}


Avatar
Arnaud Debaene
Jean-Claude wrote:
moi aussi. C'était un projet VC6 avec MFC que j'ai converti en .net.
J'ai lu que le SetTimer( ) pouvait dans certains cas être utilisé par
des "hacker" comme faille de l'OS Windows.


Vi. Google-ise sur "Shatter attack" si tu veux des détails.

Je pense que Microsoft a
donc fait qqch dans le SP2 pour palier à cette faille. C'est peutêtre
pour ça , que dans mon cas, ça ne fonctionne plus...



A ma connaissance, rien n'a été fait pour résoudre "fondamentatlement" le
problème (c'est impossible sans casser la compatibilité avec un paquet
d'applications existantes). Ce qui a été fait, c'est sans doute de limiter
le problème, en s'assurant entre autres qu'aucun processus avec des
privilèges élevés (typiquement des ervices) n'a de fenêtre sur le/les
bureaux interactifs (au pluriel dans le cas de Terminal Services / FUS). Si
tu utilises WM_TIMER en interne dans ton application (càd c'est ton appli
qui se poste à elle même les WM_TIMER - c'est bien le cas? ), il ne devrait
y avoir aucun problème.

Pour commencer, utilises Spy++ pour vérifier si des messages WM_TIMER
arrivent bien à la fenêtre de ton appli.

Arnaud
Avatar
Thierry
Bonjour,

Arnaud Debaene a écrit :

A ma connaissance, rien n'a été fait pour résoudre "fondamentatlement"
le problème



Quel est le probleme ?

--
« Always look at the bright side of the life... »
Avatar
Jean-Claude
Merci pour ces précisions. le WM_TIMER n'est plus envoyé avec le SP2.
J'ai détouné le problème et je n'ai plus besoin de SetTimer. Voici tout de
même en 2 mots la situation d emon SetTimer.

Application SDI MFC dans laquelle je fait un CMyDialogBar dans lequel je
place des CMyButton. C'est dans CMyButton que je faisait un SetTimer( ) de
façon à que le bouton s'allume lorsque je passais la souris par dessus.


"Arnaud Debaene" a écrit dans le message de
news:41409052$0$316$
Jean-Claude wrote:
> moi aussi. C'était un projet VC6 avec MFC que j'ai converti en .net.
> J'ai lu que le SetTimer( ) pouvait dans certains cas être utilisé par
> des "hacker" comme faille de l'OS Windows.
Vi. Google-ise sur "Shatter attack" si tu veux des détails.

> Je pense que Microsoft a
> donc fait qqch dans le SP2 pour palier à cette faille. C'est peutêtre
> pour ça , que dans mon cas, ça ne fonctionne plus...

A ma connaissance, rien n'a été fait pour résoudre "fondamentatlement" le
problème (c'est impossible sans casser la compatibilité avec un paquet
d'applications existantes). Ce qui a été fait, c'est sans doute de limiter
le problème, en s'assurant entre autres qu'aucun processus avec des
privilèges élevés (typiquement des ervices) n'a de fenêtre sur le/les
bureaux interactifs (au pluriel dans le cas de Terminal Services / FUS).


Si
tu utilises WM_TIMER en interne dans ton application (càd c'est ton appli
qui se poste à elle même les WM_TIMER - c'est bien le cas? ), il ne


devrait
y avoir aucun problème.

Pour commencer, utilises Spy++ pour vérifier si des messages WM_TIMER
arrivent bien à la fenêtre de ton appli.

Arnaud




Avatar
Dominique Vaufreydaz
Bonjour,

Jean-Claude wrote:
Merci pour ces précisions. le WM_TIMER n'est plus envoyé avec le SP2.
J'ai détouné le problème et je n'ai plus besoin de SetTimer. Voici
tout de même en 2 mots la situation d emon SetTimer.
Application SDI MFC dans laquelle je fait un CMyDialogBar dans lequel
je place des CMyButton. C'est dans CMyButton que je faisait un
SetTimer( ) de façon à que le bouton s'allume lorsque je passais la
souris par dessus.



Euh, moi j'ai des threads et je recoit bien les timer dans mon applie...
Un lien, une doc sur le sujet ???

Merci. Doms.
--
Impose ta chance, serre ton bonheur et va vers ton risque.
A te regarder, ils s'habitueront.
René Char, Les Matinaux.
----
http://Dominique.Vaufreydaz.free.fr/
http://TitchKaRa.free.fr/
http://logiciels.ntfaqfr.com/
Avatar
Aurélien REGAT-BARREL
> Quel est le probleme ?



Le principe même des messages sous Windows:
http://www.katabatik.com/ktk/sections.php?op=viewarticle&artid"
Avatar
Dominique Vaufreydaz
Bonjour,

Jean-Claude wrote:
OK, j'ai fait un test simple: deux boutons CMyButton dans un Cdialog.
et je confirme que ça ne fonctionne pas en Debug avec le SP2. Mais la
source du problème vient de la classe CMyButton (qui ne vient pas de
moi). Je n'ai pas trouvé la raison exacte...



Bon alors en subclassant ta WindowProc de ton CMyButton, tu le recois
ou bien ???

Doms.
--
Impose ta chance, serre ton bonheur et va vers ton risque.
A te regarder, ils s'habitueront.
René Char, Les Matinaux.
----
http://Dominique.Vaufreydaz.free.fr/
http://TitchKaRa.free.fr/
http://logiciels.ntfaqfr.com/
Avatar
Thierry
Bonjour,

Aurélien REGAT-BARREL a écrit :

Quel est le probleme ?



Le principe même des messages sous Windows:
http://www.katabatik.com/ktk/sections.php?op=viewarticle&artid"



Ok, donc pas specifique a WM_TIMER.

--
« Always look at the bright side of the life... »
Avatar
Jean-Claude
Ben non, compilé en Debug avec SP2, le WM_TIMER n'est jamais envoyé:

LRESULT CColorButton::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
// TODO: Add your specialized code here and/or call the base class
if (message==WM_TIMER) TRACE("********* WM_TIMER ************n");
return __super::WindowProc(message, wParam, lParam);
}








"Dominique Vaufreydaz" a écrit dans le
message de news:ci3lmt$shg$
Bonjour,

Jean-Claude wrote:
> OK, j'ai fait un test simple: deux boutons CMyButton dans un Cdialog.
> et je confirme que ça ne fonctionne pas en Debug avec le SP2. Mais la
> source du problème vient de la classe CMyButton (qui ne vient pas de
> moi). Je n'ai pas trouvé la raison exacte...

Bon alors en subclassant ta WindowProc de ton CMyButton, tu le recois
ou bien ???

Doms.
--
Impose ta chance, serre ton bonheur et va vers ton risque.
A te regarder, ils s'habitueront.
René Char, Les Matinaux.
----
http://Dominique.Vaufreydaz.free.fr/
http://TitchKaRa.free.fr/
http://logiciels.ntfaqfr.com/




1 2