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

Soyez le premier à donner votre avis sur cette source.

Vue 8 115 fois - Téléchargée 695 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

Messages postés
51
Date d'inscription
samedi 20 novembre 2010
Statut
Membre
Dernière intervention
27 décembre 2014

Salut,

Vraiment original, sûr que tu as du y passer du temps !!!

Par contre, par défaut, afficher la priorité du process ne me semble pas forcément intéressant, je pense que la RAM+SWAP l'est plus, ce n'est qu'un goût personnel mais vu que tes colonnes ID et parent ID sont très larges par rapport à la taille maxi du chiffre de l'ID, il y a de la place pour cette colonne RAM+SWAP supplémentaire.

Eventuellement, tu pourrais aussi ajouter devant le nom (ou en changeant la couleur) du process une indication pour dire si le process est un service ou pas.

Autre idée : la gestion des touches de fonction pour trier les colonnes, F1=colonne1 F2=colonne2, on appuie une fois ça trie dans un sens, on appuie une autre fois, l'ordre de tri est inversé.

Pour la "vrai" taskmanager, quand CTRL+ALT+SUPPR pose problème, je tente CTRL+SHIFT+ESC et très rare que ça ne marche pas, d'ailleurs maintenant j'utilise toujours le second jeu de touches plutôt que le premier car c'est plus rapide, mais il est vrai que lrosque tu as un OpenGL ou DirectX ton outil dépanne.

En tout cas bon boulot, je garde ton source dans un coin pour le jour où j'aurai besoin de faire une appli en mode texte !

Dans le genre mais en C, j'utilise Midnight Commander qui est un file manager "norton like" mais qui sait gérer les noms longs et comme il existe aussi sous Linux, ça ma fait un seul file manager en mode console à utiliser.

a+
Messages postés
152
Date d'inscription
lundi 28 juillet 2003
Statut
Membre
Dernière intervention
29 avril 2009

Barbichette : "A priori, essayer la valeur "+1" pour vista... (avec réserve)"

c'est une valeur DWORD donc a par du numerique (Hexa,deci) +1 peut pas etre entré et mettre 1 sous vista change rien j'ai tester :s enfin pas grave je le garde quand même (suis en multi os)
Messages postés
220
Date d'inscription
lundi 30 octobre 2000
Statut
Membre
Dernière intervention
15 juillet 2013

Pour le mode plein écran de la console,
je rapelle vite fait qu'il y a la clé
HKEY CURRENT USER\Console\FullScreen
Soit 0 : en fenêtre
Soit 1 : En plein écran
A priori, essayer la valeur "+1" pour vista... (avec réserve)
Ceci évite une ouverture en petit pendant une fraction de seconde pour une fenêtre plein écran.

Sinon, un 10/10 s'impose vu le travail, a défaut de pouvoir mettre 12/10...

Barbichette
Messages postés
49
Date d'inscription
samedi 26 janvier 2008
Statut
Membre
Dernière intervention
9 mars 2011

Bonjour Forman
Je me demander si tu peux nous réaliser un explorateur Windows en 3D
Ca serait génial
@+
Messages postés
600
Date d'inscription
samedi 8 juin 2002
Statut
Membre
Dernière intervention
6 avril 2010
1
Bacterius : je ne connais pas d'autre moyen pour le plein écran. Peut-être dans l'onglet "compatibilité" du programme (dans les propriétés du fichier sous XP)? En tout cas chez moi, la console fenêtrée est tout juste visible une fraction de secondes avant le passage en plein écran.

En ce qui concerne les informations données par le taskmanager, il est possible d'en obtenir encore plus... mais dans ce cas il faut se limiter à XP exclusivement (pas NT donc), la plupart des API supplémentaires l'exigent (GetProcessHandleCount, etc...). Je viens de me rendre compte qu'on peut aussi donner des informations sur l'I/O du process (avec GetProcessIoCounters) à partir de NT. Je vais sûrement faire une mise à jour avec.

Il manquerait aussi qqchose pour mesurer la consommation en pourcentage de resources du CPU. Mais je ne sais pas le faire de manière fiable à la fois sous XP et NT. Peut-être en utilisant l'unité AdCpuUsage (http://www.aldyn.ru/products/cpu_usage/). Idem pour l'occupation de la RAM.

Amine : merci, je plaisantais bien sûr :-)
Afficher les 22 commentaires

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.