begin process at 2010 02 10 12:04:05
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Système

 > TASK MANAGER EN MODE TEXTE (ÉMULATION MODE 03H)

TASK MANAGER EN MODE TEXTE (ÉMULATION MODE 03H)


 Information sur la source

Note :
9,33 / 10 - par 3 personnes
9,33 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Système Classé sous :console, taskmanager, mode texte, 03h Niveau :Initié Date de création :09/09/2008 Date de mise à jour :09/09/2008 15:47:10 Vu / téléchargé :3 772 / 316

Auteur : Forman

Ecrire un message privé
Commentaire sur cette source (22)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
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

  • 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.
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.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

09 septembre 2008 15:47:11 :
Petite correction dans ConsoleLists.pas pour éviter la réinitialisation des ascenseurs lorsqu'on met à jour la liste (procedure TListColumn.UpdateOwner et TListItem.UpdateOwner).

 Sources du même auteur

Source avec Zip TRADUCTION DE DOKAN EN DELPHI: UN DRIVER "USER-MODE" POUR DI...
Source avec Zip Source avec une capture CHRONOMÈTRE POUR LE THÉ
Source avec Zip UTILITAIRE POUR LANCER UN PROGRAMME DEPUIS UN AUTRE COMPTE (...
Source avec Zip Source avec une capture DÉMONSTRATION DE LA GESTION DES OBJETS EN MÉMOIRE PAR DELPHI...
Source avec Zip COMPOSANT RUNONCE: AUTORISER UN SEUL LANCEMENT D'UNE APPLICA...

 Sources de la même categorie

Source avec Zip Source avec une capture GLIBWMI VCL COMPONENT LIBRARY 1.6B par Neftali
Source avec Zip Source avec une capture UNITÉ DE SUPPORT VISTA par Bacterius
Source avec Zip Source avec une capture NETTOYEUR AUTOMATIQUE DE VOS DISQUES par diglas
Source avec Zip Source avec une capture LES VALUE'S FADERS par blueperfect
Source avec Zip Source avec une capture COUNTERS, UNITÉ DE CALCUL DE PERFORMANCE par Bacterius

 Sources en rapport avec celle ci

BLOQUER LE TASKMGR SANS CLÉ DE REGISTRE par craftsystem
Source avec Zip Source avec une capture FTP CONSOLE par candid
Source avec Zip Source avec une capture UN PETIT TASKMANAGER par swadfish
Source avec Zip CHAÎNE DE MESURE ET TRAITEMENTS par mounjetado
Source avec Zip CONSOLE INTERBASE FIREBIRD par simonpelloquin

Commentaires et avis

Commentaire de djmmix le 09/09/2008 13:32:54

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é ^^ )

Commentaire de djmmix le 09/09/2008 13:39:30

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

Commentaire de Forman le 09/09/2008 13:45:39

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.

Commentaire de Forman le 09/09/2008 13:50:53

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.

Commentaire de djmmix le 09/09/2008 15:15:21

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.

Commentaire de Forman le 09/09/2008 15:30:14

L'ascenseur je suppose que c'est lié à Vista, chez moi ça marche très bien (Win XP, mode fenêtré ou plein écran).

Je suppose que sous Vista la fenêtre de la console ne s'adapte pas à la taille totale du buffer, donc qu'il y a un ascenseur vertical (un vrai, gérés par Windows) qui apparait et qui est réinitialisé à chaque fois que la console est réaffichée, c'est à dire toutes les secondes à cause du timer.

Il faudrait voir ce qui se passe avec la fonction TApplication.AdjustScreenBuffer, qui est sensée réajuster la fenêtre console. Si tu remplaces la définition actuelle:
procedure TApplication.ProcessWindowEvent;
begin
  if FBufferSizeUpdateCount=0 then begin
    AdjustScreenBuffer(True);
    Invalidate;
  end;
end;
par celle-ci:
procedure TApplication.ProcessWindowEvent;
begin
  if FBufferSizeUpdateCount=0 then begin
    AdjustScreenBuffer(False);
    Invalidate;
  end;
end;
il se passe quoi? Est ce que l'ascenseur vertical disparait?

Une autre question sous Vista (je n'ai que XP pour tester): est-ce qu'au démarrage le prog se met bien tout seul en plain écran, ou il faut faire ALT+ENTER?

Merci pour le feedback en tout cas.

Commentaire de Forman le 09/09/2008 15:48:36

J'ai finalement compris ce que tu voulais dire pour les ascenseurs (vu que j'ai en général peu de process lancés en même temps je ne m'en étais encore jamais rendu compte :). C'est corrigé avec la nouvelle version je crois.

Commentaire de djmmix le 09/09/2008 18:13:52

ha oui la sa marche nikel :)

Commentaire de djmmix le 09/09/2008 18:14:52 10/10

je te note maintenant :) marche super bien ^^ 10/10

Commentaire de djmmix le 09/09/2008 18:16:24

ha une petite chose pour moi je traduit les libellé en francais  ^^ EX: Affinity = Affinité ^^

Commentaire de djmmix le 09/09/2008 18:18:44

"Une autre question sous Vista (je n'ai que XP pour tester): est-ce qu'au démarrage le prog se met bien tout seul en plain écran, ou il faut faire ALT+ENTER?"

non sous vista le mode console est fenêtré il ne marche pas le plein ecran j'ai testé différente conbinaison.

PS: désolé des multitudes de commentaire :s

Commentaire de Forman le 09/09/2008 18:37:38

Peut-être que le mode texte a été définitivement abandonné sous Vista. Et en faisant Alt+Enter, ça ne le fait pas?

Pour les commentaires je préfère trop que pas assez!     :)

Merci pour la note en tout cas.

Commentaire de djmmix le 09/09/2008 21:41:39

non il dit que c'est déactiver sous vista ^^ même en ouvrant la console c'est pareil sa a du être abandonner je pence aussi

Commentaire de aminedelphi le 12/09/2008 18:00:36

Bonjour
On peut dire que les programmeur de ton genre sont rare a notre époque et même très rare a l'échelle de notre planète voire même a l'échelle de notre galaxie. !!!
Bonne continuation.
@+      

Commentaire de Forman le 13/09/2008 04:47:34

Bonjour Amine,

je dois prendre ça comme un compliment ou non? (j'ai un peu l'impression d'être un fossile là...)     :-)

Commentaire de Bacterius le 13/09/2008 10:29:24

Lol génial, il me donne pas mal d'informations (plus que celui de Windows en tout cas), pas facile de contrôler la souris (surtout sans tapis, mais là tu n'y es pour rien ^^), mais ça donne un vrai côté MS-DOS alerte critique ^^
Et puis ça montre comment faire un programme sans fiche, fonctionnel, et comment vraiment gérer une console, écrire dedans, etc ...
Petit regret cependant, la console apparaît en petit au démarrage, puis ensuite en grand. J'avais eu ce problème sur mon solitaire (mode /debug), il doit exister un moyen de la faire apparaître en grand directement ...

Cordialement, Bacterius !

Commentaire de aminedelphi le 13/09/2008 14:22:45 10/10

Bien sure que c'est un compliment.

Commentaire de Forman le 13/09/2008 15:27:37

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    :-)

Commentaire de aminedelphi le 14/09/2008 07:35:57

Bonjour Forman
Je me demander si tu peux nous réaliser un explorateur Windows en 3D
Ca serait génial
@+

Commentaire de barbichette le 15/09/2008 09:16:57

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

Commentaire de djmmix le 15/09/2008 11:02:36

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)

Commentaire de dodfr le 15/09/2008 11:51:31 8/10

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+

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Winsock en mode console [ par Kaiser ] Ou je pourrais trouver un exemple de type Client-Server utilisant winsock en mode 'application console' ? PLIZ !! Programme console et composant database [ par VTCFMAN ] Peut-on utiliser les composants Database dans un programme console avec ou sans module de données ?. Si non existe-t-il des des librairies permettant Changement de caracteres dans une appli console. [ par Kundun2 ] Bonjour,Je voudrais savoir si il est possible d'executer une fonction de verification pendant l'ecriture dans une appli console ?Je m'explique :Quant Controler le texte taper en aplli console [ par Kundun2 ] Bonjour,Suite a mon message sans réponse, je reformule differement ma question.Comment controler ce que l'utilisateur de l'appli console tape avant l' Couleur dans une appli console [ par Kundun2 ] Bonjour,J voudrait savoir comment je peux mettre du texte en couleur dans une appli console avec Delphi 6...Pourriez vous m'eclairerKundunhttp://www.k Fonctions d'applications console ! [ par Kundun2 ] Bonjour,Je voudrait savoir comment Appeler les fonctions d'une appli Windows a partir d'un application en mode console !Merci d'avance !!Kundunhttp:// Ms Agent en Appli console ? [ par Kundun2 ] Bonjour,Encore une question !!!!!!Comment fait-on pour utiliser les Microsoft agent avec une appli console ?Merci d'avanceKundunhttp://www.kundun-offi Console [ par mimoun ] J'ai un probleme, g une application en C, je voudrai pourvoir la piloter avec delphi. Donc il me faut un handle sur la console, un handle sur l'entree Application Console avec Timer ou autre composant Delphi ???? [ par TheSquad ] Salut a tous ceux qui lirons ce msg...Voila mon problème : Je suis en train de créer une application console, pour etre plus precis je suis en train d Dialogues dans une Appli Console. [ par meteoryte ] Bonjour.Je développe une Application faisant appel a OpenGL.Pour des raisons d'optimisations, je n'utilise pas l'Unit Forms de Delphi. C'est donc une


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
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,702 sec (3)

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