Task manager en mode texte (émulation mode 03h)

Soyez le premier à donner votre avis sur cette source.

Vue 7 922 fois - Téléchargée 646 fois

Description

Ca y est je l'ai fait, j'ai posté un taskmanager de plus sur le site! :)

À la différence des autres celui-ci fonctionne avec une console en plein écran. L'intérêt c'est de pouvoir avoir les fonctionnalités du taskmanager dans les cas extrêmes où l'interface graphique est inutilisable, par exemple lors de certains plantages de programmes qui utilisent OpenGL ou DirectX, de façon à pouvoir tuer le processus fautif (ce qu'on ne peut en général pas faire si le vrai TaskManager n'est pas visible!). Dans ces cas-là le mien devrait rester fonctionnel, puisqu'il utilise le mode texte de la carte graphique (auquel on peut accéder manuellement avec Alt+Enter dans les programmes console "normaux"). L'idée n'est pas de moi, quelqu'un a déjà commencé un projet semblable en C sans toutefois le finir semble-t-il.

J'ai programmé pour l'occasion un système de composants et de contrôles similaire à celui, usuel, de Delphi. Les fenêtres sont dessinées en utilisant les (vastes :-) possibilités graphiques du mode 16 couleur et de ses caractères bizarres. D'ailleurs la capture ayant été réalisée en mode fenêtrée, certains caractères n'apparaissent pas comme ils devraient (par exemple les flèches des trackbars). Les événements souris et claviers sont gérés de la même façon qu'avec les "vraies" fenêtres de Delphi.

La librairie de composants fournis ne s'installe pas, et n'est pas tout à fait terminée, mais pour ce TaskManager la version actuelle est amplement suffisante. En particulier il manquerait encore:
-les menus
-des contrôles d'édition de texte
-un designer pour l'intégrer à Delphi
-une relecture attentive du code car il y a sûrement des configurations de fenêtres non prévues qui peuvent planter. En particulier il est possible que parfois on ne puisse pas quitter le programme (dans ce cas faire Ctrl+Pause ou Ctrl+C) à cause d'un deadlock. Merci de me prévenir si jamais vous constatez ce problème.

Les propriétés des composants sont définies à la main, l'avantage c'est que l'exe est petit. Si vous souhaitez utiliser les composants pour écrire d'autres programmes en mode texte vous pouvez me demander de l'aide, vu qu'il n'y a aucun commentaire pour l'instant.

Source / Exemple :


program taskmgr;

{$APPTYPE CONSOLE}

uses
  SysUtils,
  Windows,
  Classes,
  ConsoleForms,
  MainFormUnit in 'MainFormUnit.pas',
  InfoFormUnit in 'InfoFormUnit.pas',
  PriorityFormUnit in 'PriorityFormUnit.pas',
  AffinityFormUnit in 'AffinityFormUnit.pas';

begin
  Application.CreateForm(TMainForm, MainForm);
  Application.CreateForm(TPriorityForm, PriorityForm);
  Application.CreateForm(TAffinityForm, AffinityForm);
  Application.CreateForm(TInfoForm, InfoForm);
  Application.Run;
end.

Conclusion :


Pour les feignants une version compilée (taskmgr.ex_) est fournie dans le zip, à renommer en .exe. Le programme nécessite au moins Win NT ou XP.

À faire à vos risques et périls: vous pouvez remplacer le programme usuel taskmgr.exe situé dans C:\Windows\System32 par celui-ci si ça vous est utile. Personnellement je l'ai fait. Mais dans ce cas NE PAS OUBLIER DE FAIRE UN BACKUP DE L'ANCIEN AU CAS OU...

Comme toujours, commentaires constructifs bienvenus.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

djmmix
Messages postés
152
Date d'inscription
lundi 28 juillet 2003
Statut
Membre
Dernière intervention
29 avril 2009
-
salut pas mal ton application en mode console sa a du te prendre pas mal de temp pour le design je pence .

j'ai relevé quelque bug ( ou pas ^^ ) : on ne peut pas quittez l'application lancer en mode fenêtre quand on clique sur exit ,normal ???

quand on click sur affinity ,priority et info il retourne une erreur code 5 ,normal aussi ???

sinon en mode fenetre on ne peut pas faire un scrolling sans que sa rafrachisse et le trackbar ce remet au debut des processus (d'ailleur c'est agacant ).

sinon comme je disai au debut sa peut servir quand même et très compact en attendant des mise à jour je le garde sous le coude :p (je noterai une fois que tu l'aura complété ^^ )
djmmix
Messages postés
152
Date d'inscription
lundi 28 juillet 2003
Statut
Membre
Dernière intervention
29 avril 2009
-
bon je t'est retoucher le code pour la fermeture de l'application quand on clique sur exit remplace Close; par Application.Terminate; sa supprimera le bug que j'ai rencontrer :p
cs_Forman
Messages postés
663
Date d'inscription
samedi 8 juin 2002
Statut
Membre
Dernière intervention
6 avril 2010
1 -
Salut djmmix,

en mode fenêtré les événements de la souris ne sont pas transmis par Windows à l'application (en tout cas je n'ai trouvé nulle part comment les rediriger, même l'API SetConsoleMode ne fait rien). J'imagine que c'est pour qu'on puisse copier le texte de la console avec la souris. Seul le clavier est transmis.

L'erreur code 5 c'est je crois quand tu essaies d'accéder à un processus pour lequel tu n'as pas les droits suffisants.
cs_Forman
Messages postés
663
Date d'inscription
samedi 8 juin 2002
Statut
Membre
Dernière intervention
6 avril 2010
1 -
De quel bug tu veux parler pour le bouton Exit? Est-ce que le prog se bloque et on ne peut plus rien faire?

Quand on fait Close sur la form principale ça appelle MainForm.Destroy, donc Application.Notification (car auparavant il y a eu MainForm.FreeNotification(Application)) qui elle-même appelle Application.Terminate. Donc en théorie ça revient au même.

Parfois le prog se bloque quand on quitte, je pense que c'est dû à une situation de deadlock avec le thread du timer. Il faudrait que je relise en détail pour vérifier.
djmmix
Messages postés
152
Date d'inscription
lundi 28 juillet 2003
Statut
Membre
Dernière intervention
29 avril 2009
-
un petit PS je suis sous vista avec tout les droit ^^

pour exit en faite l'application fige (autre raison de vista aussi ^^' qui peu etre possible)

et pour le code 5 c'est exact ce son les droits j'avai tester sous des service win :s (les service win par exemple )

par contre l effet d'asenceur même au clavier le fait toujour je pence que sa doit être le timer qui doit rafraichir ta listbox qui doit etre en cause.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.