Accueil > Forum > > > > SetWaitableTimer
SetWaitableTimer
vendredi 5 septembre 2003 à 09:40:59 |
SetWaitableTimer

jm2
|
Salut! Voici un morceau de prg qui me pose pb.: hTempo=CreateWaitableTimer(NULL,true,NULL); affich.Format("erreur creer: %d",GetLastError()); SetDlgItemText(IDC_msg,affich); LDuree.QuadPart=-100000; if(!SetWaitableTimer(hTempo,(const union _LARGE_INTEGER *) LDuree.QuadPart,0,NULL,NULL,false)) { affich.Format("erreur set: %d",GetLastError()); SetDlgItemText(IDC_msg2,affich); } CreateWaitableTimer ne renvoie pas d'erreur. SetWaitableTimer me renvoie l'erreur 998: 998 Invalid access to memory location. ERROR_NOACCESS. D'où vient le pb. ? merci d'avance.
|
|
vendredi 5 septembre 2003 à 09:54:36 |
Re : SetWaitableTimer

BruNews
|
Mets adresse en 2 eme param de SetWaitableTimer(...). &LDuree BruNews, ciao...
------------------------------- Réponse au message : -------------------------------
> Salut! > > Voici un morceau de prg qui me pose pb.: > > hTempo=CreateWaitableTimer(NULL,true,NULL); > > affich.Format("erreur creer: %d",GetLastError()); > > SetDlgItemText(IDC_msg,affich); > > LDuree.QuadPart=-100000; > > if(!SetWaitableTimer(hTempo,(const union _LARGE_INTEGER *) LDuree.QuadPart,0,NULL,NULL,false)) > { > affich.Format("erreur set: %d",GetLastError()); > SetDlgItemText(IDC_msg2,affich); > } > > CreateWaitableTimer ne renvoie pas d'erreur. > SetWaitableTimer me renvoie l'erreur 998: 998 Invalid access to memory location. ERROR_NOACCESS. > > D'où vient le pb. ? > > merci d'avance. > >
|
|
vendredi 5 septembre 2003 à 12:46:35 |
Re : SetWaitableTimer

jm2
|
jm2
Poblème quand je met &LDuree: error C2664: 'SetWaitableTimer' : cannot convert parameter 2 from '__int64 *' to 'const union _LARGE_INTEGER *'
alors est-ce que ça vient de ma déclaration: _LARGE_INTEGER LDuree;
ou d'autre chose? rem:je n'avais pas d'erreur de compilation avant.
------------------------------- Réponse au message : -------------------------------
> Mets adresse en 2 eme param de SetWaitableTimer(...). > &LDuree > BruNews, ciao... > > > ------------------------------- > Réponse au message : > ------------------------------- > > > Salut! > > > > Voici un morceau de prg qui me pose pb.: > > > > hTempo=CreateWaitableTimer(NULL,true,NULL); > > > > affich.Format("erreur creer: %d",GetLastError()); > > > > SetDlgItemText(IDC_msg,affich); > > > > LDuree.QuadPart=-100000; > > > > if(!SetWaitableTimer(hTempo,(const union _LARGE_INTEGER *) LDuree.QuadPart,0,NULL,NULL,false)) > > { > > affich.Format("erreur set: %d",GetLastError()); > > SetDlgItemText(IDC_msg2,affich); > > } > > > > CreateWaitableTimer ne renvoie pas d'erreur. > > SetWaitableTimer me renvoie l'erreur 998: 998 Invalid access to memory location. ERROR_NOACCESS. > > > > D'où vient le pb. ? > > > > merci d'avance. > > > > >
|
|
vendredi 5 septembre 2003 à 12:55:38 |
Re : SetWaitableTimer

BruNews
|
C'est bien ce que j'avais dit de mettre et c'est ce que tu as mis ?
if(!SetWaitableTimer(hTempo,(const union _LARGE_INTEGER *) &LDuree,0,NULL,NULL,false))
BruNews, ciao...
------------------------------- Réponse au message : -------------------------------
> > jm2 > > Poblème quand je met &LDuree: > error C2664: 'SetWaitableTimer' : cannot convert parameter 2 from '__int64 *' to 'const union _LARGE_INTEGER *' > > alors est-ce que ça vient de ma déclaration: > _LARGE_INTEGER LDuree; > > ou d'autre chose? > rem:je n'avais pas d'erreur de compilation avant. > > ------------------------------- > Réponse au message : > ------------------------------- > > > Mets adresse en 2 eme param de SetWaitableTimer(...). > > &LDuree > > BruNews, ciao... > > > > > > ------------------------------- > > Réponse au message : > > ------------------------------- > > > > > Salut! > > > > > > Voici un morceau de prg qui me pose pb.: > > > > > > hTempo=CreateWaitableTimer(NULL,true,NULL); > > > > > > affich.Format("erreur creer: %d",GetLastError()); > > > > > > SetDlgItemText(IDC_msg,affich); > > > > > > LDuree.QuadPart=-100000; > > > > > > if(!SetWaitableTimer(hTempo,(const union _LARGE_INTEGER *) LDuree.QuadPart,0,NULL,NULL,false)) > > > { > > > affich.Format("erreur set: %d",GetLastError()); > > > SetDlgItemText(IDC_msg2,affich); > > > } > > > > > > CreateWaitableTimer ne renvoie pas d'erreur. > > > SetWaitableTimer me renvoie l'erreur 998: 998 Invalid access to memory location. ERROR_NOACCESS. > > > > > > D'où vient le pb. ? > > > > > > merci d'avance. > > > > > > > > >
|
|
vendredi 5 septembre 2003 à 14:22:52 |
Re : SetWaitableTimer

jm2
|
jm2
effectivement, j'avais enlevé (const union _LARGE_INTEGER *) et mis que &LDuree.
merci pour ton aide BruNews.
j'ai vu que certains cherchaient à faire un Sleep() sans utiliser la fonction Sleep(). Alors je sais pas si c'est correcte mais j'ai un équivalent ci-dessous: initialisation: _LARGE_INTEGER LDuree; HANDLE hTempo;
LDuree.QuadPart=-20000000; //durée 2S
créer le Handle: hTempo=CreateWaitableTimer(NULL,true,NULL);
le lancer: SetWaitableTimer(hTempo,(const union _LARGE_INTEGER *)&LDuree.QuadPart,0,NULL,NULL,false)
tester: if(WaitForSingleObject(hTempo,0)==WAIT_OBJECT_0) ...
sachant que cette dernière instruction peut attendre ou non suivant le second paramètre.
Voilà. encore une fois merci Brunews.
------------------------------- Réponse au message : -------------------------------
> C'est bien ce que j'avais dit de mettre et c'est ce que tu as mis ? > > if(!SetWaitableTimer(hTempo,(const union _LARGE_INTEGER *) &LDuree,0,NULL,NULL,false)) > > BruNews, ciao... > > > ------------------------------- > Réponse au message : > ------------------------------- > > > > > jm2 > > > > Poblème quand je met &LDuree: > > error C2664: 'SetWaitableTimer' : cannot convert parameter 2 from '__int64 *' to 'const union _LARGE_INTEGER *' > > > > alors est-ce que ça vient de ma déclaration: > > _LARGE_INTEGER LDuree; > > > > ou d'autre chose? > > rem:je n'avais pas d'erreur de compilation avant. > > > > ------------------------------- > > Réponse au message : > > ------------------------------- > > > > > Mets adresse en 2 eme param de SetWaitableTimer(...). > > > &LDuree > > > BruNews, ciao... > > > > > > > > > ------------------------------- > > > Réponse au message : > > > ------------------------------- > > > > > > > Salut! > > > > > > > > Voici un morceau de prg qui me pose pb.: > > > > > > > > hTempo=CreateWaitableTimer(NULL,true,NULL); > > > > > > > > affich.Format("erreur creer: %d",GetLastError()); > > > > > > > > SetDlgItemText(IDC_msg,affich); > > > > > > > > LDuree.QuadPart=-100000; > > > > > > > > if(!SetWaitableTimer(hTempo,(const union _LARGE_INTEGER *) LDuree.QuadPart,0,NULL,NULL,false)) > > > > { > > > > affich.Format("erreur set: %d",GetLastError()); > > > > SetDlgItemText(IDC_msg2,affich); > > > > } > > > > > > > > CreateWaitableTimer ne renvoie pas d'erreur. > > > > SetWaitableTimer me renvoie l'erreur 998: 998 Invalid access to memory location. ERROR_NOACCESS. > > > > > > > > D'où vient le pb. ? > > > > > > > > merci d'avance. > > > > > > > > > > > > > >
|
|
vendredi 5 septembre 2003 à 14:36:13 |
Re : SetWaitableTimer

BruNews
|
Sleep() est bloquant donc pas equivalent, l'interet de creer un substitut a Sleep() est de ne pas bloquer le prog si on a une fenetre affichee. Pour bien faire placer le code d'attente dans un thread qui envoie un message WM_USER+x a la fenetre pour dire quand attente est finie. BruNews, ciao...
------------------------------- Réponse au message : -------------------------------
> > jm2 > > effectivement, j'avais enlevé (const union _LARGE_INTEGER *) et mis que &LDuree. > > merci pour ton aide BruNews. > > j'ai vu que certains cherchaient à faire un Sleep() sans utiliser la fonction Sleep(). Alors je sais pas si c'est correcte mais j'ai un équivalent ci-dessous: > initialisation: > _LARGE_INTEGER LDuree; > HANDLE hTempo; > > LDuree.QuadPart=-20000000; //durée 2S > > créer le Handle: > hTempo=CreateWaitableTimer(NULL,true,NULL); > > le lancer: > SetWaitableTimer(hTempo,(const union _LARGE_INTEGER *)&LDuree.QuadPart,0,NULL,NULL,false) > > tester: > if(WaitForSingleObject(hTempo,0)==WAIT_OBJECT_0) > ... > > sachant que cette dernière instruction peut attendre ou non suivant le second paramètre. > > Voilà. > encore une fois merci Brunews. > > ------------------------------- > Réponse au message : > ------------------------------- > > > C'est bien ce que j'avais dit de mettre et c'est ce que tu as mis ? > > > > if(!SetWaitableTimer(hTempo,(const union _LARGE_INTEGER *) &LDuree,0,NULL,NULL,false)) > > > > BruNews, ciao... > > > > > > ------------------------------- > > Réponse au message : > > ------------------------------- > > > > > > > > jm2 > > > > > > Poblème quand je met &LDuree: > > > error C2664: 'SetWaitableTimer' : cannot convert parameter 2 from '__int64 *' to 'const union _LARGE_INTEGER *' > > > > > > alors est-ce que ça vient de ma déclaration: > > > _LARGE_INTEGER LDuree; > > > > > > ou d'autre chose? > > > rem:je n'avais pas d'erreur de compilation avant. > > > > > > ------------------------------- > > > Réponse au message : > > > ------------------------------- > > > > > > > Mets adresse en 2 eme param de SetWaitableTimer(...). > > > > &LDuree > > > > BruNews, ciao... > > > > > > > > > > > > ------------------------------- > > > > Réponse au message : > > > > ------------------------------- > > > > > > > > > Salut! > > > > > > > > > > Voici un morceau de prg qui me pose pb.: > > > > > > > > > > hTempo=CreateWaitableTimer(NULL,true,NULL); > > > > > > > > > > affich.Format("erreur creer: %d",GetLastError()); > > > > > > > > > > SetDlgItemText(IDC_msg,affich); > > > > > > > > > > LDuree.QuadPart=-100000; > > > > > > > > > > if(!SetWaitableTimer(hTempo,(const union _LARGE_INTEGER *) LDuree.QuadPart,0,NULL,NULL,false)) > > > > > { > > > > > affich.Format("erreur set: %d",GetLastError()); > > > > > SetDlgItemText(IDC_msg2,affich); > > > > > } > > > > > > > > > > CreateWaitableTimer ne renvoie pas d'erreur. > > > > > SetWaitableTimer me renvoie l'erreur 998: 998 Invalid access to memory location. ERROR_NOACCESS. > > > > > > > > > > D'où vient le pb. ? > > > > > > > > > > merci d'avance. > > > > > > > > > > > > > > > > > > > >
|
|
jeudi 18 septembre 2003 à 15:46:50 |
Re : SetWaitableTimer

jm2
|
jm2
Autre question: On ne peut pas envoyer de message à une dll sans fenêtre?
Dans mon cas c'est une DLL sous VC++ appelée par un prog. VB, donc le message WM_USER+x n'est pas utilisable ici?
Comment fair alors pour avoir un Sleep() qui consomme le moins de temps processeur dans une dll sans fenêtre (sans pompe à message)?
------------------------------- Réponse au message : -------------------------------
> Sleep() est bloquant donc pas equivalent, l'interet de creer un substitut a Sleep() est de ne pas bloquer le prog si on a une fenetre affichee. Pour bien faire placer le code d'attente dans un thread qui envoie un message WM_USER+x a la fenetre pour dire quand attente est finie. > BruNews, ciao... > > > ------------------------------- > Réponse au message : > ------------------------------- > > > > > jm2 > > > > effectivement, j'avais enlevé (const union _LARGE_INTEGER *) et mis que &LDuree. > > > > merci pour ton aide BruNews. > > > > j'ai vu que certains cherchaient à faire un Sleep() sans utiliser la fonction Sleep(). Alors je sais pas si c'est correcte mais j'ai un équivalent ci-dessous: > > initialisation: > > _LARGE_INTEGER LDuree; > > HANDLE hTempo; > > > > LDuree.QuadPart=-20000000; //durée 2S > > > > créer le Handle: > > hTempo=CreateWaitableTimer(NULL,true,NULL); > > > > le lancer: > > SetWaitableTimer(hTempo,(const union _LARGE_INTEGER *)&LDuree.QuadPart,0,NULL,NULL,false) > > > > tester: > > if(WaitForSingleObject(hTempo,0)==WAIT_OBJECT_0) > > ... > > > > sachant que cette dernière instruction peut attendre ou non suivant le second paramètre. > > > > Voilà. > > encore une fois merci Brunews. > > > > ------------------------------- > > Réponse au message : > > ------------------------------- > > > > > C'est bien ce que j'avais dit de mettre et c'est ce que tu as mis ? > > > > > > if(!SetWaitableTimer(hTempo,(const union _LARGE_INTEGER *) &LDuree,0,NULL,NULL,false)) > > > > > > BruNews, ciao... > > > > > > > > > ------------------------------- > > > Réponse au message : > > > ------------------------------- > > > > > > > > > > > jm2 > > > > > > > > Poblème quand je met &LDuree: > > > > error C2664: 'SetWaitableTimer' : cannot convert parameter 2 from '__int64 *' to 'const union _LARGE_INTEGER *' > > > > > > > > alors est-ce que ça vient de ma déclaration: > > > > _LARGE_INTEGER LDuree; > > > > > > > > ou d'autre chose? > > > > rem:je n'avais pas d'erreur de compilation avant. > > > > > > > > ------------------------------- > > > > Réponse au message : > > > > ------------------------------- > > > > > > > > > Mets adresse en 2 eme param de SetWaitableTimer(...). > > > > > &LDuree > > > > > BruNews, ciao... > > > > > > > > > > > > > > > ------------------------------- > > > > > Réponse au message : > > > > > ------------------------------- > > > > > > > > > > > Salut! > > > > > > > > > > > > Voici un morceau de prg qui me pose pb.: > > > > > > > > > > > > hTempo=CreateWaitableTimer(NULL,true,NULL); > > > > > > > > > > > > affich.Format("erreur creer: %d",GetLastError()); > > > > > > > > > > > > SetDlgItemText(IDC_msg,affich); > > > > > > > > > > > > LDuree.QuadPart=-100000; > > > > > > > > > > > > if(!SetWaitableTimer(hTempo,(const union _LARGE_INTEGER *) LDuree.QuadPart,0,NULL,NULL,false)) > > > > > > { > > > > > > affich.Format("erreur set: %d",GetLastError()); > > > > > > SetDlgItemText(IDC_msg2,affich); > > > > > > } > > > > > > > > > > > > CreateWaitableTimer ne renvoie pas d'erreur. > > > > > > SetWaitableTimer me renvoie l'erreur 998: 998 Invalid access to memory location. ERROR_NOACCESS. > > > > > > > > > > > > D'où vient le pb. ? > > > > > > > > > > > > merci d'avance. > > > > > > > > > > > > > > > > > > > > > > > > > > >
|
|
jeudi 18 septembre 2003 à 16:04:38 |
Re : SetWaitableTimer

BruNews
|
Certes un prog ne communique pas avec une dll par messages, il le fait par les fonctions exportees depuis la dll. Autre methode simple sont les Event avec ResetEvent etc... Tu peux faire un Sleep ainsi: HANDLE hevent = CreateEvent(...); WaitForSingleObject(hevent, 1000); // 1 seconde CloseHandle(hevent); aucune boucle, si tu mets cela dans un thread tu auras une attente non blocante pour vb, a toi de signaler si besoin a vb que attente finie.
BruNews, ciao...
------------------------------- Réponse au message : -------------------------------
> > jm2 > > Autre question: > On ne peut pas envoyer de message à une dll sans fenêtre? > > Dans mon cas c'est une DLL sous VC++ appelée par un prog. VB, donc le message WM_USER+x n'est pas utilisable ici? > > Comment fair alors pour avoir un Sleep() qui consomme le moins de temps processeur dans une dll sans fenêtre (sans pompe à message)? > > > ------------------------------- > Réponse au message : > ------------------------------- > > > Sleep() est bloquant donc pas equivalent, l'interet de creer un substitut a Sleep() est de ne pas bloquer le prog si on a une fenetre affichee. Pour bien faire placer le code d'attente dans un thread qui envoie un message WM_USER+x a la fenetre pour dire quand attente est finie. > > BruNews, ciao... > > > > > > ------------------------------- > > Réponse au message : > > ------------------------------- > > > > > > > > jm2 > > > > > > effectivement, j'avais enlevé (const union _LARGE_INTEGER *) et mis que &LDuree. > > > > > > merci pour ton aide BruNews. > > > > > > j'ai vu que certains cherchaient à faire un Sleep() sans utiliser la fonction Sleep(). Alors je sais pas si c'est correcte mais j'ai un équivalent ci-dessous: > > > initialisation: > > > _LARGE_INTEGER LDuree; > > > HANDLE hTempo; > > > > > > LDuree.QuadPart=-20000000; //durée 2S > > > > > > créer le Handle: > > > hTempo=CreateWaitableTimer(NULL,true,NULL); > > > > > > le lancer: > > > SetWaitableTimer(hTempo,(const union _LARGE_INTEGER *)&LDuree.QuadPart,0,NULL,NULL,false) > > > > > > tester: > > > if(WaitForSingleObject(hTempo,0)==WAIT_OBJECT_0) > > > ... > > > > > > sachant que cette dernière instruction peut attendre ou non suivant le second paramètre. > > > > > > Voilà. > > > encore une fois merci Brunews. > > > > > > ------------------------------- > > > Réponse au message : > > > ------------------------------- > > > > > > > C'est bien ce que j'avais dit de mettre et c'est ce que tu as mis ? > > > > > > > > if(!SetWaitableTimer(hTempo,(const union _LARGE_INTEGER *) &LDuree,0,NULL,NULL,false)) > > > > > > > > BruNews, ciao... > > > > > > > > > > > > ------------------------------- > > > > Réponse au message : > > > > ------------------------------- > > > > > > > > > > > > > > jm2 > > > > > > > > > > Poblème quand je met &LDuree: > > > > > error C2664: 'SetWaitableTimer' : cannot convert parameter 2 from '__int64 *' to 'const union _LARGE_INTEGER *' > > > > > > > > > > alors est-ce que ça vient de ma déclaration: > > > > > _LARGE_INTEGER LDuree; > > > > > > > > > > ou d'autre chose? > > > > > rem:je n'avais pas d'erreur de compilation avant. > > > > > > > > > > ------------------------------- > > > > > Réponse au message : > > > > > ------------------------------- > > > > > > > > > > > Mets adresse en 2 eme param de SetWaitableTimer(...). > > > > > > &LDuree > > > > > > BruNews, ciao... > > > > > > > > > > > > > > > > > > ------------------------------- > > > > > > Réponse au message : > > > > > > ------------------------------- > > > > > > > > > > > > > Salut! > > > > > > > > > > > > > > Voici un morceau de prg qui me pose pb.: > > > > > > > > > > > > > > hTempo=CreateWaitableTimer(NULL,true,NULL); > > > > > > > > > > > > > > affich.Format("erreur creer: %d",GetLastError()); > > > > > > > > > > > > > > SetDlgItemText(IDC_msg,affich); > > > > > > > > > > > > > > LDuree.QuadPart=-100000; > > > > > > > > > > > > > > if(!SetWaitableTimer(hTempo,(const union _LARGE_INTEGER *) LDuree.QuadPart,0,NULL,NULL,false)) > > > > > > > { > > > > > > > affich.Format("erreur set: %d",GetLastError()); > > > > > > > SetDlgItemText(IDC_msg2,affich); > > > > > > > } > > > > > > > > > > > > > > CreateWaitableTimer ne renvoie pas d'erreur. > > > > > > > SetWaitableTimer me renvoie l'erreur 998: 998 Invalid access to memory location. ERROR_NOACCESS. > > > > > > > > > > > > > > D'où vient le pb. ? > > > > > > > > > > > > > > merci d'avance. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
|
|
jeudi 18 septembre 2003 à 17:42:42 |
Re : SetWaitableTimer

jm2
|
jm2 >... a toi de signaler si besoin a vb que attente finie. tu veux dire par retour de fonction ?
merci pour ta réponse.
------------------------------- Réponse au message : -------------------------------
> Certes un prog ne communique pas avec une dll par messages, il le fait par les fonctions exportees depuis la dll. > Autre methode simple sont les Event avec ResetEvent etc... > Tu peux faire un Sleep ainsi: > HANDLE hevent = CreateEvent(...); > WaitForSingleObject(hevent, 1000); // 1 seconde > CloseHandle(hevent); > aucune boucle, si tu mets cela dans un thread tu auras une attente non blocante pour vb, a toi de signaler si besoin a vb que attente finie. > > BruNews, ciao... > > > ------------------------------- > Réponse au message : > ------------------------------- > > > > > jm2 > > > > Autre question: > > On ne peut pas envoyer de message à une dll sans fenêtre? > > > > Dans mon cas c'est une DLL sous VC++ appelée par un prog. VB, donc le message WM_USER+x n'est pas utilisable ici? > > > > Comment fair alors pour avoir un Sleep() qui consomme le moins de temps processeur dans une dll sans fenêtre (sans pompe à message)? > > > > > > ------------------------------- > > Réponse au message : > > ------------------------------- > > > > > Sleep() est bloquant donc pas equivalent, l'interet de creer un substitut a Sleep() est de ne pas bloquer le prog si on a une fenetre affichee. Pour bien faire placer le code d'attente dans un thread qui envoie un message WM_USER+x a la fenetre pour dire quand attente est finie. > > > BruNews, ciao... > > > > > > > > > ------------------------------- > > > Réponse au message : > > > ------------------------------- > > > > > > > > > > > jm2 > > > > > > > > effectivement, j'avais enlevé (const union _LARGE_INTEGER *) et mis que &LDuree. > > > > > > > > merci pour ton aide BruNews. > > > > > > > > j'ai vu que certains cherchaient à faire un Sleep() sans utiliser la fonction Sleep(). Alors je sais pas si c'est correcte mais j'ai un équivalent ci-dessous: > > > > initialisation: > > > > _LARGE_INTEGER LDuree; > > > > HANDLE hTempo; > > > > > > > > LDuree.QuadPart=-20000000; //durée 2S > > > > > > > > créer le Handle: > > > > hTempo=CreateWaitableTimer(NULL,true,NULL); > > > > > > > > le lancer: > > > > SetWaitableTimer(hTempo,(const union _LARGE_INTEGER *)&LDuree.QuadPart,0,NULL,NULL,false) > > > > > > > > tester: > > > > if(WaitForSingleObject(hTempo,0)==WAIT_OBJECT_0) > > > > ... > > > > > > > > sachant que cette dernière instruction peut attendre ou non suivant le second paramètre. > > > > > > > > Voilà. > > > > encore une fois merci Brunews. > > > > > > > > ------------------------------- > > > > Réponse au message : > > > > ------------------------------- > > > > > > > > > C'est bien ce que j'avais dit de mettre et c'est ce que tu as mis ? > > > > > > > > > > if(!SetWaitableTimer(hTempo,(const union _LARGE_INTEGER *) &LDuree,0,NULL,NULL,false)) > > > > > > > > > > BruNews, ciao... > > > > > > > > > > > > > > > ------------------------------- > > > > > Réponse au message : > > > > > ------------------------------- > > > > > > > > > > > > > > > > > jm2 > > > > > > > > > > > > Poblème quand je met &LDuree: > > > > > > error C2664: 'SetWaitableTimer' : cannot convert parameter 2 from '__int64 *' to 'const union _LARGE_INTEGER *' > > > > > > > > > > > > alors est-ce que ça vient de ma déclaration: > > > > > > _LARGE_INTEGER LDuree; > > > > > > > > > > > > ou d'autre chose? > > > > > > rem:je n'avais pas d'erreur de compilation avant. > > > > > > > > > > > > ------------------------------- > > > > > > Réponse au message : > > > > > > ------------------------------- > > > > > > > > > > > > > Mets adresse en 2 eme param de SetWaitableTimer(...). > > > > > > > &LDuree > > > > > > > BruNews, ciao... > > > > > > > > > > > > > > > > > > > > > ------------------------------- > > > > > > > Réponse au message : > > > > > > > ------------------------------- > > > > > > > > > > > > > > > Salut! > > > > > > > > > > > > > > > > Voici un morceau de prg qui me pose pb.: > > > > > > > > > > > > > > > > hTempo=CreateWaitableTimer(NULL,true,NULL); > > > > > > > > > > > > > > > > affich.Format("erreur creer: %d",GetLastError()); > > > > > > > > > > > > > > > > SetDlgItemText(IDC_msg,affich); > > > > > > > > > > > > > > > > LDuree.QuadPart=-100000; > > > > > > > > > > > > > > > > if(!SetWaitableTimer(hTempo,(const union _LARGE_INTEGER *) LDuree.QuadPart,0,NULL,NULL,false)) > > > > > > > > { > > > > > > > > affich.Format("erreur set: %d",GetLastError()); > > > > > > > > SetDlgItemText(IDC_msg2,affich); > > > > > > > > } > > > > > > > > > > > > > > > > CreateWaitableTimer ne renvoie pas d'erreur. > > > > > > > > SetWaitableTimer me renvoie l'erreur 998: 998 Invalid access to memory location. ERROR_NOACCESS. > > > > > > > > > > > > > > > > D'où vient le pb. ? > > > > > > > > > > > > > > > > merci d'avance. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
|
|
jeudi 18 septembre 2003 à 17:46:24 |
Re : SetWaitableTimer

BruNews
|
non, si tu mets dans un thread pour du non bloquant, ta fonction retourne illico. Par contre le thread PostMessage(...) a une fenetre vb pour lui indiquer fin d'attente. BruNews, ciao...
------------------------------- Réponse au message : -------------------------------
> > jm2 > >... a toi de signaler si besoin a vb que attente finie. > tu veux dire par retour de fonction ? > > merci pour ta réponse. > > ------------------------------- > Réponse au message : > ------------------------------- > > > Certes un prog ne communique pas avec une dll par messages, il le fait par les fonctions exportees depuis la dll. > > Autre methode simple sont les Event avec ResetEvent etc... > > Tu peux faire un Sleep ainsi: > > HANDLE hevent = CreateEvent(...); > > WaitForSingleObject(hevent, 1000); // 1 seconde > > CloseHandle(hevent); > > aucune boucle, si tu mets cela dans un thread tu auras une attente non blocante pour vb, a toi de signaler si besoin a vb que attente finie. > > > > BruNews, ciao... > > > > > > ------------------------------- > > Réponse au message : > > ------------------------------- > > > > > > > > jm2 > > > > > > Autre question: > > > On ne peut pas envoyer de message à une dll sans fenêtre? > > > > > > Dans mon cas c'est une DLL sous VC++ appelée par un prog. VB, donc le message WM_USER+x n'est pas utilisable ici? > > > > > > Comment fair alors pour avoir un Sleep() qui consomme le moins de temps processeur dans une dll sans fenêtre (sans pompe à message)? > > > > > > > > > ------------------------------- > > > Réponse au message : > > > ------------------------------- > > > > > > > Sleep() est bloquant donc pas equivalent, l'interet de creer un substitut a Sleep() est de ne pas bloquer le prog si on a une fenetre affichee. Pour bien faire placer le code d'attente dans un thread qui envoie un message WM_USER+x a la fenetre pour dire quand attente est finie. > > > > BruNews, ciao... > > > > > > > > > > > > ------------------------------- > > > > Réponse au message : > > > > ------------------------------- > > > > > > > > > > > > > > jm2 > > > > > > > > > > effectivement, j'avais enlevé (const union _LARGE_INTEGER *) et mis que &LDuree. > > > > > > > > > > merci pour ton aide BruNews. > > > > > > > > > > j'ai vu que certains cherchaient à faire un Sleep() sans utiliser la fonction Sleep(). Alors je sais pas si c'est correcte mais j'ai un équivalent ci-dessous: > > > > > initialisation: > > > > > _LARGE_INTEGER LDuree; > > > > > HANDLE hTempo; > > > > > > > > > > LDuree.QuadPart=-20000000; //durée 2S > > > > > > > > > > créer le Handle: > > > > > hTempo=CreateWaitableTimer(NULL,true,NULL); > > > > > > > > > > le lancer: > > > > > SetWaitableTimer(hTempo,(const union _LARGE_INTEGER *)&LDuree.QuadPart,0,NULL,NULL,false) > > > > > > > > > > tester: > > > > > if(WaitForSingleObject(hTempo,0)==WAIT_OBJECT_0) > > > > > ... > > > > > > > > > > sachant que cette dernière instruction peut attendre ou non suivant le second paramètre. > > > > > > > > > > Voilà. > > > > > encore une fois merci Brunews. > > > > > > > > > > ------------------------------- > > > > > Réponse au message : > > > > > ------------------------------- > > > > > > > > > > > C'est bien ce que j'avais dit de mettre et c'est ce que tu as mis ? > > > > > > > > > > > > if(!SetWaitableTimer(hTempo,(const union _LARGE_INTEGER *) &LDuree,0,NULL,NULL,false)) > > > > > > > > > > > > BruNews, ciao... > > > > > > > > > > > > > > > > > > ------------------------------- > > > > > > Réponse au message : > > > > > > ------------------------------- > > > > > > > > > > > > > > > > > > > > jm2 > > > > > > > > > > > > > > Poblème quand je met &LDuree: > > > > > > > error C2664: 'SetWaitableTimer' : cannot convert parameter 2 from '__int64 *' to 'const union _LARGE_INTEGER *' > > > > > > > > > > > > > > alors est-ce que ça vient de ma déclaration: > > > > > > > _LARGE_INTEGER LDuree; > > > > > > > > > > > > > > ou d'autre chose? > > > > > > > rem:je n'avais pas d'erreur de compilation avant. > > > > > > > > > > > > > > ------------------------------- > > > > > > > Réponse au message : > > > > > > > ------------------------------- > > > > > > > > > > > > > > > Mets adresse en 2 eme param de SetWaitableTimer(...). > > > > > > > > &LDuree > > > > > > > > BruNews, ciao... > > > > > > > > > > > > > > > > > > > > > > > > ------------------------------- > > > > > > > > Réponse au message : > > > > > > > > ------------------------------- > > > > > > > > > > > > > > > > > Salut! > > > > > > > > > > > > > > > > > > Voici un morceau de prg qui me pose pb.: > > > > > > > > > > > > > > > > > > hTempo=CreateWaitableTimer(NULL,true,NULL); > > > > > > > > > > > > > > > > > > affich.Format("erreur creer: %d",GetLastError()); > > > > > > > > > > > > > > > > > > SetDlgItemText(IDC_msg,affich); > > > > > > > > > > > > > > > > > > LDuree.QuadPart=-100000; > > > > > > > > > > > > > > > > > > if(!SetWaitableTimer(hTempo,(const union _LARGE_INTEGER *) LDuree.QuadPart,0,NULL,NULL,false)) > > > > > > > > > { > > > > > > > > > affich.Format("erreur set: %d",GetLastError()); > > > > > > > > > SetDlgItemText(IDC_msg2,affich); > > > > > > > > > } > > > > > > > > > > > > > > > > > > CreateWaitableTimer ne renvoie pas d'erreur. > > > > > > > > > SetWaitableTimer me renvoie l'erreur 998: 998 Invalid access to memory location. ERROR_NOACCESS. > > > > > > > > > > > > > > > > > > D'où vient le pb. ? > > > > > > > > > > > > > > > > > > merci d'avance. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
|
|
Cette discussion est classée dans : pb, erreur, affich, setwaitabletimer, htempo
Répondre à ce message
Sujets en rapport avec ce message
pb avec conio je cherche l'erreur [ par kin ]
Calculatrice (postfixé) : pb a l'execution [ par filipuce ]
Bonjourvoila g fé une petite calculatrice (+,-,*,/ avec parentheses)sous linux pas de probleme, compilation et execution.mais en retouranant sous wind
pb tm redefinition [ par Kyb ]
Bonjour, je cherche ¨¤ creer un server web sous winCE et voici l'erreur que j'obtient en compilant sous Visual Studio:Erreur 1 error C2011: 'tm' :
pb socket sous c++builder5 [ par devilralf ]
voici mon code de la socket client sous builder5 : Client1->Address = "192.168.0.2" ; Client1->Port = 5500 ; Client1->Open();le probleme c que si l
PB avec msg d erreur [ par Rei91 ]
Bonjour, je n'arrive pas a compiler un prg suite a ce message d erreur :[linker error] undefined reference to glutlnit.JE dois avoir une 20 aine de li
Pb FreeLibrary [ par kidpigeyre ]
Mon pb est le suivant lors de mon utilisation de :FreeLibrary(modules[n].handle)mon logiciel plante en accusant sauvagement kernell32.dll (erreur typi
Erreur send() [ par DJeS ]
avec winsock2 sous devc++, j'obtiens une erreur lors de l'envoi d'un msg avec ma socket en mode connecté stream.en affichant le SOCKET_ERROR avec cout
AIDEZ MOI!!! [ par W@$h! ]
Voila mon pb :Dans 1 de mes prog, je créé un fichier temporaire qui recopie caractére par caractere un fichier :...FILE *fichier;FILE *temp;char Carac
pb de passage en mode promiscuous [ par pistoleros ]
bien le bonjour a tous ! bon ben je sais que ca doit etre une question assez conne mais comment on fait pour passer en mode promiscuous... le but du j
PB d hook clavier et variable de control [ par alanBZH29 ]
Salut a tous j debute ss VC6.0++ et jai un petit pb, jai utilisé un hook clavier pr recupere les touches appuyé sur une boite d dialoge ca ca marche y
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Forum
MATLAB PROGRAMME MATLAB PROGRAMME par wahab1087
Cliquez pour lire la suite par wahab1087 RGB2GRAYRGB2GRAY par musa18
Cliquez pour lire la suite par musa18
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|