Batch Index du Forum
S’enregistrerRechercherFAQMembresGroupesConnexion
Répondre au sujet Page 1 sur 1
[Prog] Task Manager
Auteur Message
Répondre en citant
Message [Prog] Task Manager 
salut à vous. toujours aucun projet sympa Neutral en guise d'entrainement j'ai voulue réalisé un mini gestionnaire de tache.

vous pouvez me donner tous de même des idées d'amélioration, bien que personnellement cette gui va s'incrusté sur mon pc !


go :






se que je recherche, récupérer les icones des aplis en cours Wink


Code:

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <TabConstants.au3>
#include <WindowsConstants.au3>
#include <GuiConstantsEx.au3>
#include <GuiListView.au3>
#include <GuiImageList.au3>
#include <ComboConstants.au3>



#Region ### START Koda GUI section ### Form=
Opt("WinTitleMatchMode", 2)
Global $__i = 0, $newtache = "false", $hide = false
Global $inifile = @ScriptDir & "\tache.ini"
$Form1 = GUICreate("Task Manager | By duty", 444, 522, 190, 120)

$Tab1 = GUICtrlCreateTab(0, 0, 461, 545)
$TabSheet1 = GUICtrlCreateTabItem("Processus")
$ListeProcess = GUICtrlCreateListView("", 16, 40, 417, 441)
GUICtrlSetState($ListeProcess, $GUI_DROPACCEPTED)
_GUICtrlListView_InsertColumn($ListeProcess, 0, "Processus", 200)
_GUICtrlListView_InsertColumn($ListeProcess, 1, "Utilisateur", 140)
_GUICtrlListView_InsertColumn($ListeProcess, 2, "Pid's", 50)

$nombredeprocess = GUICtrlCreateLabel("", 20, 488, 113, 25)
$ButtonEndProcess = GUICtrlCreateButton("End Process", 320, 488, 113, 25)
$TabSheet2 = GUICtrlCreateTabItem("Applications")
$ListView1 = GUICtrlCreateListView("", 16, 40, 417, 441)
_GUICtrlListView_InsertColumn($ListView1, 0, "Applications", 250)
_GUICtrlListView_InsertColumn($ListView1, 1, "Statue", 100)

$nombredapli = GUICtrlCreateLabel("", 20, 488, 113, 25)
$ButtonNouveau = GUICtrlCreateButton("Nouveau", 344, 488, 89, 25)
$ButtonAllez = GUICtrlCreateButton("Allez a..", 256, 488, 83, 25)
$ButtonFermerApli = GUICtrlCreateButton("Fermer Apli", 160, 488, 91, 25)
GUICtrlCreateTabItem("")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###




;===> Processus liste
Global $list = ProcessList()
for $i = 1 to $list[0][0]
  _GUICtrlListView_AddItem($ListeProcess, $list[$i][0], $i)
  _GuiCtrlListView_AddSubItem($ListeProcess, $__i, $list[$i][1], 2)
  if $list[$i][0] <> "svchost.exe" then
   if FileExists("C:\windows\system32\" & $list[$i][0]) then
      _GuiCtrlListView_AddSubItem($ListeProcess, $__i, "SYSTEM", 1)
   Else
      _GuiCtrlListView_AddSubItem($ListeProcess, $__i, @UserName, 1)
   Endif
  elseif $list[$i][0] = "svchost.exe" then
   _GuiCtrlListView_AddSubItem($ListeProcess, $__i, "NETWORK SERVICE", 1)
  Endif
   $__i += 1
next
GUICtrlSetData($nombredeprocess, $list[0][0]&" Process")



;===> Apli liste
Global $hImage = _GUIImageList_Create()
_GUIImageList_AddIcon($hImage, @SystemDir & "\shell32.dll", 3)
_GUIImageList_AddIcon($hImage, @SystemDir & "\shell32.dll", 165)
_GUICtrlListView_SetImageList($ListView1, $hImage, 1)

$__i = 0
$nb = 0
Global $WinList = WinList()
For $i = 1 to $WinList[0][0]
   If $WinList[$i][0] <> "" AND IsVisible($WinList[$i][1]) Then
      $state = WinGetState("", $WinList[$i][0])
      If BitAnd($state, 1) Then
         _GUICtrlListView_AddItem($ListView1, $WinList[$i][0], 0, $i)
      Else
         _GUICtrlListView_AddItem($ListView1, $WinList[$i][0], 1, $i)
        EndIf
      _GuiCtrlListView_AddSubItem($ListView1, $__i, "running", 1)
      $__i += 1
      $nb += 1
   EndIf
Next
GUICtrlSetData($nombredapli, $nb&" Aplications")


;==> tray for look
Opt("TrayMenuMode",1)
Opt("TrayOnEventMode",1)
TraySetClick("8")
$MenuItem1 = TrayCreateItem("Cacher\Montrer Le gestionnaire")
TrayItemSetOnEvent($MenuItem1, "_show")
$MenuItem2 = TrayCreateItem("Fermer le Gestionnaire")
TrayItemSetOnEvent($MenuItem2, "_exit")
TraySetState()
HotKeySet("{F5}", "_Show")



While 1
   $nMsg = GUIGetMsg()
   Switch $nMsg
      Case $GUI_EVENT_CLOSE
         Exit
      case $GUI_EVENT_MINIMIZE
         GUISetState(@SW_hide)
         $hide = true

      Case $ButtonEndProcess
         _ExitProssec()
      Case $ButtonNouveau ; nouvelle tache
         $newtache = "true"
         _new()
      Case $ButtonFermerApli
         _closapi()

      Case $ButtonAllez
         _allez_go()

 EndSwitch

$nb2 = 0
$WinListwhile = WinList() ;==> mise a jours des applis
For $i = 1 to $WinListwhile[0][0]
   If $WinListwhile[$i][0] <> "" AND IsVisible($WinListwhile[$i][1]) Then $nb2 += 1
next
if $nb < $nb2 Then
_Resetandmajapli()
elseif $nb > $nb2 Then
_Resetandmajapli()
Endif


$listProcess = ProcessList() ;==> mise à jour des proc
if $list[0][0] < $listProcess[0][0] Then
   _Resetandmaj()
elseif $list[0][0] > $listProcess[0][0] Then
   _Resetandmaj()
Endif
WEnd


Func IsVisible($data)
  If BitAnd(WinGetState($data), 2 ) Then
    Return 1
  Else
    Return 0
  EndIf
EndFunc
Func _ExitProssec()
   $read = _GUICtrlListView_GetItemTextString($ListeProcess, -1)
   if $read = "||" then Return
   if $read = "" then Return
   If MsgBox(48, "Process Management", "Voulez-vous vraiment Fermer se processus ?" & @CRLF & "(Cette opération est irréversible)") = 7 Then Return
   ; ---
   ConsoleWrite($read & @CRLF)
   $splitProcess = StringSplit($read, "|")
   ConsoleWrite($splitProcess[1] & " " & $splitProcess[3] & @CRLF)


   $error = ProcessClose($splitProcess[1])
    ConsoleWrite($error & @CRLF)
    If $error = 1 then
   MsgBox(64, "Process Management", "le Processus "&$splitProcess[1]&" à bien été fermer")
   _Resetandmaj()
   Endif

    If $error = 0 then MsgBox(64, "Process Management", "Erreur : "&@error)
Endfunc
Func _Resetandmaj()
   _GUICtrlListView_BeginUpdate($ListeProcess)
   ; ---
   _GUICtrlListView_DeleteAllItems(GuiCtrlGetHandle($ListeProcess))
   $__i = 0
   $list = ProcessList()
    for $i = 1 to $list[0][0]
      _GUICtrlListView_AddItem($ListeProcess, $list[$i][0], $i)
      _GuiCtrlListView_AddSubItem($ListeProcess, $__i, $list[$i][1], 2)
      if $list[$i][0] <> "svchost.exe" then
         if FileExists("C:\windows\system32\" & $list[$i][0]) then
            _GuiCtrlListView_AddSubItem($ListeProcess, $__i, "SYSTEM", 1)
         Else
            _GuiCtrlListView_AddSubItem($ListeProcess, $__i, @UserName, 1)
         Endif
        Elseif $list[$i][0] = "svchost.exe" then
         _GuiCtrlListView_AddSubItem($ListeProcess, $__i, "NETWORK SERVICE", 1)
      Endif
      $__i += 1
   next
   GUICtrlSetData($nombredeprocess, $list[0][0]&" Process")
   _GUICtrlListView_EndUpdate($ListeProcess)
Endfunc
Func _Resetandmajapli()
   _GUICtrlListView_BeginUpdate($ListView1)
   ; ---
   _GUICtrlListView_DeleteAllItems(GuiCtrlGetHandle($ListView1))

   $__i = 0
   $nb = 0
   $WinList = WinList()
   For $i = 1 to $WinList[0][0]
      If $WinList[$i][0] <> "" AND IsVisible($WinList[$i][1]) Then
         $state = WinGetState("", $WinList[$i][0])
         If BitAnd($state, 1) Then
              _GUICtrlListView_AddItem($ListView1, $WinList[$i][0], 0, $i)
         Else
            _GUICtrlListView_AddItem($ListView1, $WinList[$i][0], 1, $i)
         EndIf
         _GuiCtrlListView_AddSubItem($ListView1, $__i, "running", 1)
      $__i += 1
      $nb += 1
   EndIf
   next
    GUICtrlSetData($nombredapli, $nb&" Applications")
   _GUICtrlListView_EndUpdate($ListView1)
Endfunc
Func _new()
$Formnouvelletache = GUICreate("Nouvelle tache", 320, 87, 270, 275)
WinSetTrans($Formnouvelletache , "", 200)

$Combotache = GUICtrlCreateCombo("", 16, 24, 233, 25) ;BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL)
$Button1 = GUICtrlCreateButton("....", 256, 24, 57, 22)
$Cancelnouvelletache = GUICtrlCreateButton("Cancel", 232, 56, 81, 20)
$gonouvelletache = GUICtrlCreateButton("OK", 143, 56, 81, 20)
GUISetState(@SW_SHOW)

if FileExists($inifile) Then
$ReadSectionfile = IniReadSection($inifile, "TACHES")
If @error Then
FileRecycle($inifile)
Else
    For $i = 1 To $ReadSectionfile[0][0]
      GUICtrlSetData($Combotache, $ReadSectionfile[$i][0], $i)
    Next
EndIf
EndIf




While $newtache = "true"
 $nMsg = GUIGetMsg()
 Switch $nMsg
   Case $GUI_EVENT_CLOSE
      GUIDelete($Formnouvelletache)
      $newtache = "false"

   Case $Cancelnouvelletache
      GUIDelete($Formnouvelletache)
      $newtache = "false"

   Case $gonouvelletache
      if GUICtrlRead($Combotache) <> "" then $ContenCombo = GUICtrlRead($Combotache)
      if stringRight($ContenCombo,4)<>".exe" then $ContenCombo=$ContenCombo&".exe"
      if FileExists(@SystemDir & "\" & $ContenCombo) then
          $pathfile = @SystemDir & "\" & $ContenCombo
          IniWrite($inifile, "TACHES", $ContenCombo, $pathfile)
          ShellExecute(@SystemDir & "\" & $ContenCombo)
      elseif FileExists(@WindowsDir & "\" & $ContenCombo) Then
          $pathfile = @WindowsDir & "\" & $ContenCombo
          IniWrite($inifile, "TACHES", $ContenCombo, $pathfile)
          ShellExecute(@WindowsDir & "\" & $ContenCombo)
      Endif
      if FileExists($ContenCombo) then
         $Splitspladernierevaleur = StringSplit($ContenCombo, "\")
          IniWrite($inifile, "TACHES", $Splitspladernierevaleur[$Splitspladernierevaleur[0]], $ContenCombo)
          ShellExecute($ContenCombo)
      Endif
      if not FileExists($ContenCombo) then
         $IniReadnotfileexist = IniRead($inifile, "TACHES", $ContenCombo, "exit")
         if $IniReadnotfileexist <> "exit" Then
            ShellExecute($IniReadnotfileexist)
         Endif
      Endif

   Case $Button1
      $lancer_struc = FileOpenDialog("Programme : ", @DesktopDir & "\", "Programme (*.exe)", 1 + 8 )
      if $lancer_struc <> "" then GUICtrlSetData($Combotache, $lancer_struc, $lancer_struc)


 EndSwitch
WEnd


Endfunc
func _closapi()
   $readclose = _GUICtrlListView_GetItemTextString($ListView1, -1)
   if $readclose = "||" then Return
   if $readclose = "" then Return

   ; ---
   ConsoleWrite($readclose & @CRLF)
   $splitapi = StringSplit($readclose, "|")
   ConsoleWrite($splitapi[1] & " " & $splitapi[2] & @CRLF)
   If MsgBox(48, "Process Management", "Voulez-vous vraiment Fermer cette application ?" & @CRLF & $splitapi[1]) = 7 Then Return

   WinKill($splitapi[1], "")
Endfunc
func _allez_go()
   $readsee = _GUICtrlListView_GetItemTextString($ListView1, -1)
   if $readsee = "||" then Return
   if $readsee = "" then Return
   $splitsee = StringSplit($readsee, "|")


    $statwin = WinGetState($splitsee[1], "")
   ;If BitAnd($statwin, 16) Then WinSetState($splitsee[1], "", @SW_RESTORE)
    WinActivate($splitsee[1])


Endfunc
Func _Show()
if $hide = true then
GUISetState(@SW_SHOW)
WinSetState("Task Manager | By duty", "", @SW_RESTORE)
$hide = false
Else
GUISetState(@SW_hide)
$hide = true
Endif
Endfunc ;==> Cacher, montrer la fenètre
Func _exit()
   Exit 0
Endfunc ;==> On ferme


si j'ai du temps cette semaine je commente !

Edit :
setontop() viré...!
prochaine étape :
* édition(ajout,suppression) run/runonce
* trouvé comment recup' les icônes des fenêtres actives




______________________________________________________


Message Publicité 
PublicitéSupprimer les publicités ?


Répondre en citant
Message [Prog] Task Manager 
Salut,

C'est très intéressant comme programme et je trouve qu'Autoit convient parfaitement pour ce genre de choses.

Je ne peux pas tester ton programme pour le moment mais qu'a-il de plus que celui de Windows ?

Je me réjouis de voir les améliorations ! Okay




______________________________________________________
Répondre en citant
Message [Prog] Task Manager 
merci bien sablier Okay

de plus que celui de windows !
j'aime bien le toute en un, mais en autoit sa devient vite lourd ! je compte finir " l'ajout/suppression " des clé run après les options!
Ensuite, les possibilité sont grandes les idées récolté par des testeurs seront bienvenue^^

après c'est un entrainement sympa Mort de Rire

aperçue : avec le reg



je pence que après un "supprimer" si l'user le décide, la clé effacer sera sauvegarder dans un ini ! j'ajouterais un bouton restauration(reg)
utilise la fonction regsearch.au3 je laisse l'exemple ! trouvé la ==> http://www.autoit.fr/forum/viewtopic.php?f=21&t=7348&p=47309&hi…

Code:

#include-once

#region ### Exemple ###
   ;#include <Array.au3>
   ;$a = _Reg_Search("HKLM\Software\Microsoft\Windows\CurrentVersion\Run")
   ;_ArrayDisplay($a)
#endregion

; Array: name, value, type
#cs
Paramtres:
$sKey = Chemin de la clef à explorer
$sFilterName = Filtre de nom de l'entré du registre
$sFilterValue = Filtre de valeur
$sFilterType = Filtre de type (comme dans RegWrite)
$iReturnFullPath =  0 - Retourne seulement les noms des valeurs
               1 - Retourne le chemin complet vers la valeur
$iRecurse = Recherche récursive (ne prend en charge qu'un seul niveau)
#ce
Func _Reg_Search($sKey, $sFilterName = "*", $sFilterValue = "*", $sFilterType = "*", $iReturnFullPath = 0, $iRecurse = 0)
   Local $aRet[1][3] ; name, value, type
   $aRet[0][0] = 0
   ; ---
   Local $SRE_Name = _RFLTA_ListToMask($sFilterName)
   Local $SRE_Val = _RFLTA_ListToMask($sFilterValue)
   Local $SRE_Type = _RFLTA_ListToMask($sFilterType)
   ; ---
   ; Search the first key
   __Reg_Search_SearchKey($sKey, $aRet, $SRE_Name, $SRE_Val, $SRE_Type, $iReturnFullPath)
   ; ---
   Local $x = 1, $key
   If $iRecurse Then
      While 1
         $key = RegEnumKey($sKey, $x)
         If @error Then ExitLoop
         ; ---
         __Reg_Search_SearchKey($sKey & "\" & $key, $aRet, $SRE_Name, $SRE_Val, $SRE_Type, $iReturnFullPath)
         ; ---
         $x += 1
      WEnd
   EndIf
   ; ---
   Return $aRet
EndFunc

; ==============================================================
; ### Internals
; ==============================================================
Func __Reg_Search_SearchKey($sKey, ByRef $aRet, $SRE_Name, $SRE_Val, $SRE_Type, $iReturnFull)
   ConsoleWrite("Searching Key: " & $sKey & @CRLF)
   Local $i = 1, $name
   While 1
      $name = RegEnumVal($sKey, $i)
      If @error Then ExitLoop
      ; ---
      __Reg_Search_AddResult($aRet, $sKey, $name, $SRE_Name, $SRE_Val, $SRE_Type, $iReturnFull)
      $i += 1
   WEnd
EndFunc

Func __Reg_Search_AddResult(ByRef $array, $key, $name, $SRE_Name, $SRE_Val, $SRE_Type, $iReturnFull)
   Local $value = RegRead($key, $name)
   Local $type = __Reg_Search_ConstToStr(@extended)
   ; ---
   If StringRegExp($name, $SRE_Name) And StringRegExp($value, $SRE_Val) And StringRegExp($type, $SRE_Type) Then
      ConsoleWrite("   Adding Result: " & $name & " => " & $value & @CRLF)
      ReDim $array[$array[0][0] + 2][3]
      If $iReturnFull Then
         $array[$array[0][0] + 1][0] = $key & "\" & $name
      Else
         $array[$array[0][0] + 1][0] = $name
      EndIf
      $array[$array[0][0] + 1][1] = $value
      $array[$array[0][0] + 1][2] = $type
      $array[0][0] += 1
   EndIf
   ; ---
   Return
EndFunc

Func __Reg_Search_ConstToStr($const)
   Local $ret
   Switch $const
      Case 0
         $ret = "REG_NONE"
      Case 1
         $ret = "REG_SZ"
      Case 2
         $ret = "REG_EXPAND_SZ"
      Case 3
         $ret = "REG_BINARY"
      Case 4
         $ret = "REG_DWORD"
      Case 5
         $ret = "REG_DWORD_BIG_ENDIAN"
      Case 6
         $ret = "REG_LINK"
      Case 7
         $ret = "REG_MULTI_SZ"
      Case 8
         $ret = "REG_RESOURCE_LIST"
      Case 9
         $ret = "REG_FULL_RESOURCE_DESCRIPTOR"
      Case 10
         $ret = "REG_RESOURCE_REQUIREMENTS_LIST"
   EndSwitch
   ; ---
   Return $ret
EndFunc

; From RecFileListToArray.au3
Func _RFLTA_ListToMask($sList)
   ; Check for invalid characters within list
   If StringRegExp($sList, "\\|/|:|\<|\>|\|") Then Return 0
   ; Strip WS and insert | for ;
   $sList = StringReplace(StringStripWS(StringRegExpReplace($sList, "\s*;\s*", ";"), 3), ";", "|")
   ; Convert to SRE pattern
   $sList = StringReplace(StringReplace(StringRegExpReplace($sList, "(\^|\$|\.)", "\\$1"), "?", "."), "*", ".*?")
   ; Add prefix and suffix
   Return "(?i)^(" & $sList & ")\z"
EndFunc   ;==>_RFLTA_ListToMask





______________________________________________________


Répondre en citant
Message [Prog] Task Manager 
Bravo pour cet outil, et pour la code source merci, cependant ça serait bien qu'il soit commenté

je ne peux pas tester sans qu'il soit compilé sur ce pc mais je testerai dès que possible

Quelques remarques :

pour les processus ça serait bien de mettre la quantité de mémoire utilisée si possible

Regarde la source de Sablier pour son programme il utilise un udf qui permet de récupérer les icones des programmes LoadIcon
Dans applications le mot exact est statut avec un t et non statue.

Y a plus qu'à ajouter les services aussi c'est pratique.




______________________________________________________
Faites paraitre votre batch sur BatchClipboard
Visiter le site web du posteur
Répondre en citant
Message [Prog] Task Manager 
ok je vais tenter , histoire de voir se que sa donne Surprised . en espérant le démarrage ne prenne pas trop de temps :'(




______________________________________________________


Répondre en citant
Message [Prog] Task Manager 
Salut,

J'ai testé : c'est très rapide Okay . Par contre il faudrait corriger quelque fautes d'orthographe.

Pour récupérer les icônes, ça serait possible de connaître le chemin du programme ?

PS : ça sert à quoi exactement run/runonce ?




______________________________________________________
Répondre en citant
Message [Prog] Task Manager 
Run/Runonce sont les programmes lancés au démarrage de windows
Equivalent de démarrage sous ccleaner




______________________________________________________
Faites paraitre votre batch sur BatchClipboard
Visiter le site web du posteur
Répondre en citant
Message [Prog] Task Manager 
Bonjour
super Okay bonne continuation



Visiter le site web du posteur
Répondre en citant
Message [Prog] Task Manager 
ok merci, au prochain poste : Correction(orthographe) + gain de vitesse au lancement, modif de certaines syntaxe + commentaires !




______________________________________________________


Message [Prog] Task Manager 


Montrer les messages depuis:
Répondre au sujet Page 1 sur 1
  



Index | créer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Copyright 2008 - 2016 // Batch