begin process at 2012 05 29 06:33:56
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Systeme

 > 

état d'une tâche


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

état d'une tâche

lundi 7 février 2005 à 20:42:02 | état d'une tâche

hrp

Hello,

comment récupérer l'état d'une tâche en cours d'exécution par exemple "En cours d'exécution" ou "sans réponse"?

merci pour votre aide

huw
lundi 7 février 2005 à 22:23:32 | Re : état d'une tâche

BruNews

Administrateur CodeS-SourceS
Si le prog a une fenêtre, tu peux tester avec SendMessageTimeout().
Sinon ben faudra y réfléchir.

ciao...
BruNews, MVP VC++
mardi 8 février 2005 à 10:03:22 | Re : état d'une tâche

hrp

ok, j'ai regarder dans la sdk windows ce que fait cette fonciton:
---------------------------------
The SendMessageTimeout function sends the specified message to a window or windows. The function calls the window procedure for the specified window and, if the specified window belongs to a different thread, does not return until the window procedure has processed the message or the specified time-out period has elapsed. If the window receiving the message belongs to the same queue as the current thread, the window procedure is called directly - the time-out value is ignored.

LRESULT SendMessageTimeout(

    HWND hWnd, // handle of destination window
    UINT Msg, // message to send
    WPARAM wParam, // first message parameter
    LPARAM lParam, // second message parameter
    UINT fuFlags, // how to send the message
    UINT uTimeout, // time-out duration
    LPDWORD lpdwResult  // return value for synchronous call
   ); 
 

Parameters

hWnd

Identifies the window whose window procedure will receive the message. If this parameter is HWND_TOPMOST, the message is sent to all top-level windows in the system, including disabled or invisible unowned windows.

Msg

Specifies the message to be sent.

wParam

Specifies additional message-specific information.

lParam

Specifies additional message-specific information.

fuFlags

Specifies how to send the message. This parameter can be a combination of the following values:

Value Meaning
SMTO_ABORTIFHUNG Returns without waiting for the time-out period to elapse if the receiving process appears to be in a "hung" state.
SMTO_BLOCK Prevents the calling thread from processing any other requests until the function returns.
SMTO_NORMAL The calling thread is not prevented from processing other requests while waiting for the function to return.
 

uTimeout

Specifies the duration, in milliseconds, of the time-out period.

lpdwResult

Specifies the result of the message processing and depends on the message sent.

 

Return Values

If the function succeeds, the return value is TRUE.
If the function fails, the return value is FALSE. To get extended error information, call GetLastError.
--------------------------------------
mon but, c'est de savoir si ma fenêtre internet explorer fonctionne encore ("en cours d'exécution") ou si son proccessus est bloqué ("sans réponse"). pour réaliser cela que dois-je passer en argument à la fonction "SendMessageTimeout", notement les arguments:
-UINT Msg
-WPARAM wParam
-LPARAM lParam

merci.

huw

mardi 8 février 2005 à 13:00:50 | Re : état d'une tâche

BruNews

Administrateur CodeS-SourceS
Tu envoies nimporte quoi du moment que ça ne provoque pas une cata, fais quelques tests, du genre:
DWORD r;
if(!SendMessageTimeout(hwnd,WM_COMMAND,12, 0,SMTO_ABORTIFHUNG,1000,&r) {
  if(!GetLastError()) ProgEstBloque;
}

WM_COMMAND,12,0
sont totalement arbitraires, teste ce qui va bon dans ton cas.

ciao...
BruNews, MVP VC++
mardi 8 février 2005 à 13:30:30 | Re : état d'une tâche

hrp

j'ai essayé simplement comme ça et ça semble aussi fonctionner:

DWORD r;
if(!SendMessageTimeout(hwnd,NULL,NULL, NULL,SMTO_ABORTIFHUNG,5000,&r) {
   //Prog est bloqué
}

merci pour ton aide.

huw
mardi 8 février 2005 à 13:38:10 | Re : état d'une tâche

BruNews

Administrateur CodeS-SourceS
Que ça semble n'est pas toujours suffisant, vérifie toujours que GetLastError() retourne bien zéro pour être sur du blocage.

ciao...
BruNews, MVP VC++
mardi 8 février 2005 à 20:34:46 | Re : état d'une tâche

ShareVB

salut,

le guideline de Microsoft tend à dire : un timeout de 5 secondes et le message WM_NULL envoyé (avec SendMessageTimeout)...mais il y a un problème (je ne sais pas avec du C mais je l'ai rencontré avec VB)...

Si l'application ne répond pas, SendMessageTimeout ne renvoie la main que dans 5 secondes pendant lesquelles le thread qui a appelé SendMessageTimeout ne répond pas...et si c'est celui d'une fenêtre, c'est embettant...

il existe les fonctions IsHungAppWindow (pour NT/2K:XP) et IsHungThread (pour 9x) qui rendent (en principe) immédiatement la main même en cas de "hung"...

[ Lien ]

ShareVB
mardi 8 février 2005 à 20:52:48 | Re : état d'une tâche

BruNews

Administrateur CodeS-SourceS
Cette fonction fait bien son boulot actuellement mais MSDN est sans ambiguité sur son avenir:
It is recommended that you do not use it in new programs because it might be altered or unavailable in subsequent versions of Windows.

ciao...
BruNews, MVP VC++


Cette discussion est classée dans : cours, état, exécution, tâche


Répondre à ce message

Sujets en rapport avec ce message

Est-ce possible de créer une variable en cours d'exécution? [ par Hiperion ] j'aimerais savoir si c'est possible de créer une variable que l'utilisateur va me donner le nom durant que le programme va fonctionner, si oui, donner Modifier un fichier .exe en cours d'exécution [ par JonathanHawke ] Bonjour,Je souhaîte écrire un programme qui est capable de se modier lui-même et de mettre à jour son fichier .exe correspondant. Tout se passe bien s Traduire Algo en langage C ... [ par theo3006 ] Si quelqu'un arrive a me traduire le pseudo code ci-dessous en langage C je lui serai tres reconnaissant ! <img src="http://www.clubic.com/forum/styl creer logiciel [ par laurentr974 ] monsieur je suis à la r formater un cdrom avec c++ [ par mniajnaa ] salut tout le monde j'ai une fonction qui efface un cd rom avec l'api DeviceIoControl de la technologie SPTI sans aucune erreur ,cependant la dur Comment faire pour changer l'icône de ma fenêtre au cours de son execution en programmation C API Win32 ? [ par ndubien ] Bonjour,Je cherche à savoir comment faire pour changer l'icône de ma fenêtre API Win32 au cours de son execution. J'ajoute une "contrainte" supplément Comment créer une barre d'état dans un dialog based [ par myckie ] Bonjour, voilà j'ai créer un projet qui est déjas assez conséquent et je voudrai rajouter une barre d'état dans ma boite de dialogue. Pour cela j'ai c DLL windows [ par zoomeo ] Salut les gars!Je dois bosser sur un prog et j'aimerai avoir des precisions car c'est un peu confu tout ca pour moi...En gros, pour mon programme, je [GTK] récupérer état d'un checkbutton [ par electron159 ] Bonjour,J'ai cheché un peu partout et je n'ai pas trouvé l'option pour récupérer l'état d'un CHECKBUTTON (check ou pas check). Savez-vous comment fair Empécher double exécution [ par aurelien2723 ] Salut!Je fais une petite GUI.J'ai donc un .exe, mais j'aimerais qu'il soit impossible de l'exécuter deux fois.Est-ce possible?Je pensais par exemple à


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,484 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales