1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Kleiner

Beiträge von Kleiner

  • AutoOpen_ComBo.au3

    • Kleiner
    • 24. Juli 2010 um 15:14

    Hallo Leute!


    Ich habe ein Code den ich verwende, wo viele verschiedene vergebe werden, um am Ende auf ein Wert zu kommen, ich nutze dazu 10 Comboboxen und weil es Nervig ist immer erst zu Klicken bis die Box aufgeht habe ich nach einer Lösung gesucht.

    Nun stelle ich euch AutoOpen_ComBo.au3 vor.

    Wenn die maus über das Combo Contol ist wird das Control automatisch geöffnet (wenn es leer ist).

    Bug behoben : 01.10.2010

    Code:

    Spoiler anzeigen
    [autoit]

    #include <GuiComboBox.au3>
    #include <GuiComboBoxEx.au3>
    #include <GUIConstantsEx.au3>
    ;===================================================================================================================================#
    ;~ Function Name....: Auto_OpenCombo($comB)
    ;~ Description......: ComBobox Automatisch Öffnen
    ;~ $comB ..........: ContolID der Combobox oder ein Array
    ;~ Return Value(s)..:
    ;~ Author(s)........: Kleiner27 (http://www.autoit.de)
    ;====================================================================================================================================#

    [/autoit] [autoit][/autoit] [autoit]

    Func Auto_OpenCombo($comB)
    If IsArray($comB) Then
    For $i = 0 To UBound($comB) - 1
    If _GUICtrlComboBox_GetDroppedState($comB[$i]) Then
    Opt('MouseCoordMode', 1)
    Dim $M_pos = MouseGetPos()
    Dim $aRect = _GUICtrlComboBoxEx_GetDroppedControlRect($comB[$i])
    If ($M_pos[0] < $aRect[0]) Or ($M_pos[0] > $aRect[2]) Then Return _GUICtrlComboBox_ShowDropDown($comB[$i])
    Return (0)
    Else
    If (GUICtrlRead($comB[$i]) <> '') Then ContinueLoop
    Opt('MouseCoordMode', 2)
    Dim $C_pos = ControlGetPos('', '', $comB[$i])
    If @error Then Return (0)
    If __Maus_Control($C_pos[0], $C_pos[1], $C_pos[2], $C_pos[3]) Then
    GUICtrlSetState($comB[$i], $GUI_FOCUS)
    Return _GUICtrlComboBox_ShowDropDown($comB[$i], True)
    EndIf
    EndIf
    Next
    Else
    If _GUICtrlComboBox_GetDroppedState($comB) Then
    Opt('MouseCoordMode', 1)
    Dim $M_pos = MouseGetPos()
    Dim $aRect = _GUICtrlComboBoxEx_GetDroppedControlRect($comB)
    If ($M_pos[0] < $aRect[0]) Or ($M_pos[0] > $aRect[2]) Then Return _GUICtrlComboBox_ShowDropDown($comB)
    Return (0)
    Else
    If (GUICtrlRead($comB) <> '') Then Return (0)
    Opt('MouseCoordMode', 2)
    Dim $C_pos = ControlGetPos('', '', $comB)
    If @error Then Return (0)
    If __Maus_Control($C_pos[0], $C_pos[1], $C_pos[2], $C_pos[3]) Then
    GUICtrlSetState($comB, $GUI_FOCUS)
    Return _GUICtrlComboBox_ShowDropDown($comB, True)
    EndIf
    EndIf
    EndIf
    EndFunc ;==>Auto_OpenCombo

    [/autoit] [autoit][/autoit] [autoit]

    Func __Maus_Control($O_X, $O_Y, $O_Width, $O_Height)
    Dim $M_pos = MouseGetPos()
    Return ($M_pos[0] > $O_X) and ($M_pos[0] < $O_X + $O_Width) and ($M_pos[1] > $O_Y) and ($M_pos[1] < $O_Y + $O_Height)
    EndFunc ;==>__Maus_Control

    [/autoit]

    LG Kleiner

  • Erweiterte Dateiinfo (eine Datei od. alle eines Ordners)

    • Kleiner
    • 20. Juli 2010 um 21:33

    Hi BugFix!

    Als ich mein Archiv durchsuchte und deine _FileInfoExtended Funktion gefunden habe dachte die ist einfach zu langsam wenn es um große Folder geht!
    Ich habe mich gefragt warum kein Count genutzt wurde ich durfte dann schnell feststellen das Items kein Rückgabe Wert hat, da habe ich mich auf die Suche begeben und eine Lösung gefunden das, dass Redim keine Bremse mehr ist.

    Lösung:

    Spoiler anzeigen
    [autoit]

    $objItems = $objFolder.Items
    Local $arRet[$objItems.Count + 1][34]

    [/autoit]

    LG Kleiner

  • Service_VB.au3

    • Kleiner
    • 17. Juli 2010 um 13:16

    Danke schön!

    Wird alles noch folgen, die .au3 steht ersmal hir zum verbessen vieleicht neue Funktionen usw.


    LG Kleiner

  • Task_Manager v0.1

    • Kleiner
    • 17. Juli 2010 um 13:11

    Vielen dank Leute!

    @Paupi

    BugFix hat mich auch schon darauf hingewiesen.
    Nach den Arbeitsschritten verhalten sich doch beide Indexe gleich wenn eins gelöscht wird rutschen die unten stehen nach oben.

    Laut Hilfe:
    Wenn zum Beispiel das Bild mit dem Index 0 entfernt wird, dann bekommt das Bild mit dem Index 1 den Index 0, das Bild mit dem Index 2 den Index 1 und so weiter.
    Das ist mit dem ListView nicht anders, also ist das Verfahren richtig, es wird mal so mal so interpretiert.
    Habe das explizite löschen rausgenommen, das Index wird jetzt nur noch bei der Neuerstellung angepasst.
    Erweiter habe ich auch den Vorschlag mit den Fensterhandel jetzt kann man auch mehre Fenster vom selben Programm aufmachen.

    Steh jetzt vor ein neues Abenteuer, habe gerade _GUICtrlListView_RegisterSortCallBack eingebunden nur tut sich Garnichts ????

    code:

    Spoiler anzeigen
    [autoit]

    ;#RequireAdmin
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Icon=ICON_385.ICO
    #AutoIt3Wrapper_UseX64=n
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include <Array.au3>
    #include <GuiImageList.au3>
    #include <GuiListView.au3>
    #include <GuiStatusBar.au3>
    #include <GuiTab.au3>
    #include <WinAPI.au3>
    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <StructureConstants.au3>
    #include <System.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Opt('GUIOnEventMode', 1)
    Opt('MustDeclareVars', 1)

    [/autoit] [autoit][/autoit] [autoit]

    $Debug_LV = False

    [/autoit] [autoit][/autoit] [autoit]

    Global $Form[2]

    [/autoit] [autoit][/autoit] [autoit]

    Local $Tab
    Local $SYS[30]
    Local $Menue_SYS, $MenuItem_0
    Local $aWinList, $aProcess, $aProcess_0, $Icon
    Local $Breite = @DesktopWidth, $Hoehe = @DesktopHeight, $Breite_K = 410, $Hoehe_K = 455
    Local $Com_Fehler = ObjEvent('AutoIt.Error', 'Com_Fehler'), $Error = True, $Us, $sU, $co
    Local $Not_Klassenname = 'Button|Progman|DV2ControlHost|Desktop User Picture|tooltips_class32'
    Local $iParts[3] = [180, 780, 50], $iStatus, $Dienste, $mem, $iGetIthm = -1, $Label, $Checkbox[4], $Set_Prio, $Set_Label
    Local $Bezeichnung_0[7][2] = [['Task', 260],['EXE', 60],['Status', 60],['PID', 40],['Handel', 100],['Pfad', 260],['Klassenname', 100]]
    Local $LV_SYS[5], $Handle_LV_SYS[5], $Index, $Contextmenu[3], $Contextmenuitem_0[3], $Contextmenuitem_1[3], $Contextmenuitem_2[2], $Prio_Item[4]
    Local $Bezeichnung_1[8] = ['ProzesseName', 'PID', 'Parent PID', 'Eigentümer', 'Priorität', 'Ausführbaren Pfad', 'Geschriebenen Daten', 'Speichernutzung']
    Local $Bezeichnung_2[9] = ['Interner Name', 'Akzeptiert Pause', 'Akzeptiert Stop', 'Pfad', 'Status', 'Zustand', 'StartMode', 'StartName', 'Beschreibung']

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $Form[0] = GUICreate('Task_Manager', 870, 460, (@DesktopWidth - 870) / 2, (@DesktopHeight - 460) / 2, $WS_OVERLAPPEDWINDOW + $WS_CLIPSIBLINGS)
    GUISetOnEvent(-3, 'Ende')

    [/autoit] [autoit][/autoit] [autoit]

    $Menue_SYS = GUICtrlCreateMenu(' Datein ')
    $MenuItem_0 = GUICtrlCreateMenuItem(' Neuer Task ( Ausführen.... ) ', $Menue_SYS)
    GUICtrlSetOnEvent(-1, 'Anw_Prog_P_S')
    GUICtrlCreateMenuItem(' Beenden ', $Menue_SYS)
    GUICtrlSetOnEvent(-1, 'Ende')

    [/autoit] [autoit][/autoit] [autoit]

    $Tab = GUICtrlCreateTab(10, 8, 850, 400)
    GUICtrlSetResizing(-1, $GUI_DOCKTOP + $GUI_DOCKLEFT + $GUI_DOCKBOTTOM + $GUI_DOCKRIGHT)

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlCreateTabItem('Anwendungen')
    $LV_SYS[0] = GUICtrlCreateListView('', 25, 50, 818, 315, $LVS_SINGLESEL + $LVS_EX_DOUBLEBUFFER)
    GUICtrlSetResizing(-1, $GUI_DOCKTOP + $GUI_DOCKLEFT + $GUI_DOCKRIGHT + $GUI_DOCKBOTTOM)
    $Handle_LV_SYS[0] = GUICtrlGetHandle($LV_SYS[0])
    $Icon = _GUIImageList_Create(16, 16, 5)
    _GUICtrlListView_SetImageList($Handle_LV_SYS[0], $Icon, 1)
    For $i = 0 To 6
    _GUICtrlListView_AddColumn($Handle_LV_SYS[0], $Bezeichnung_0[$i][0], $Bezeichnung_0[$i][1])
    Next
    $aProcess = New_Prozess(1, '', '')
    $aWinList = _WinAPI_EnumWindowsTop()
    _GUICtrlListView_BeginUpdate($Handle_LV_SYS[0])
    For $i = 0 To UBound($aProcess) - 1
    For $e = 1 To $aWinList[0][0]
    If (WinGetProcess($aWinList[$e][0]) = $aProcess[$i][1] And $aProcess[$i][1] <> @AutoItPID) Then
    If (WinGetTitle($aWinList[$e][0]) <> '' And Not StringRegExp($aWinList[$e][1], $Not_Klassenname)) Then
    $Index = _GUIImageList_AddIcon($Icon, $aProcess[$i][2])
    _GUICtrlListView_AddItem($Handle_LV_SYS[0], WinGetTitle($aWinList[$e][0]), $Index)
    _GUICtrlListView_AddSubItem($Handle_LV_SYS[0], $Index, $aProcess[$i][0], 1)
    _GUICtrlListView_AddSubItem($Handle_LV_SYS[0], $Index, ' Wird ausgeführt ', 2)
    _GUICtrlListView_AddSubItem($Handle_LV_SYS[0], $Index, WinGetProcess($aWinList[$e][0]), 3)
    _GUICtrlListView_AddSubItem($Handle_LV_SYS[0], $Index, $aWinList[$e][0], 4)
    _GUICtrlListView_AddSubItem($Handle_LV_SYS[0], $Index, $aProcess[$i][2], 5)
    _GUICtrlListView_AddSubItem($Handle_LV_SYS[0], $Index, $aWinList[$e][1], 6)
    EndIf
    EndIf
    Next
    Next
    _GUICtrlListView_EndUpdate($Handle_LV_SYS[0])
    $SYS[0] = GUICtrlCreateButton('Task beenden', 535, 375, 100, 22)
    GUICtrlSetResizing(-1, $GUI_DOCKRIGHT + $GUI_DOCKWIDTH + $GUI_DOCKBOTTOM + $GUI_DOCKHEIGHT)
    GUICtrlSetOnEvent(-1, 'Anw_Prog_P_S')
    $SYS[1] = GUICtrlCreateButton('Wechseln zu', 640, 375, 100, 22)
    GUICtrlSetResizing(-1, $GUI_DOCKRIGHT + $GUI_DOCKWIDTH + $GUI_DOCKBOTTOM + $GUI_DOCKHEIGHT)
    GUICtrlSetOnEvent(-1, 'Anw_Prog_P_S')
    $SYS[2] = GUICtrlCreateButton('Neuer Task...', 745, 375, 100, 22)
    GUICtrlSetResizing(-1, $GUI_DOCKRIGHT + $GUI_DOCKWIDTH + $GUI_DOCKBOTTOM + $GUI_DOCKHEIGHT)
    GUICtrlSetOnEvent(-1, 'Anw_Prog_P_S')

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlCreateTabItem('Processe')
    $LV_SYS[1] = GUICtrlCreateListView('', 25, 50, 818, 315, $LVS_SINGLESEL + $LVS_EX_DOUBLEBUFFER)
    GUICtrlSetResizing(-1, $GUI_DOCKTOP + $GUI_DOCKLEFT + $GUI_DOCKRIGHT + $GUI_DOCKBOTTOM)
    $Handle_LV_SYS[1] = GUICtrlGetHandle($LV_SYS[1])
    For $i = 0 To 7
    _GUICtrlListView_AddColumn($Handle_LV_SYS[1], $Bezeichnung_1[$i], 100)
    Next
    $aProcess_0 = New_Prozess(2, '', '')
    _GUICtrlListView_BeginUpdate($Handle_LV_SYS[1])
    _GUICtrlListView_AddArray($LV_SYS[1], $aProcess_0)
    _GUICtrlListView_EndUpdate($Handle_LV_SYS[1])
    $SYS[3] = GUICtrlCreateButton('Process beenden', 745, 375, 100, 22)
    GUICtrlSetResizing(-1, $GUI_DOCKRIGHT + $GUI_DOCKWIDTH + $GUI_DOCKBOTTOM + $GUI_DOCKHEIGHT)
    GUICtrlSetOnEvent(-1, 'Anw_Prog_P_S')

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlCreateTabItem('Dienste')
    $LV_SYS[2] = GUICtrlCreateListView('', 25, 50, 818, 315, $LVS_SINGLESEL + $LVS_EX_DOUBLEBUFFER)
    GUICtrlSetResizing(-1, $GUI_DOCKTOP + $GUI_DOCKLEFT + $GUI_DOCKRIGHT + $GUI_DOCKBOTTOM)
    $Handle_LV_SYS[2] = GUICtrlGetHandle($LV_SYS[2])
    For $i = 0 To 8
    _GUICtrlListView_AddColumn($Handle_LV_SYS[2], $Bezeichnung_2[$i], 100)
    Next
    $Dienste = LA_Services(@ComputerName)
    _GUICtrlListView_BeginUpdate($Handle_LV_SYS[2])
    _GUICtrlListView_AddArray($LV_SYS[2], $Dienste)
    _GUICtrlListView_EndUpdate($Handle_LV_SYS[2])
    GUICtrlCreateTabItem('')

    [/autoit] [autoit][/autoit] [autoit]

    $iStatus = _GUICtrlStatusBar_Create($Form[0])
    _GUICtrlStatusBar_SetParts($iStatus, $iParts)

    [/autoit] [autoit][/autoit] [autoit]

    $Contextmenu[0] = GUICtrlCreateContextMenu($LV_SYS[0])
    $Contextmenuitem_0[0] = GUICtrlCreateMenuItem('Task beenden', $Contextmenu[0])
    GUICtrlSetOnEvent(-1, 'Anw_Prog_P_S')
    $Contextmenuitem_0[1] = GUICtrlCreateMenuItem('Wechseln zu', $Contextmenu[0])
    GUICtrlSetOnEvent(-1, 'Anw_Prog_P_S')
    $Contextmenuitem_0[2] = GUICtrlCreateMenuItem('Neuer Task...', $Contextmenu[0])
    GUICtrlSetOnEvent(-1, 'Anw_Prog_P_S')

    [/autoit] [autoit][/autoit] [autoit]

    $Contextmenu[1] = GUICtrlCreateContextMenu($LV_SYS[1])
    $Contextmenuitem_1[0] = GUICtrlCreateMenuItem('Dateipfad öffnen', $Contextmenu[1])
    GUICtrlSetOnEvent(-1, 'Anw_Prog_P_S')
    $Contextmenuitem_1[1] = GUICtrlCreateMenuItem('Process beenden', $Contextmenu[1])
    GUICtrlSetOnEvent(-1, 'Anw_Prog_P_S')
    $Contextmenuitem_1[2] = GUICtrlCreateMenuItem('Priorität festlegen', $Contextmenu[1])
    GUICtrlSetOnEvent(-1, 'Anw_Prog_P_S')

    [/autoit] [autoit][/autoit] [autoit]

    $Contextmenu[2] = GUICtrlCreateContextMenu($LV_SYS[2])
    $Contextmenuitem_2[0] = GUICtrlCreateMenuItem('Dienst starten', $Contextmenu[2])
    GUICtrlSetOnEvent(-1, 'Anw_Prog_P_S')
    $Contextmenuitem_2[1] = GUICtrlCreateMenuItem('Dienst beenden', $Contextmenu[2])
    GUICtrlSetOnEvent(-1, 'Anw_Prog_P_S')

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    _GUICtrlListView_RegisterSortCallBack($Handle_LV_SYS[0])
    _GUICtrlListView_RegisterSortCallBack($Handle_LV_SYS[1])
    _GUICtrlListView_RegisterSortCallBack($Handle_LV_SYS[2])

    [/autoit] [autoit][/autoit] [autoit]

    $Form[1] = GUICreate('Priorität Festlegen', 350, 180, -1, -1)
    GUISetOnEvent(-3, 'Form_HIDE')
    $Label = GUICtrlCreateLabel('', 15, 20, 320, 25, $SS_CENTER)
    GUICtrlSetColor(-1, 0x0000FF)
    GUICtrlCreateLabel('Das Ändern der Priorität bestimmter Prozesse kann zu einer Instabilität des System führen.', 15, 55, 320, 25, $SS_CENTER)
    $Checkbox[0] = GUICtrlCreateButton('Niedrig', 40, 115, 60, 20)
    GUICtrlSetOnEvent(-1, 'Anw_Prog_P_S')
    $Checkbox[1] = GUICtrlCreateButton('Normal', 105, 115, 60, 20)
    GUICtrlSetOnEvent(-1, 'Anw_Prog_P_S')
    $Checkbox[2] = GUICtrlCreateButton('Hoch', 185, 115, 60, 20)
    GUICtrlSetOnEvent(-1, 'Anw_Prog_P_S')
    $Checkbox[3] = GUICtrlCreateButton('Echtzeit', 250, 115, 60, 20)
    GUICtrlSetOnEvent(-1, 'Anw_Prog_P_S')
    GUISetState(@SW_HIDE)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    AdlibRegister('Update', 1000)
    GUIRegisterMsg($WM_SIZE, 'WM_SIZE')
    GUIRegisterMsg($WM_NOTIFY, 'WM_NOTIFY')
    GUIRegisterMsg(0x0024, 'MY_WM_GETMINMAXINFO')

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func Update()
    Switch _GUICtrlTab_GetCurSel($Tab)
    Case 0
    WinListe_Update()
    _GUICtrlStatusBar_SetText($iStatus, ' Aktive Fenster : ' & _GUICtrlListView_GetItemCount($Handle_LV_SYS[0]), 0)
    Case 1
    Prozess_Update()
    _GUICtrlStatusBar_SetText($iStatus, ' Prozesse : ' & _GUICtrlListView_GetItemCount($Handle_LV_SYS[1]), 0)
    Case 2
    _GUICtrlStatusBar_SetText($iStatus, ' Dienste : ' & _GUICtrlListView_GetItemCount($Handle_LV_SYS[2]), 0)
    EndSwitch
    EndFunc ;==>Update

    [/autoit] [autoit][/autoit] [autoit]

    Func WinListe_Update()
    Local $GIC_Win_A_P = GetListViewToArray(0)
    Local $Zu_sa = ProcessWinList(New_Prozess(1, '', ''), _WinAPI_EnumWindowsTop(), $GIC_Win_A_P[0], $GIC_Win_A_P[1])
    If (UBound($Zu_sa) = 1 Or Not IsArray($Zu_sa)) Then Return (0)
    _GUIImageList_SetImageCount($Icon, _GUICtrlListView_GetItemCount($Handle_LV_SYS[0]))
    _GUICtrlListView_BeginUpdate($Handle_LV_SYS[0])
    For $i = 1 To $Zu_sa[0][0]
    $Index = _GUIImageList_AddIcon($Icon, $Zu_sa[$i][5])
    _GUICtrlListView_AddItem($Handle_LV_SYS[0], $Zu_sa[$i][0], $Index)
    _GUICtrlListView_AddSubItem($Handle_LV_SYS[0], $Index, $Zu_sa[$i][1], 1)
    _GUICtrlListView_AddSubItem($Handle_LV_SYS[0], $Index, $Zu_sa[$i][2], 2)
    _GUICtrlListView_AddSubItem($Handle_LV_SYS[0], $Index, $Zu_sa[$i][3], 3)
    _GUICtrlListView_AddSubItem($Handle_LV_SYS[0], $Index, $Zu_sa[$i][4], 4)
    _GUICtrlListView_AddSubItem($Handle_LV_SYS[0], $Index, $Zu_sa[$i][5], 5)
    _GUICtrlListView_AddSubItem($Handle_LV_SYS[0], $Index, $Zu_sa[$i][6], 6)
    Next
    Return _GUICtrlListView_EndUpdate($Handle_LV_SYS[0])
    EndFunc ;==>WinListe_Update

    [/autoit] [autoit][/autoit] [autoit]

    Func ProcessWinList($iPro, $iWin, $WinAlt, $WinAltPrue)
    Local $j = 1
    Local $F_Text
    Local $Temp[1]
    Local $Search_Index
    Local $ProWinTmp[10][7]
    For $i = 0 To UBound($iPro) - 1
    For $e = 1 To $iWin[0][0]
    If (WinGetProcess($iWin[$e][0]) = $iPro[$i][1] And $iPro[$i][1] <> @AutoItPID) Then
    $F_Text = WinGetTitle($iWin[$e][0])
    If ($F_Text <> '' And Not StringRegExp($iWin[$e][1], $Not_Klassenname)) Then
    $Search_Index = _ArraySearch($WinAlt, $F_Text) - 1
    If ($Search_Index = -1 Or $Search_Index = -2 Or BitAND(_ArraySearch($WinAltPrue, $iWin[$e][0]), @error)) Then
    If Win_Alt_Prue($WinAltPrue, $iWin[$e][0], $F_Text) Then
    _ArrayAdd($Temp, 'SetItemText' & $F_Text)
    ContinueLoop
    Else
    $ProWinTmp[$j][0] = $F_Text
    $ProWinTmp[$j][1] = $iPro[$i][0]
    $ProWinTmp[$j][2] = ' Wird ausgeführt '
    $ProWinTmp[$j][3] = WinGetProcess($iWin[$e][0])
    $ProWinTmp[$j][4] = $iWin[$e][0]
    $ProWinTmp[$j][5] = $iPro[$i][2]
    $ProWinTmp[$j][6] = $iWin[$e][1]
    $j += 1
    EndIf
    EndIf
    _ArrayAdd($Temp, $iWin[$e][0])
    EndIf
    EndIf
    Next
    Next
    $Temp[0] = UBound($Temp) - 1
    If ($Temp[0] < $WinAlt[0]) Then
    Local $AW_L_A = AW_L_A($Temp[0], $WinAlt[0])
    ReDim $Temp[UBound($WinAlt)]
    For $i = 1 To $WinAlt[0]
    If ($WinAltPrue[$i] <> $Temp[$i] And $Temp[$i] <> 'SetItemText' & _GUICtrlListView_GetItemText($Handle_LV_SYS[0], ($i - 1))) Then
    If ($AW_L_A = 0) Then Return (0)
    If _GUICtrlListView_DeleteItem($Handle_LV_SYS[0], ($i - 1)) Then $AW_L_A -= 1
    EndIf
    Next
    Else
    ReDim $ProWinTmp[$j][7]
    $ProWinTmp[0][0] = UBound($ProWinTmp) - 1
    Return $ProWinTmp
    EndIf
    EndFunc ;==>ProcessWinList

    [/autoit] [autoit][/autoit] [autoit]

    Func Win_Alt_Prue($WAP, $HWL, $F_Text)
    For $i = 1 To $WAP[0]
    If ($WAP[$i] = $HWL) Then
    If _GUICtrlListView_SetItemText($Handle_LV_SYS[0], ($i - 1), $F_Text) Then Return True
    EndIf
    Next
    Return False
    EndFunc ;==>Win_Alt_Prue

    [/autoit] [autoit][/autoit] [autoit]

    Func AW_L_A($TP, $WA)
    For $i = 0 To $WA
    If ($TP = $WA) Then Return ($i)
    $TP += 1
    Next
    EndFunc ;==>AW_L_A

    [/autoit] [autoit][/autoit] [autoit]

    Func Prozess_Update()
    Local $Pro_New, $Temp[1]
    Local $Pro_Alt = GetListViewToArray(1)
    Local $Pro_New_List = ProcessList()
    If (UBound($Pro_Alt) - 1 = UBound($Pro_New_List) - 2) Then Return (0)
    _GUICtrlListView_BeginUpdate($Handle_LV_SYS[1])
    For $i = 2 To $Pro_New_List[0][0]
    If BitAND(_ArraySearch($Pro_Alt, $Pro_New_List[$i][0]), @error) Then
    $Pro_New = New_Prozess(0, $Pro_New_List[$i][1], $Error)
    _GUICtrlListView_AddItem($Handle_LV_SYS[1], $Pro_New[0][0], _GUICtrlListView_GetItemCount($Handle_LV_SYS[1]))
    For $e = 1 To UBound($Pro_New, 2) - 1
    _GUICtrlListView_AddSubItem($Handle_LV_SYS[1], _GUICtrlListView_GetItemCount($Handle_LV_SYS[1]) - 1, $Pro_New[0][$e], $e)
    Next
    EndIf
    _ArrayAdd($Temp, $Pro_New_List[$i][0])
    Next
    $Temp[0] = UBound($Temp) - 1
    For $i = 1 To $Pro_Alt[0]
    If BitAND(_ArraySearch($Temp, $Pro_Alt[$i]), @error) Then _GUICtrlListView_DeleteItem($Handle_LV_SYS[1], _ArraySearch($Pro_Alt, $Pro_Alt[$i]) - 1)
    Next
    Return _GUICtrlListView_EndUpdate($Handle_LV_SYS[1])
    EndFunc ;==>Prozess_Update

    [/autoit] [autoit][/autoit] [autoit]

    Func GetListViewToArray($HWnd)
    Local $UB = _GUICtrlListView_GetItemCount($Handle_LV_SYS[$HWnd])
    Local $GCount[$UB + 1]
    Local $GCount_H[$UB + 1]
    $GCount[0] = $UB
    $GCount_H[0] = $UB
    For $i = 1 To $GCount[0]
    $GCount[$i] = _GUICtrlListView_GetItemText($Handle_LV_SYS[$HWnd], ($i - 1))
    If ($HWnd = 0) Then $GCount_H[$i] = _GUICtrlListView_GetItemText($Handle_LV_SYS[$HWnd], ($i - 1), 4)
    Next
    If ($HWnd = 0) Then
    Local $GCount_GCount_H[2]
    $GCount_GCount_H[0] = $GCount
    $GCount_GCount_H[1] = $GCount_H
    Return $GCount_GCount_H
    Else
    Return $GCount
    EndIf
    EndFunc ;==>GetListViewToArray

    [/autoit] [autoit][/autoit] [autoit]

    Func Anw_Prog_P_S()
    Switch _GUICtrlTab_GetCurSel($Tab)
    Case 0
    $iGetIthm = _GUICtrlListView_GetSelectionMark($Handle_LV_SYS[0])
    Switch @GUI_CtrlId
    Case $SYS[0], $Contextmenuitem_0[0]
    If ($iGetIthm > -1) Then
    If (WinClose(_GUICtrlListView_GetItemText($Handle_LV_SYS[0], $iGetIthm), '') = 0) Then
    If (MsgBox(4, 'Die Anwendung konnte nicht geschlossen werden!', 'Zwingen das Fenster zu schließen?') = 6) Then WinKill(_GUICtrlListView_GetItemText($Handle_LV_SYS[0], $iGetIthm), '')
    EndIf
    EndIf
    Case $SYS[1], $Contextmenuitem_0[1]
    If ($iGetIthm > -1) Then WinActivate(_GUICtrlListView_GetItemText($Handle_LV_SYS[0], $iGetIthm), '')
    Case $SYS[2], $MenuItem_0, $Contextmenuitem_0[2]
    Dim $New_Task = FileOpenDialog('Durchsuchen', @DesktopDir, 'Alle (*.*)', 1 + 2, '', $Form[0])
    If @error Then Return (0)
    ShellExecute($New_Task)
    EndSwitch
    Case 1
    $iGetIthm = _GUICtrlListView_GetSelectionMark($Handle_LV_SYS[1])
    Switch @GUI_CtrlId
    Case $SYS[3], $Contextmenuitem_1[1]
    If ($iGetIthm > -1) Then
    Dim $Text = 'Möchten sie "' & _GUICtrlListView_GetItemText($Handle_LV_SYS[1], $iGetIthm) & '" Beenden?' & @CRLF & @CRLF & _
    'Wenn sie ein geöffnetes Programm diesem Prozess zugeordnet ist, ' & _
    'wird es geschlossen und alle nicht gespeicherten Daten gehen Verloren ' & _
    'Wenn sie ein Systemprozess beenden, kann dieses dazu führen, dass das ' & _
    'System instabil wird. Möchten sie den Vorgang fortsetzen?'
    Dim $PID = ProcessExists(_GUICtrlListView_GetItemText($Handle_LV_SYS[1], $iGetIthm))
    If ($PID = 0) Then Return MsgBox(4112, 'Fehler', 'Der Process Existiert nicht!')
    If (MsgBox(4, 'Process_Beenden', $Text) = 6) Then
    Dim $P_Clos = ProcessClose($PID)
    Switch @error
    Case 1
    MsgBox(4112, 'Fehler', 'OpenProcess fehlgeschlagen!')
    Case 2
    MsgBox(4112, 'Fehler', 'AdjustTokenPrivileges fehlgeschlagen!')
    Case 3
    MsgBox(4112, 'Fehler', 'TerminateProcess fehlgeschlagen!')
    Case 4
    MsgBox(4112, 'Fehler', 'Es konnte nicht sichergestellt werden, ob der Prozess existiert!')
    EndSwitch
    EndIf
    EndIf
    Case $Contextmenuitem_1[0]
    If ($iGetIthm > -1) Then ShellExecute(StringTrimRight(_GUICtrlListView_GetItemText($Handle_LV_SYS[1], $iGetIthm, 5), StringLen(_GUICtrlListView_GetItemText($Handle_LV_SYS[1], $iGetIthm)) + 1))
    Case $Contextmenuitem_1[2]
    If ($iGetIthm > -1) Then
    $Set_Label = _GUICtrlListView_GetItemText($Handle_LV_SYS[1], $iGetIthm)
    GUICtrlSetData($Label, 'Möchten sie die Priorität von "' & $Set_Label & '" ändern?')
    GUISetState(@SW_SHOW, $Form[1])
    EndIf
    Case $Checkbox[0], $Checkbox[1], $Checkbox[2], $Checkbox[3]
    Dim $Set
    Switch GUICtrlRead(@GUI_CtrlId, 1)
    Case 'Niedrig'
    $Set = 0
    Case 'Normal'
    $Set = 2
    Case 'Hoch'
    $Set = 4
    Case 'Echtzeit'; nicht bei Win7
    $Set = 5
    EndSwitch
    ProcessSetPriority($Set_Label, $Set)
    GUISetState(@SW_HIDE, $Form[1])
    EndSwitch
    Case 2
    Dim $ErrHaw
    $iGetIthm = _GUICtrlListView_GetSelectionMark($Handle_LV_SYS[2])
    Switch @GUI_CtrlId
    Case $Contextmenuitem_2[0]
    If ($iGetIthm > -1) Then
    $ErrHaw = _Services_Running(_GUICtrlListView_GetItemText($Handle_LV_SYS[2], $iGetIthm))
    If ($ErrHaw = 'Erfolg') Then _GUICtrlListView_SetItemText($Handle_LV_SYS[2], $iGetIthm, ' Wird ausgeführt ', 5)
    EndIf
    MsgBox(0, '', $ErrHaw)
    Case $Contextmenuitem_2[1]
    If ($iGetIthm > -1) Then
    $ErrHaw = _Services_Stopp(_GUICtrlListView_GetItemText($Handle_LV_SYS[2], $iGetIthm))
    If ($ErrHaw = 'Erfolg') Then _GUICtrlListView_SetItemText($Handle_LV_SYS[2], $iGetIthm, ' Beendet ', 5)
    EndIf
    MsgBox(0, '', $ErrHaw)
    EndSwitch
    EndSwitch
    EndFunc ;==>Anw_Prog_P_S

    [/autoit] [autoit][/autoit] [autoit]

    Func WM_NOTIFY($HWnd, $iMsg, $iwParam, $ilParam)
    Local $hWndFrom, $iCode, $tNMHDR
    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, 'hWndFrom'))
    $iCode = DllStructGetData($tNMHDR, 'Code')
    Switch $hWndFrom
    Case $Handle_LV_SYS[0], $Handle_LV_SYS[1], $Handle_LV_SYS[2]
    Switch $iCode
    Case $LVN_COLUMNCLICK
    Local $tInfo = DllStructCreate($tagNMLISTVIEW, $ilParam)
    _GUICtrlListView_SortItems($hWndFrom, DllStructGetData($tInfo, 'SubItem'))
    EndSwitch
    EndSwitch
    Return $__LISTVIEWCONSTANT_GUI_RUNDEFMSG
    EndFunc ;==>WM_NOTIFY

    [/autoit] [autoit][/autoit] [autoit]

    Func MY_WM_GETMINMAXINFO($HWnd, $Msg, $wParam, $lParam)
    Local $Info_Chek = DllStructCreate('int;int;int;int;int;int;int;int;int;int', $lParam)
    DllStructSetData($Info_Chek, 7, $Breite_K)
    DllStructSetData($Info_Chek, 8, $Hoehe_K)
    DllStructSetData($Info_Chek, 9, $Breite)
    DllStructSetData($Info_Chek, 10, $Hoehe)
    Return
    EndFunc ;==>MY_WM_GETMINMAXINFO

    [/autoit] [autoit][/autoit] [autoit]

    Func WM_SIZE($HWnd, $iMsg, $iwParam, $ilParam)
    Local $aWinPos = WinGetPos($Form[0])
    Local $aParts[3] = [150, ($aWinPos[2] - 100), 50]
    _GUICtrlStatusBar_SetParts($iStatus, $aParts)
    _GUICtrlStatusBar_Resize($iStatus)
    EndFunc ;==>WM_SIZE

    [/autoit] [autoit][/autoit] [autoit]

    Func Com_Fehler()
    Switch $Com_Fehler
    Case 0
    $Error = True
    Case Else
    $Error = False
    EndSwitch
    EndFunc ;==>Com_Fehler

    [/autoit] [autoit][/autoit] [autoit]

    Func Ende()
    _GUICtrlListView_UnRegisterSortCallBack($Handle_LV_SYS[0])
    _GUICtrlListView_UnRegisterSortCallBack($Handle_LV_SYS[1])
    _GUICtrlListView_UnRegisterSortCallBack($Handle_LV_SYS[2])
    Exit
    EndFunc ;==>Ende

    [/autoit] [autoit][/autoit] [autoit]

    Func Form_HIDE()
    GUISetState(@SW_HIDE, @GUI_WinHandle)
    EndFunc ;==>Form_HIDE

    [/autoit] [autoit][/autoit] [autoit]

    Func Form_SHOW()
    GUISetState(@SW_SHOW, @GUI_WinHandle)
    EndFunc ;==>Form_SHOW

    [/autoit] [autoit][/autoit] [autoit]

    While 1 * Sleep(100)
    $mem = MemGetStats()
    _GUICtrlStatusBar_SetText($iStatus, StringFormat('%02d:%02d:%02d', @HOUR, @MIN, @SEC), 2)
    _GUICtrlStatusBar_SetText($iStatus, 'Physikalischer Speicher: ' & $mem[0] & '%', 1)
    WEnd

    [/autoit]

    LG Kleiner

  • Service_VB.au3

    • Kleiner
    • 16. Juli 2010 um 19:56

    Danke!


    LG Kleiner

  • Service_VB.au3

    • Kleiner
    • 16. Juli 2010 um 19:47

    Sorry vergessen, den Dienste-Name muss der Funktion übergeben werden!

    Die Beschreibungen werden noch ausführlich folgen.

    LG Kleiner

  • Service_VB.au3

    • Kleiner
    • 16. Juli 2010 um 19:28

    Ich habe zugleich noch eine Service.au3 geschrieben ( ich weiß im Englisch Forum gibt es schon eine ), ich komm noch nicht mit der DLL Verarbeitung zu Recht darum habe ich die VBS Skripte umgeschrieben.

    Inhalt: Service : Installieren, Starten, Beenden, Pausieren, Aktualisieren und Löschen (wenn zugelassen)
    Und vieles mehr.
    Da kommen noch ein paar Funktionen dazu, vielleicht hat einer von euch noch Ideen und Anregungen?

    Service_VB.au3

    Spoiler anzeigen
    [autoit]

    #RequireAdmin

    [/autoit] [autoit][/autoit] [autoit]

    Func _Services_Running($Dienst)
    ;Startet ein Service
    Local $errCode, $objWM, $co
    $objWMI = ObjGet('winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2')
    $co = $objWMI.ExecQuery('Select * from Win32_Service WHERE name = "' & $Dienst & '"')
    If Not IsObj($co) Then Return SetError(1, 1, -1)
    For $ob In $co
    Return _Service_Error($ob.StartService())
    Next
    EndFunc ;==>_Services_Running

    [/autoit] [autoit][/autoit] [autoit]

    Func _Services_Stopp($Dienst)
    ;Beendet ein Service
    Local $objWM, $co
    $objWMI = ObjGet('winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2')
    $co = $objWMI.ExecQuery('Select * from Win32_Service WHERE name = "' & $Dienst & '"')
    If Not IsObj($co) Then Return SetError(1, 1, -1)
    For $ob In $co
    Return _Service_Error($ob.StopService())
    Next
    EndFunc ;==>_Services_Stopp

    [/autoit] [autoit][/autoit] [autoit]

    Func _Services_Pause($Dienst)
    ;Pause ein Service
    Local $errCode, $objWM, $co
    $objWMI = ObjGet('winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2')
    $co = $objWMI.ExecQuery('Select * from Win32_Service WHERE name = "' & $Dienst & '"')
    If Not IsObj($co) Then Return SetError(1, 1, -1)
    For $ob In $co
    Return _Service_Error($ob.PauseService())
    Next
    EndFunc ;==>_Services_Pause

    [/autoit] [autoit][/autoit] [autoit]

    Func _Services_InterrogateService($Dienst)
    ;Fordert, dass ein Dienst seinen Status aktualisieren
    Local $errCode, $objWM, $co
    $objWMI = ObjGet('winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2')
    $co = $objWMI.ExecQuery('Select * from Win32_Service WHERE name = "' & $Dienst & '"')
    If Not IsObj($co) Then Return SetError(1, 1, -1)
    For $ob In $co
    Return _Service_Error($ob.InterrogateService())
    Next
    EndFunc ;==>_Services_InterrogateService

    [/autoit] [autoit][/autoit] [autoit]

    Func _Services_Resume($Dienst)
    ; Startet eine Auto-Start-Dienstleistungen, die angehalten wurde.
    Local $errCode, $objWM, $co
    $objWMI = ObjGet('winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2')
    $co = $objWMI.ExecQuery('Select * from Win32_Service WHERE Name = "' & $Dienst & '" and State = "Paused" and StartMode = "Auto"')
    If Not IsObj($co) Then Return SetError(1, 1, -1)
    For $ob In $co
    Return _Service_Error($ob.ResumeService())
    Next
    EndFunc ;==>_Services_Resume

    [/autoit] [autoit][/autoit] [autoit]

    Func _Get_LoadOrderGroup()
    ; Listet alle Load Order Group ( kann man auch aus der Restrierung auslesen unter HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\GroupOrderList )
    Local $objWMI = ObjGet('winmgmts:\\.\root\cimv2')
    Local $co = $objWMI.ExecQuery('Select * from Win32_LoadOrderGroup')
    If Not IsObj($co) Then SetError(1, 1, -1)
    Local $Return_Array[$co.Count][4], $i = 0
    For $ob In $co
    $Return_Array[$i][0] = $ob.Name
    $Return_Array[$i][1] = $ob.DriverEnabled
    $Return_Array[$i][2] = $ob.GroupOrder
    $Return_Array[$i][3] = $ob.Status
    $i += 1
    Next
    Return $Return_Array
    EndFunc ;==>_Get_LoadOrderGroup

    [/autoit] [autoit][/autoit] [autoit]

    Func _Services_VDependent($Dienst)
    ;Auflisten Dependent Vordersatz Dienste für ein Service
    Local $Return_Array, $objWMI, $co
    $objWMI = ObjGet('winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2')
    $co = $objWMI.ExecQuery('Associators of {Win32_service.Name="' & $Dienst & '"} Where AssocClass=Win32_DependentService Role=Dependent')
    If Not IsObj($co) Then Return SetError(1, 1, -1)
    For $ob In $co
    $Return_Array &= '|' & $ob.DisplayName
    Next
    Return StringSplit(StringTrimLeft($Return_Array, 1), '|')
    EndFunc ;==>_Services_VDependent

    [/autoit] [autoit][/autoit] [autoit]

    Func _Services_VAntecedent($Dienst)
    ;Auflisten Antecedent Vordersatz Dienste für ein Service
    Local $Return_Array, $objWMI, $co
    $objWMI = ObjGet('winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2')
    $co = $objWMI.ExecQuery('Associators of {Win32_service.Name="' & $Dienst & '"} Where AssocClass=Win32_DependentService Role=Antecedent')
    If Not IsObj($co) Then Return SetError(1, 1, -1)
    For $ob In $co
    $Return_Array &= '|' & $ob.DisplayName
    Next
    Return StringSplit(StringTrimLeft($Return_Array, 1), '|')
    EndFunc ;==>_Services_VAntecedent

    [/autoit] [autoit][/autoit] [autoit]

    Func _Services_RunStopp($State)
    ; Liste aller Laufenden oder gestoppten Service [ Running , Stopped)
    Local $objWMI = ObjGet('winmgmts:{impersonationLevel=Impersonate}!\\.\root\cimv2')
    Local $co = $objWMI.ExecQuery('SELECT * FROM Win32_Service WHERE State = "' & $State & '"')
    If Not IsObj($co) Then Return SetError(1, 1, -1)
    Local $Return_Array[$co.Count][2], $i = 0
    For $ob In $co
    $Return_Array[$i][0] = $ob.DisplayName
    $Return_Array[$i][1] = $ob.State
    $i += 1
    Next
    Return $Return_Array
    EndFunc ;==>_Services_RunStopp

    [/autoit] [autoit][/autoit] [autoit]

    Func _Services_RIProzess($ProcessID)
    ;Bestimmende Running Services im Prozess
    Local $Return_Array, $objWMI, $co
    $objWMI = ObjGet('winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2')
    $co = $objWMI.ExecQuery('Select * from Win32_Service Where ProcessID = "' & $ProcessID & '"')
    If Not IsObj($co) Then Return SetError(1, 1, -1)
    For $ob In $co
    $Return_Array &= '|' & $ob.DisplayName
    Next
    Return StringSplit(StringTrimLeft($Return_Array, 1), '|')
    EndFunc ;==>_Services_RIProzess

    [/autoit] [autoit][/autoit] [autoit]

    Func _Services_Properties($Dienst)
    ;Abrufen von ein Service die Properties
    Local $Return_Array, $objWMI, $co
    $objWMI = ObjGet('winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2')
    $co = $objWMI.ExecQuery('Select * from Win32_Service Where Name = "' & $Dienst & '"')
    If Not IsObj($co) Then Return SetError(1, 1, -1)
    For $ob In $co
    $Return_Array &= '|' & $ob.SystemName & '|' & $ob.Name & '|' & $ob.ServiceType & '|' & $ob.State & '|' & $ob.ExitCode & '|' & _
    $ob.ProcessID & '|' & $ob.AcceptPause & '|' & $ob.AcceptStop & '|' & $ob.Caption & '|' & $ob.Description & '|' & _
    $ob.DesktopInteract & '|' & $ob.DisplayName & '|' & $ob.ErrorControl & '|' & $ob.PathName & '|' & $ob.Started & '|' & _
    $ob.StartName & '|' & $ob.Status & '|' & $ob.StartMode
    Next
    Return StringSplit(StringTrimLeft($Return_Array, 1), '|')
    EndFunc ;==>_Services_Properties

    [/autoit] [autoit][/autoit] [autoit]

    Func _Services_All()
    ;Listet alle Services eines PC
    Local $ServSet = ObjGet('winmgmts:{impersonationLevel=impersonate}!//.')
    Local $ob = $ServSet.InstancesOf('Win32_Service')
    If Not IsObj($ob) Then Return SetError(1, 1, -1)
    Local $Return_Array[$ob.Count][9], $i = 0
    For $Serv In $ob
    $Return_Array[$i][0] = $Serv.Name
    $Return_Array[$i][1] = $Serv.acceptPause
    $Return_Array[$i][2] = $Serv.acceptStop
    $Return_Array[$i][3] = $Serv.PathName
    $Return_Array[$i][4] = $Serv.Status
    $Return_Array[$i][5] = $Serv.State
    $Return_Array[$i][6] = $Serv.StartMode
    $Return_Array[$i][7] = $Serv.StartName
    $Return_Array[$i][8] = $Serv.Caption
    $i += 1
    Next
    Return $Return_Array
    EndFunc ;==>_Services_All

    [/autoit] [autoit][/autoit] [autoit]

    Func _GetAccep_ServicesPause($Flag)
    ; Listet alle die in Pause geschickt werden können oder nicht [ True, False ]
    Local $objWMI = ObjGet('winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2')
    Local $co = $objWMI.ExecQuery('Select * from Win32_Service Where AcceptPause = ' & $Flag)
    If Not IsObj($co) Then Return SetError(1, 1, -1)
    Local $Return_Array[$co.Count][3], $i = 0
    For $ob In $co
    $Return_Array[$i][0] = $ob.ProcessID
    $Return_Array[$i][1] = $ob.Name
    $Return_Array[$i][2] = $ob.DisplayName
    $i += 1
    Next
    Return $Return_Array
    EndFunc ;==>_GetAccep_ServicesPause

    [/autoit] [autoit][/autoit] [autoit]

    Func _GetAccep_ServicesStopp($Flag)
    ; Listet alle die gestoppt werden können oder nicht [ True, False ]
    Local $objWMI = ObjGet('winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2')
    Local $co = $objWMI.ExecQuery('Select * from Win32_Service Where AcceptStop = ' & $Flag)
    If Not IsObj($co) Then Return SetError(1, 1, -1)
    Local $Return_Array[$co.Count][3], $i = 0
    For $ob In $co
    $Return_Array[$i][0] = $ob.ProcessID
    $Return_Array[$i][1] = $ob.Name
    $Return_Array[$i][2] = $ob.DisplayName
    $i += 1
    Next
    Return $Return_Array
    EndFunc ;==>_GetAccep_ServicesStopp

    [/autoit] [autoit][/autoit] [autoit]

    Func _Services_Install($Name, $DisplayName, $PathName, Const $ServiceType, Const $ErrorControl, $StartMode, Const $DesktopInteract, $StartName, $StartPassword = '')
    ; Installieren eines Services
    Local $objWMI, $co
    $objWMI = ObjGet('winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2')
    $co = $objWMI.Get('Win32_BaseService')
    If Not IsObj($co) Then Return SetError(1, 1, -1)
    Return _Service_Error($co.Create($Name, $DisplayName, $PathName, $ServiceType, $ErrorControl, $StartMode, $DesktopInteract, $StartName, $StartPassword = ''))
    EndFunc ;==>_Services_Install

    [/autoit] [autoit][/autoit] [autoit]

    Func _Services_Entfernen($Dienst)
    ;Entfernen ein Service
    Local $objWM, $co
    $objWMI = ObjGet('winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2')
    $co = $objWMI.ExecQuery('Select * from Win32_Service WHERE name = "' & $Dienst & '"')
    If Not IsObj($co) Then Return SetError(1, 1, -1)
    For $ob In $co
    If $ob.StopService() Then Return _Service_Error($ob.Delete())
    Next
    EndFunc ;==>_Services_Entfernen

    [/autoit] [autoit][/autoit] [autoit]

    Func _Service_Error($Error)
    ; Error Handle
    Local $Rerurn
    Switch $Error
    Case 0
    $Rerurn = 'Erfolg'
    Case 1
    $Rerurn = 'Nicht unterstützt'
    Case 2
    $Rerurn = 'Zugriff verweigert'
    Case 3
    $Rerurn = 'Abhängige Dienste werden ausgeführt'
    Case 4
    $Rerurn = 'Invalid Service Control Ungültige Service Control'
    Case 5
    $Rerurn = 'Service Control kann nicht akzeptieren'
    Case 6
    $Rerurn = 'Service ist nicht aktiv'
    Case 7
    $Rerurn = 'Service Request timeout'
    Case 8
    $Rerurn = 'Unbekannter Fehler'
    Case 9
    $Rerurn = 'Pfad nicht gefunden'
    Case 10
    $Rerurn = 'Service bereits gestoppt'
    Case 11
    $Rerurn = 'Service Datenbank gesperrt'
    Case 12
    $Rerurn = 'Service Dependency Deleted'
    Case 13
    $Rerurn = 'Service Dependency Failure'
    Case 14
    $Rerurn = 'Service für Behinderte'
    Case 15
    $Rerurn = 'Service Fehler bei der Anmeldung'
    Case 16
    $Rerurn = 'Service zum Löschen markiert'
    Case 17
    $Rerurn = 'Service Nr. Thread'
    Case 18
    $Rerurn = 'Status Circular Dependency'
    Case 19
    $Rerurn = 'Status Duplicate Name'
    Case 20
    $Rerurn = 'Status - Ungültiger Name'
    Case 21
    $Rerurn = 'Status - Ungültiger Parameter'
    Case 22
    $Rerurn = 'Status - Invalid Service Account'
    Case 23
    $Rerurn = 'Status - Dienst existiert'
    Case 24
    $Rerurn = 'Service bereits angehalten'
    EndSwitch
    Return $Rerurn
    EndFunc ;==>_Service_Error

    [/autoit]

    LG Kleiner

    Dateien

    Service_VB.au3 10,3 kB – 357 Downloads
  • Task_Manager v0.1

    • Kleiner
    • 16. Juli 2010 um 19:16

    Danke werde ich mir ansehen!

    Wie sind die Icon bei?

    LG Kleiner

  • Task_Manager v0.1

    • Kleiner
    • 16. Juli 2010 um 18:58

    Super aaaaaaaaber 8|?( warum?

    Mal sehen was von anderen User kommt!

    Viel spass

    LG Kleiner

  • Task_Manager v0.1

    • Kleiner
    • 16. Juli 2010 um 18:49

    Ich weiß jetzt nicht genau ob das was bringt den Manager immer im Vordergrund zu halten aber Probier mal bitte.
    Setz in die While schleife folgendes ein :

    [autoit]

    WinSetOnTop($Form[0], '', 1)

    [/autoit]

    LG Kleiner

  • Task_Manager v0.1

    • Kleiner
    • 16. Juli 2010 um 18:24

    Dann steckt da immer noch der Wurm drin, bei mir Egal was ich Starte oder Beende läuft wunderbar. ?(

    LG Kleiner

  • Task_Manager v0.1

    • Kleiner
    • 16. Juli 2010 um 18:11

    Habe das selbe OS!

    Ist es immer so?

    LG Kleiner

  • Task_Manager v0.1

    • Kleiner
    • 16. Juli 2010 um 18:08

    Die Iconn´s :cursing:

    Es wird bei dir aus unerklärlichen gründen der falsche Index gelöscht!

    Ich habe lang daran gearbeitet bis bei mir unter Win7 alles gut läuft, welches OS hast du?

    Das mit den Sortierungen wird noch folgen.

    LG Keiner

  • Task_Manager v0.1

    • Kleiner
    • 16. Juli 2010 um 17:27

    Hi Leute!

    Die erste Testversion vom Task Manager ist fertig, nun stelle ich ihn euch vor.
    Ich bin auf die Idee gekommen als ich den Autoit_taskmanager von Raupi gesehen habe.

    Anzeige: alle Anwendungen + beenden + starten + wechseln zu (anzeige Icon´s)
    alle Prozesse + beenden + starten
    alle Dienste + beenden + starten (wenn zugelassen)


    Update: 27.11.2010 Bug´s behoben und die CPU leistung gesenkt für den Code.

    Neu: CPU anzeige + Arbeitsspeicher
    !Bugs behoben Icon darstellung!
    Sortierung

    Spoiler anzeigen
    [autoit]

    #RequireAdmin
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Icon=ICON_385.ICO
    #AutoIt3Wrapper_UseX64=n
    #AutoIt3Wrapper_Au3Check_Parameters=-q -d -I dir -w1 -w2 -w3 -w4 -w5 -w6 -v1 -v2 -v3
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include <Array.au3>
    #include <System.au3>
    #include <GuiTab.au3>
    #include <GuiListView.au3>
    #include <GuiImageList.au3>
    #include <GuiStatusBar.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <ListViewConstants.au3>
    #include <ProgressConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Opt('GUIOnEventMode', 1)
    Opt('MustDeclareVars', 1)
    Opt('WinTitleMatchMode', 3)

    [/autoit] [autoit][/autoit] [autoit]

    $Debug_LV = False

    [/autoit] [autoit][/autoit] [autoit]

    Global $Form[3]

    [/autoit] [autoit][/autoit] [autoit]

    Global $Breite = @DesktopWidth
    Global $Hoehe = @DesktopHeight
    Global $EigenPID = @AutoItPID
    Global $Breite_K = 410
    Global $Hoehe_K = 455

    [/autoit] [autoit][/autoit] [autoit]

    Global Const $WM_APPCOMMAND = 0x319
    Global Const $tagNMHDR_0 = 'hwnd hWndFrom;uint_ptr IDFrom;INT Code'
    Global Const $tagNMLISTVIEW_0 = $tagNMHDR_0 & ';int Item;int SubItem;int NewState;int OldState;int Changed;int ActionX;int ActionY;int Param'

    [/autoit] [autoit][/autoit] [autoit]

    Global $Tab
    Global $WinTmp
    Global $SYS[30]
    Global $Null = 0
    Global $Menue_SYS[2], $MenuItem_0, $iIndex
    Global $aWinList, $aProcess, $aProcess_0, $Icon, $Trans = 0.2, $laenge = 400
    Global $iParts[3] = [180, 780, 50], $iStatus, $Dienste, $mem, $iGetIthm = -1, $Checkbox[4], $Label, $Set_Label, $Set_Prio
    Global $Bezeichnung_0[7][2] = [['Task', 260],['EXE', 60],['Status', 60],['PID', 40],['Handel', 100],['Pfad', 260],['Klassenname', 100]]
    Global $LV_SYS[5], $Handle_LV_SYS[5], $Index = 0, $Contextmenu[3], $Contextmenuitem_0[3], $Contextmenuitem_1[3], $Contextmenuitem_2[2], $Prio_Item[4]
    Global $Bezeichnung_1[8] = ['ProzesseName', 'PID', 'Parent PID', 'Eigentümer', 'Priorität', 'Ausführbaren Pfad', 'Geschriebenen Daten', 'Speichernutzung']
    Global $Bezeichnung_2[10] = ['Interner Name', 'PID', 'Akzeptiert Pause', 'Akzeptiert Stop', 'Pfad', 'Status', 'Zustand', 'StartMode', 'StartName', 'Beschreibung']

    [/autoit] [autoit][/autoit] [autoit]

    Global Static $objRefresher = ObjCreate('WbemScripting.SWbemRefresher')
    Global Static $objRefreshableItem = $objRefresher.AddEnum(ObjGet('winmgmts:\\' & @ComputerName & '\root\CIMV2'), 'Win32_PerfFormattedData_PerfOS_Processor')

    [/autoit] [autoit][/autoit] [autoit]

    $objRefresher.Refresh(0)

    [/autoit] [autoit][/autoit] [autoit]

    If IsObj($objRefreshableItem) Then Global Static $aCPU[$objRefreshableItem.ObjectSet.Count]
    Global $Set_Prog = $Null, $core[UBound($aCPU) - 1], $l_core[UBound($aCPU) - 1], $P_core[UBound($aCPU) - 1]

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    If (@OSArch = 'X86') Then $Trans = 10

    [/autoit] [autoit][/autoit] [autoit]

    Switch UBound($aCPU) - 1
    Case 6
    $laenge += 150
    Case 8
    $laenge += 250
    Case 12
    $laenge += 450
    EndSwitch

    [/autoit] [autoit][/autoit] [autoit]

    $Form[$Null] = GUICreate('Task_Manager v0.1', 870, 460, (@DesktopWidth - 870) / 2, (@DesktopHeight - 460) / 2, $WS_OVERLAPPEDWINDOW + $WS_CLIPSIBLINGS)
    GUISetOnEvent(-3, 'Ende')

    [/autoit] [autoit][/autoit] [autoit]

    $Menue_SYS[$Null] = GUICtrlCreateMenu(' Datein ')
    $MenuItem_0 = GUICtrlCreateMenuItem(' Neuer Task ( Ausführen.... ) ', $Menue_SYS[$Null])
    GUICtrlSetOnEvent(-1, 'Anw_Prog_P_S')
    GUICtrlCreateMenuItem(' Leistung ', $Menue_SYS[$Null])
    GUICtrlSetOnEvent(-1, '_CPU_Darstellung')
    GUICtrlCreateMenuItem(' Beenden ', $Menue_SYS[$Null])
    GUICtrlSetOnEvent(-1, 'Ende')

    [/autoit] [autoit][/autoit] [autoit]

    $Tab = GUICtrlCreateTab(10, 8, 850, 400)
    GUICtrlSetResizing(-1, $GUI_DOCKTOP + $GUI_DOCKLEFT + $GUI_DOCKBOTTOM + $GUI_DOCKRIGHT)

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlCreateTabItem('Anwendungen')
    $LV_SYS[$Null] = GUICtrlCreateListView('', 25, 50, 818, 315, $LVS_SINGLESEL + $LVS_EX_DOUBLEBUFFER)
    GUICtrlSetResizing(-1, $GUI_DOCKTOP + $GUI_DOCKLEFT + $GUI_DOCKRIGHT + $GUI_DOCKBOTTOM)
    $Handle_LV_SYS[$Null] = GUICtrlGetHandle($LV_SYS[$Null])
    GUICtrlSetFont(-1, 9, 150, '', 'Calibri')

    [/autoit] [autoit][/autoit] [autoit]

    $Icon = _GUIImageList_Create(16, 16, 5)
    _GUICtrlListView_SetImageList($Handle_LV_SYS[$Null], $Icon, 1)

    [/autoit] [autoit][/autoit] [autoit]

    For $i = $Null To 6
    _GUICtrlListView_AddColumn($Handle_LV_SYS[$Null], $Bezeichnung_0[$i][$Null], $Bezeichnung_0[$i][1])
    Next

    [/autoit] [autoit][/autoit] [autoit]

    $aWinList = StartCallback()
    If @error Then ErrorExit()
    $aProcess = New_Prozess(1, '', '')

    [/autoit] [autoit][/autoit] [autoit]

    If IsArray($aProcess) Then
    _GUICtrlListView_BeginUpdate($Handle_LV_SYS[$Null])
    For $i = 1 To $aWinList[0][0]
    $iIndex = IsInArray($aProcess, $aWinList[$i][3], 1, 0, 0, 0, 1)
    If Not @error And ($aProcess[$iIndex][1] <> $EigenPID) Then
    $Index = _GUIImageList_AddIcon($Icon, $aProcess[$iIndex][2])
    _GUICtrlListView_AddItem($Handle_LV_SYS[0], $aWinList[$i][1], $Index)
    _GUICtrlListView_AddSubItem($Handle_LV_SYS[$Null], $Index, $aProcess[$iIndex][$Null], 1)
    _GUICtrlListView_AddSubItem($Handle_LV_SYS[$Null], $Index, ' Wird ausgeführt ', 2)
    _GUICtrlListView_AddSubItem($Handle_LV_SYS[$Null], $Index, $aWinList[$i][3], 3)
    _GUICtrlListView_AddSubItem($Handle_LV_SYS[$Null], $Index, $aWinList[$i][$Null], 4)
    _GUICtrlListView_AddSubItem($Handle_LV_SYS[$Null], $Index, $aProcess[$iIndex][2], 5)
    _GUICtrlListView_AddSubItem($Handle_LV_SYS[$Null], $Index, $aWinList[$i][2], 6)
    EndIf
    Next
    _GUICtrlListView_EndUpdate($Handle_LV_SYS[$Null])
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    $SYS[$Null] = GUICtrlCreateButton('Task beenden', 535, 375, 100, 22)
    GUICtrlSetResizing(-1, $GUI_DOCKRIGHT + $GUI_DOCKWIDTH + $GUI_DOCKBOTTOM + $GUI_DOCKHEIGHT)
    GUICtrlSetOnEvent(-1, 'Anw_Prog_P_S')
    $SYS[1] = GUICtrlCreateButton('Wechseln zu', 640, 375, 100, 22)
    GUICtrlSetResizing(-1, $GUI_DOCKRIGHT + $GUI_DOCKWIDTH + $GUI_DOCKBOTTOM + $GUI_DOCKHEIGHT)
    GUICtrlSetOnEvent(-1, 'Anw_Prog_P_S')
    $SYS[2] = GUICtrlCreateButton('Neuer Task...', 745, 375, 100, 22)
    GUICtrlSetResizing(-1, $GUI_DOCKRIGHT + $GUI_DOCKWIDTH + $GUI_DOCKBOTTOM + $GUI_DOCKHEIGHT)
    GUICtrlSetOnEvent(-1, 'Anw_Prog_P_S')

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlCreateTabItem('Processe')
    $LV_SYS[1] = GUICtrlCreateListView('', 25, 50, 818, 315, $LVS_SINGLESEL + $LVS_EX_DOUBLEBUFFER)
    GUICtrlSetResizing(-1, $GUI_DOCKTOP + $GUI_DOCKLEFT + $GUI_DOCKRIGHT + $GUI_DOCKBOTTOM)
    $Handle_LV_SYS[1] = GUICtrlGetHandle($LV_SYS[1])
    GUICtrlSetFont(-1, 9, 150, '', 'Calibri')

    [/autoit] [autoit][/autoit] [autoit]

    For $i = $Null To 7
    _GUICtrlListView_AddColumn($Handle_LV_SYS[1], $Bezeichnung_1[$i], 100)
    Next

    [/autoit] [autoit][/autoit] [autoit]

    $aProcess_0 = New_Prozess(2, '', '')
    If IsArray($aProcess_0) Then
    _GUICtrlListView_BeginUpdate($Handle_LV_SYS[1])
    _GUICtrlListView_AddArray($LV_SYS[1], $aProcess_0)
    _GUICtrlListView_EndUpdate($Handle_LV_SYS[1])
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    $SYS[3] = GUICtrlCreateButton('Process beenden', 745, 375, 100, 22)
    GUICtrlSetResizing(-1, $GUI_DOCKRIGHT + $GUI_DOCKWIDTH + $GUI_DOCKBOTTOM + $GUI_DOCKHEIGHT)
    GUICtrlSetOnEvent(-1, 'Anw_Prog_P_S')

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlCreateTabItem('Dienste')
    $LV_SYS[2] = GUICtrlCreateListView('', 25, 50, 818, 315, $LVS_SINGLESEL + $LVS_EX_DOUBLEBUFFER)
    GUICtrlSetResizing(-1, $GUI_DOCKTOP + $GUI_DOCKLEFT + $GUI_DOCKRIGHT + $GUI_DOCKBOTTOM)
    $Handle_LV_SYS[2] = GUICtrlGetHandle($LV_SYS[2])
    GUICtrlSetFont(-1, 9, 150, '', 'Calibri')

    [/autoit] [autoit][/autoit] [autoit]

    For $i = $Null To 9
    _GUICtrlListView_AddColumn($Handle_LV_SYS[2], $Bezeichnung_2[$i], 100)
    Next

    [/autoit] [autoit][/autoit] [autoit]

    $Dienste = LA_Services(@ComputerName)
    If IsArray($Dienste) Then
    _GUICtrlListView_BeginUpdate($Handle_LV_SYS[2])
    _GUICtrlListView_AddArray($LV_SYS[2], $Dienste)
    _GUICtrlListView_EndUpdate($Handle_LV_SYS[2])
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlCreateTabItem('')
    $iStatus = _GUICtrlStatusBar_Create($Form[$Null])
    _GUICtrlStatusBar_SetParts($iStatus, $iParts)

    [/autoit] [autoit][/autoit] [autoit]

    $Contextmenu[$Null] = GUICtrlCreateContextMenu($LV_SYS[$Null])
    $Contextmenuitem_0[$Null] = GUICtrlCreateMenuItem('Task beenden', $Contextmenu[$Null])
    GUICtrlSetOnEvent(-1, 'Anw_Prog_P_S')
    $Contextmenuitem_0[1] = GUICtrlCreateMenuItem('Wechseln zu', $Contextmenu[$Null])
    GUICtrlSetOnEvent(-1, 'Anw_Prog_P_S')
    $Contextmenuitem_0[2] = GUICtrlCreateMenuItem('Neuer Task...', $Contextmenu[$Null])
    GUICtrlSetOnEvent(-1, 'Anw_Prog_P_S')

    [/autoit] [autoit][/autoit] [autoit]

    $Contextmenu[1] = GUICtrlCreateContextMenu($LV_SYS[1])
    $Contextmenuitem_1[$Null] = GUICtrlCreateMenuItem('Dateipfad öffnen', $Contextmenu[1])
    GUICtrlSetOnEvent(-1, 'Anw_Prog_P_S')
    $Contextmenuitem_1[1] = GUICtrlCreateMenuItem('Process beenden', $Contextmenu[1])
    GUICtrlSetOnEvent(-1, 'Anw_Prog_P_S')
    $Contextmenuitem_1[2] = GUICtrlCreateMenuItem('Priorität festlegen', $Contextmenu[1])
    GUICtrlSetOnEvent(-1, 'Anw_Prog_P_S')

    [/autoit] [autoit][/autoit] [autoit]

    $Contextmenu[2] = GUICtrlCreateContextMenu($LV_SYS[2])
    $Contextmenuitem_2[$Null] = GUICtrlCreateMenuItem('Dienst starten', $Contextmenu[2])
    GUICtrlSetOnEvent(-1, 'Anw_Prog_P_S')
    $Contextmenuitem_2[1] = GUICtrlCreateMenuItem('Dienst beenden', $Contextmenu[2])
    GUICtrlSetOnEvent(-1, 'Anw_Prog_P_S')
    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    $Form[1] = GUICreate('Priorität Festlegen', 350, 180, -1, -1)
    GUISetOnEvent(-3, 'Form_HIDE')
    $Label = GUICtrlCreateLabel('', 15, 20, 320, 25, $SS_CENTER)
    GUICtrlSetColor(-1, 0x0000FF)
    GUICtrlCreateLabel('Das Ändern der Priorität bestimmter Prozesse kann zu einer Instabilität des System führen.', 15, 55, 320, 25, $SS_CENTER)
    $Checkbox[$Null] = GUICtrlCreateButton('Niedrig', 40, 115, 60, 20)
    GUICtrlSetOnEvent(-1, 'Anw_Prog_P_S')
    $Checkbox[1] = GUICtrlCreateButton('Normal', 105, 115, 60, 20)
    GUICtrlSetOnEvent(-1, 'Anw_Prog_P_S')
    $Checkbox[2] = GUICtrlCreateButton('Hoch', 185, 115, 60, 20)
    GUICtrlSetOnEvent(-1, 'Anw_Prog_P_S')
    $Checkbox[3] = GUICtrlCreateButton('Echtzeit', 250, 115, 60, 20)
    GUICtrlSetOnEvent(-1, 'Anw_Prog_P_S')
    GUISetState(@SW_HIDE, $Form[1])

    [/autoit] [autoit][/autoit] [autoit]

    $Form[2] = GUICreate('Leistung', $laenge, 460, -1, -1, BitOR($WS_CAPTION, $WS_POPUP, $WS_SYSMENU), $WS_EX_TOPMOST)

    [/autoit] [autoit][/autoit] [autoit]

    For $i = $Null To UBound($aCPU) - 2
    If $i Then $Set_Prog = 70 * $i
    $core[$i] = GUICtrlCreateProgress(50 + $Set_Prog, 65, 60, 160, $PBS_VERTICAL)
    $P_core[$i] = GUICtrlCreateLabel('', 50 + $Set_Prog, 230, 50, 20, $SS_CENTER)
    $l_core[$i] = GUICtrlCreateLabel('CPU ' & $i + 1, 50 + $Set_Prog, 45, 50, 20, $SS_CENTER)
    Next

    [/autoit] [autoit][/autoit] [autoit]

    Global $Arbeitspeicher = GUICtrlCreateProgress(50, 280, 80, 140, $PBS_VERTICAL)
    Global $l_Arbeitspeicher = GUICtrlCreateLabel('Arbeitsspeicher', 40, 260, 100, 20, $SS_CENTER)
    Global $P_Arbeitspeicher = GUICtrlCreateLabel('', 50, 425, 80, 20, $SS_CENTER)
    GUICtrlCreateGroup('Physikalischer Speicher (MB)', 160, 300, 170, 110)
    GUICtrlCreateLabel('Insgesamt : ', 180, 330, 60, 19)
    Global $GesamtRAM = GUICtrlCreateInput('', 270, 330, 40, 19, $ES_READONLY + $ES_CENTER)
    GUICtrlCreateLabel('Verfügbar : ', 180, 355, 60, 19)
    Global $VerfuegbarerRAM = GUICtrlCreateInput('', 270, 355, 40, 19, $ES_READONLY + $ES_CENTER)
    GUICtrlCreateLabel('Benutzt : ', 180, 380, 60, 19)
    Global $BenutztRAM = GUICtrlCreateInput('', 270, 380, 40, 19, $ES_READONLY + $ES_CENTER)
    GUISetState(@SW_HIDE, $Form[2])

    [/autoit] [autoit][/autoit] [autoit]

    AdlibRegister('Update', 1000)
    GUIRegisterMsg($WM_SIZE, 'WM_SIZE')
    GUIRegisterMsg($WM_NOTIFY, 'WM_NOTIFY')
    GUIRegisterMsg(0x0024, 'MY_WM_GETMINMAXINFO')

    [/autoit] [autoit][/autoit] [autoit]

    Func Update()
    Switch _GUICtrlTab_GetCurSel($Tab)
    Case $Null
    If WinListe_Update() Then _GUICtrlStatusBar_SetText($iStatus, ' Aktive Fenster : ' & _GUICtrlListView_GetItemCount($Handle_LV_SYS[$Null]), $Null)
    Case 1
    If Prozess_Update() Then _GUICtrlStatusBar_SetText($iStatus, ' Prozesse : ' & _GUICtrlListView_GetItemCount($Handle_LV_SYS[1]), $Null)
    Case 2
    _GUICtrlStatusBar_SetText($iStatus, ' Dienste : ' & _GUICtrlListView_GetItemCount($Handle_LV_SYS[2]), $Null)
    EndSwitch
    EndFunc ;==>Update

    [/autoit] [autoit][/autoit] [autoit]

    Func WinListe_Update()
    Local $Temp[1]
    Local $iWin = StartCallback()
    If @error Then ErrorExit()
    Local $GIC_Win_A_P = GetListViewToArray($Null)
    Local $WinAlt = $GIC_Win_A_P[$Null]
    Local $WinAltPrue = $GIC_Win_A_P[1]
    If ($iWin[$Null][$Null] = UBound($GIC_Win_A_P[$Null])) Then
    For $i = $Null To $iWin[$Null][$Null]
    If (Not IsInArray($WinAlt, $iWin[$i][1])) Then Win_Alt_Prue($WinAltPrue, $iWin[$i][$Null], $iWin[$i][1])
    Next
    Return True
    EndIf
    Local $iPro = New_Prozess(1, '', '')
    If IsArray($iPro) Then
    _GUIImageList_SetImageCount($Icon, _GUICtrlListView_GetItemCount($Handle_LV_SYS[$Null]))
    _GUICtrlListView_BeginUpdate($Handle_LV_SYS[$Null])
    For $i = $Null To $iWin[$Null][$Null]
    $iIndex = IsInArray($iPro, $iWin[$i][3], 1, $Null, $Null, $Null, 1)
    If Not @error And ($iPro[$iIndex][1] <> $EigenPID) Then
    _ArrayAdd($Temp, $iWin[$i][$Null])
    If (Not IsInArray($WinAlt, $iWin[$i][1]) And Not IsInArray($WinAltPrue, $iWin[$i][$Null])) And Not StringInStr($iPro[$iIndex][$Null], 'consent.exe', 1) Then
    If Win_Alt_Prue($WinAltPrue, $iWin[$i][$Null], $iWin[$i][1]) Then ContinueLoop
    $Index = _GUIImageList_AddIcon($Icon, $iPro[$iIndex][2])
    _GUICtrlListView_AddItem($Handle_LV_SYS[$Null], $iWin[$i][1], $Index)
    _GUICtrlListView_AddSubItem($Handle_LV_SYS[$Null], $Index, $iPro[$iIndex][$Null], 1)
    _GUICtrlListView_AddSubItem($Handle_LV_SYS[$Null], $Index, ' Wird ausgeführt ', 2)
    _GUICtrlListView_AddSubItem($Handle_LV_SYS[$Null], $Index, $iWin[$i][3], 3)
    _GUICtrlListView_AddSubItem($Handle_LV_SYS[$Null], $Index, $iWin[$i][$Null], 4)
    _GUICtrlListView_AddSubItem($Handle_LV_SYS[$Null], $Index, $iPro[$iIndex][2], 5)
    _GUICtrlListView_AddSubItem($Handle_LV_SYS[$Null], $Index, $iWin[$i][2], 6)
    EndIf
    EndIf
    Next
    _GUICtrlListView_EndUpdate($Handle_LV_SYS[$Null])
    EndIf
    If (UBound($Temp) - 2 < $WinAltPrue[$Null]) Then
    For $i = 1 To $WinAltPrue[$Null]
    If (Not IsInArray($Temp, $WinAltPrue[$i])) Then _GUICtrlListView_DeleteItem($Handle_LV_SYS[0], (IsInArray($WinAltPrue, $WinAltPrue[$i], $Null, $Null, $Null, $Null, 1) - 1))
    Next
    EndIf
    Return True
    EndFunc ;==>WinListe_Update

    [/autoit] [autoit][/autoit] [autoit]

    Func Win_Alt_Prue($WAP, $HWL, $F_Text)
    For $i = 1 To $WAP[$Null]
    If ($WAP[$i] = $HWL) Then
    If _GUICtrlListView_SetItemText($Handle_LV_SYS[$Null], ($i - 1), $F_Text) Then Return True
    EndIf
    Next
    Return False
    EndFunc ;==>Win_Alt_Prue

    [/autoit] [autoit][/autoit] [autoit]

    Func Prozess_Update()
    Local $Pro_New, $Temp[1]
    Local $Pro_New_List = ProcessList()
    Local $Pro_Alt = GetListViewToArray(1)
    If (UBound($Pro_Alt) - 1 = UBound($Pro_New_List) - 2) Then Return True
    _GUICtrlListView_BeginUpdate($Handle_LV_SYS[1])
    For $i = 2 To $Pro_New_List[$Null][$Null]
    If Not IsInArray($Pro_Alt, $Pro_New_List[$i][$Null]) Then
    $Pro_New = New_Prozess($Null, $Pro_New_List[$i][1], $Error)
    _GUICtrlListView_AddItem($Handle_LV_SYS[1], $Pro_New[$Null][$Null], _GUICtrlListView_GetItemCount($Handle_LV_SYS[1]))
    For $e = 1 To UBound($Pro_New, 2) - 1
    _GUICtrlListView_AddSubItem($Handle_LV_SYS[1], _GUICtrlListView_GetItemCount($Handle_LV_SYS[1]) - 1, $Pro_New[$Null][$e], $e)
    Next
    EndIf
    _ArrayAdd($Temp, $Pro_New_List[$i][$Null])
    Next
    For $i = 1 To $Pro_Alt[$Null]
    If Not IsInArray($Temp, $Pro_Alt[$i]) Then _GUICtrlListView_DeleteItem($Handle_LV_SYS[1], (IsInArray($Pro_Alt, $Pro_Alt[$i], $Null, $Null, $Null, $Null, 1) - 1))
    Next
    Return _GUICtrlListView_EndUpdate($Handle_LV_SYS[1])
    EndFunc ;==>Prozess_Update

    [/autoit] [autoit][/autoit] [autoit]

    Func GetListViewToArray($HWnd)
    Local $UB = _GUICtrlListView_GetItemCount($Handle_LV_SYS[$HWnd])
    Local $GCount[$UB + 1]
    Local $GCount_H[$UB + 1]
    $GCount[$Null] = $UB
    $GCount_H[$Null] = $UB
    For $i = 1 To $GCount[$Null]
    If Not $HWnd Then $GCount_H[$i] = _GUICtrlListView_GetItemText($Handle_LV_SYS[$HWnd], ($i - 1), 4)
    $GCount[$i] = _GUICtrlListView_GetItemText($Handle_LV_SYS[$HWnd], ($i - 1))
    Next
    If Not $HWnd Then
    Local $GCount_GCount_H[2]
    $GCount_GCount_H[$Null] = $GCount
    $GCount_GCount_H[1] = $GCount_H
    Return $GCount_GCount_H
    Else
    Return $GCount
    EndIf
    EndFunc ;==>GetListViewToArray

    [/autoit] [autoit][/autoit] [autoit]

    Func Anw_Prog_P_S()
    Switch _GUICtrlTab_GetCurSel($Tab)
    Case $Null
    $iGetIthm = _GUICtrlListView_GetSelectionMark($Handle_LV_SYS[$Null])
    Switch @GUI_CtrlId
    Case $SYS[0], $Contextmenuitem_0[0]
    If ($iGetIthm > -1) Then
    If Not WinClose(_GUICtrlListView_GetItemText($Handle_LV_SYS[$Null], $iGetIthm)) Then
    If (MsgBox(4, 'Die Anwendung konnte nicht geschlossen werden!', 'Zwingen das Fenster zu schließen?') = 6) Then WinKill(_GUICtrlListView_GetItemText($Handle_LV_SYS[$Null], $iGetIthm))
    EndIf
    EndIf
    Case $SYS[1], $Contextmenuitem_0[1]
    If ($iGetIthm > -1) Then WinActivate(_GUICtrlListView_GetItemText($Handle_LV_SYS[$Null], $iGetIthm), '')
    Case $SYS[2], $MenuItem_0, $Contextmenuitem_0[2]
    Local $New_Task = FileOpenDialog('Durchsuchen', @DesktopDir, 'Alle (*.*)', 1 + 2, '', $Form[$Null])
    If @error Then Return False
    ShellExecute($New_Task)
    EndSwitch
    Case 1
    $iGetIthm = _GUICtrlListView_GetSelectionMark($Handle_LV_SYS[1])
    Switch @GUI_CtrlId
    Case $SYS[3], $Contextmenuitem_1[1]
    If ($iGetIthm > -1) Then
    Local $Text = 'Möchten sie "' & _GUICtrlListView_GetItemText($Handle_LV_SYS[1], $iGetIthm) & '" Beenden?' & @CRLF & @CRLF & _
    'Wenn sie ein geöffnetes Programm diesem Prozess zugeordnet ist, ' & _
    'wird es geschlossen und alle nicht gespeicherten Daten gehen Verloren ' & _
    'Wenn sie ein Systemprozess beenden, kann dieses dazu führen, dass das ' & _
    'System instabil wird. Möchten sie den Vorgang fortsetzen?'
    Local $PID = ProcessExists(_GUICtrlListView_GetItemText($Handle_LV_SYS[1], $iGetIthm))
    If Not $PID Then Return MsgBox(4112, 'Fehler', 'Der Process Existiert nicht!')
    If (MsgBox(4, 'Process_Beenden', $Text) = 6) Then
    ProcessClose($PID)
    Switch @error
    Case 1
    MsgBox(4112, 'Fehler', 'OpenProcess fehlgeschlagen!')
    Case 2
    MsgBox(4112, 'Fehler', 'AdjustTokenPrivileges fehlgeschlagen!')
    Case 3
    MsgBox(4112, 'Fehler', 'TerminateProcess fehlgeschlagen!')
    Case 4
    MsgBox(4112, 'Fehler', 'Es konnte nicht sichergestellt werden, ob der Prozess existiert!')
    EndSwitch
    EndIf
    EndIf
    Case $Contextmenuitem_1[$Null]
    If ($iGetIthm > -1) Then ShellExecute(StringTrimRight(_GUICtrlListView_GetItemText($Handle_LV_SYS[1], $iGetIthm, 5), StringLen(_GUICtrlListView_GetItemText($Handle_LV_SYS[1], $iGetIthm)) + 1))
    Case $Contextmenuitem_1[2]
    If ($iGetIthm > -1) Then
    If _WinSetTrans($Null) Then $Set_Label = _GUICtrlListView_GetItemText($Handle_LV_SYS[1], $iGetIthm)
    GUICtrlSetData($Label, 'Möchten sie die Priorität von "' & $Set_Label & '" ändern?')
    GUISetState(@SW_SHOW, $Form[1])
    EndIf
    Case $Checkbox[$Null], $Checkbox[1], $Checkbox[2], $Checkbox[3]
    Local $Set
    Switch GUICtrlRead(@GUI_CtrlId, 1)
    Case 'Niedrig'
    $Set = $Null
    Case 'Normal'
    $Set = 2
    Case 'Hoch'
    $Set = 4
    Case 'Echtzeit'; nicht bei Win7
    $Set = 5
    EndSwitch
    ProcessSetPriority($Set_Label, $Set)
    GUISetState(@SW_HIDE, $Form[1])
    EndSwitch
    Case 2
    Local $ErrHaw
    $iGetIthm = _GUICtrlListView_GetSelectionMark($Handle_LV_SYS[2])
    Switch @GUI_CtrlId
    Case $Contextmenuitem_2[$Null]
    If ($iGetIthm > -1) Then
    $ErrHaw = _Services_Running(_GUICtrlListView_GetItemText($Handle_LV_SYS[2], $iGetIthm))
    If ($ErrHaw = 'Erfolg') Then _GUICtrlListView_SetItemText($Handle_LV_SYS[2], $iGetIthm, ' Wird ausgeführt ', 5)
    EndIf
    MsgBox(64, ' Dienst - Start ', $ErrHaw)
    Case $Contextmenuitem_2[1]
    If ($iGetIthm > -1) Then
    $ErrHaw = _Services_Stopp(_GUICtrlListView_GetItemText($Handle_LV_SYS[2], $iGetIthm))
    If ($ErrHaw = 'Erfolg') Then _GUICtrlListView_SetItemText($Handle_LV_SYS[2], $iGetIthm, ' Beendet ', 5)
    EndIf
    MsgBox(64, 'Dienst - Stopp', $ErrHaw)
    EndSwitch
    EndSwitch
    EndFunc ;==>Anw_Prog_P_S

    [/autoit] [autoit][/autoit] [autoit]

    Func _CPU_Darstellung()
    If _WinSetTrans($Null) And GUISetState(@SW_SHOW, $Form[2]) Then Local $iTimer = TimerInit()
    Local $iOnEventMode = Opt('GUIOnEventMode', $Null)
    Do
    If (Round(TimerDiff($iTimer)) > 875) Then
    $mem = MemGetStats()
    $aCPU = Refresh()
    For $i = $Null To UBound($aCPU) - 2
    GUICtrlSetData($core[$i], $aCPU[$i])
    GUICtrlSetData($P_core[$i], $aCPU[$i] & '%')
    Next
    GUICtrlSetData($GesamtRAM, Round($mem[1] / 1024))
    GUICtrlSetData($VerfuegbarerRAM, Round($mem[2] / 1024))
    GUICtrlSetData($BenutztRAM, Round(($mem[1] - $mem[2]) / 1024))
    GUICtrlSetData($Arbeitspeicher, Round(($mem[1] - $mem[2]) * 100 / $mem[1]))
    GUICtrlSetData($P_Arbeitspeicher, Round(($mem[1] - $mem[2]) / 1024) & ' MB')
    _GUICtrlStatusBar_SetText($iStatus, StringFormat('%02d:%02d:%02d', @HOUR, @MIN, @SEC), 2)
    _GUICtrlStatusBar_SetText($iStatus, 'CPU-Auslastung: ' & $aCPU[UBound($aCPU) - 1] & ' % ' & ' Physikalischer Speicher: ' & $mem[0] & '%', 1)
    $iTimer = TimerInit()
    EndIf
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
    If GUISetState(@SW_HIDE, $Form[2]) And _WinSetTrans(1) Then Opt('GUIOnEventMode', $iOnEventMode)
    EndFunc ;==>_CPU_Darstellung

    [/autoit] [autoit][/autoit] [autoit]

    Func LV_Sort($HWnd, $iSubItem)
    Local $Split
    Local $1D = _GUICtrlListView_GetItemCount($HWnd) - 1
    Local $2D = _GUICtrlListView_GetColumnCount($HWnd) - 1
    Local $Sort_Array[$1D + 1]
    For $i = $Null To $1D
    $Sort_Array[$i] = _GUICtrlListView_GetItemText($HWnd, $i, $iSubItem) & '|' & $i
    Next
    QuickSort($Sort_Array, $Null, $1D)
    Local $Set_Array[$1D + 1][$2D + 1]
    For $i = $Null To $1D
    $Split = StringMid($Sort_Array[$i], StringInStr($Sort_Array[$i], '|', $Null, -1) + 1, StringLen($Sort_Array[$i]))
    For $e = $Null To $2D
    $Set_Array[$i][$e] = _GUICtrlListView_GetItemText($HWnd, $Split, $e)
    Next
    Next
    _ObjektAr2DDubDel($Set_Array)
    If _GUICtrlListView_DeleteAllItems($HWnd) Then
    Switch $HWnd
    Case $Handle_LV_SYS[$Null]
    If _GUIImageList_SetImageCount($Icon, _GUICtrlListView_GetItemCount($HWnd)) Then _GUICtrlListView_BeginUpdate($HWnd)
    For $i = $Null To $1D
    $Index = _GUIImageList_AddIcon($Icon, $Set_Array[$i][5])
    _GUICtrlListView_AddItem($HWnd, $Set_Array[$i][$Null], $Index)
    For $e = $Null To $2D
    _GUICtrlListView_AddSubItem($HWnd, $Index, $Set_Array[$i][$e], $e)
    Next
    Next
    _GUICtrlListView_EndUpdate($HWnd)
    Case Else
    If _GUICtrlListView_BeginUpdate($HWnd) Then _GUICtrlListView_AddArray($HWnd, $Set_Array)
    _GUICtrlListView_EndUpdate($HWnd)
    EndSwitch
    EndIf
    Return True
    EndFunc ;==>LV_Sort

    [/autoit] [autoit][/autoit] [autoit]

    Func _WinSetTrans($Flag)
    Switch $Flag
    Case $Null
    For $i = 255 To 100 Step -$Trans
    WinSetTrans($Form[0], '', $i)
    Next
    Case 1
    For $i = 100 To 255 Step +$Trans
    WinSetTrans($Form[0], '', $i)
    Next
    EndSwitch
    Return True
    EndFunc ;==>_WinSetTrans

    [/autoit] [autoit][/autoit] [autoit]

    Func Refresh()
    $objRefresher.Refresh(0)
    If IsObj($objRefreshableItem) Then
    $i = $Null
    For $objItem In $objRefreshableItem.ObjectSet
    $aCPU[$i] = $objItem.PercentProcessorTime
    $i += 1
    Next
    EndIf
    Return $aCPU
    EndFunc ;==>Refresh

    [/autoit] [autoit][/autoit] [autoit]

    Func ErrorExit()
    MsgBox(4112, 'Error', 'Anfrage ist Fehlgeschlagen Programm wird Beemdet!', 5)
    Exit
    EndFunc ;==>ErrorExit

    [/autoit] [autoit][/autoit] [autoit]

    Func Ende()
    If _WinSetTrans($Null) Then Exit
    EndFunc ;==>Ende

    [/autoit] [autoit][/autoit] [autoit]

    Func Form_HIDE()
    If GUISetState(@SW_HIDE, @GUI_WinHandle) Then _WinSetTrans(1)
    EndFunc ;==>Form_HIDE

    [/autoit] [autoit][/autoit] [autoit]

    While 1 * Sleep(875)
    $mem = MemGetStats()
    $aCPU = Refresh()
    _GUICtrlStatusBar_SetText($iStatus, 'CPU-Auslastung: ' & $aCPU[UBound($aCPU) - 1] & ' % ' & ' Physikalischer Speicher: ' & $mem[0] & '%', 1)
    _GUICtrlStatusBar_SetText($iStatus, StringFormat('%02d:%02d:%02d', @HOUR, @MIN, @SEC), 2)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func MY_WM_GETMINMAXINFO($HWnd, $msg, $wParam, $lParam)
    #forceref $HWnd, $msg, $wParam
    Local $Info_Chek = DllStructCreate('int;int;int;int;int;int;int;int;int;int', $lParam)
    DllStructSetData($Info_Chek, 7, $Breite_K)
    DllStructSetData($Info_Chek, 8, $Hoehe_K)
    DllStructSetData($Info_Chek, 9, $Breite)
    Return DllStructSetData($Info_Chek, 10, $Hoehe)
    EndFunc ;==>MY_WM_GETMINMAXINFO

    [/autoit] [autoit][/autoit] [autoit]

    Func WM_SIZE($HWnd, $iMsg, $iwParam, $ilParam)
    #forceref $HWnd, $iMsg, $iwParam, $ilParam
    Local $aWinPos = WinGetPos($Form[$Null])
    Local $aParts[3] = [150, ($aWinPos[2] - 100), 50]
    _GUICtrlStatusBar_SetParts($iStatus, $aParts)
    _GUICtrlStatusBar_Resize($iStatus)
    EndFunc ;==>WM_SIZE

    [/autoit] [autoit][/autoit] [autoit]

    Func WM_NOTIFY($HWnd, $iMsg, $iwParam, $ilParam)
    #forceref $HWnd, $iMsg, $iwParam
    Local $hWndFrom, $iCode, $tNMHDR
    $tNMHDR = DllStructCreate($tagNMHDR_0, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, 'hWndFrom'))
    $iCode = DllStructGetData($tNMHDR, 'Code')
    Switch $hWndFrom
    Case $Handle_LV_SYS[0], $Handle_LV_SYS[1], $Handle_LV_SYS[2]
    Switch $iCode
    Case $LVN_COLUMNCLICK
    AdlibUnRegister('Update')
    If LV_Sort($hWndFrom, DllStructGetData(DllStructCreate($tagNMLISTVIEW_0, $ilParam), 'SubItem')) Then AdlibRegister('Update', 1000)
    EndSwitch
    EndSwitch
    Return $__LISTVIEWCONSTANT_GUI_RUNDEFMSG
    EndFunc ;==>WM_NOTIFY

    [/autoit]

    #include <System.au3>

    Spoiler anzeigen
    [autoit]

    Global Static $obWMI = ObjGet('winmgmts:{impersonationLevel=impersonate}!\\.\root\CIMV2')
    Global $Com_Fehler = ObjEvent('AutoIt.Error', 'Com_Fehler')
    Global $Error = False
    Global $i = 0

    [/autoit] [autoit][/autoit] [autoit]

    Global $Max = 255
    Global $aDFL[$Max][5], $DCN, $GWMFN, $Cont = 1
    Global $Not_Klassenname = 'Button|Progman|DV2ControlHost|Desktop User Picture|tooltips_class32'

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func New_Prozess($Flag, $Process_New, $Error)
    Local $Us, $sU
    Local $co = $obWMI.ExecQuery('SELECT * FROM Win32_Process')
    If Not IsObj($co) Then Return SetError(1, 1, -1)
    Switch $Flag
    Case 0
    Local $Prozess[1][8]
    For $ob In $co
    If ($ob.ProcessId = $Process_New) Then
    $Prozess[0][0] = $ob.Caption
    $Prozess[0][1] = $ob.ProcessId
    $Prozess[0][2] = $ob.ParentProcessId
    If (Not $Error) Then
    If $ob.GetOwner($sU, $Us) = 0 Then $Prozess[0][3] = $sU & '\' & $Us
    EndIf
    $Prozess[0][4] = $ob.Priority
    $Prozess[0][5] = $ob.ExecutablePath
    $Prozess[0][6] = $ob.WriteTransferCount
    $Prozess[0][7] = $ob.WorkingSetSize
    EndIf
    Next
    Return $Prozess
    Case 1
    Local $Prozess[$co.Count - 1][3]
    $i = 0
    For $ob In $co
    If $i Then
    $Prozess[$i - 1][0] = $ob.Caption
    $Prozess[$i - 1][1] = $ob.ProcessId
    $Prozess[$i - 1][2] = $ob.ExecutablePath
    EndIf
    $i += 1
    Next
    Return $Prozess
    Case 2
    Local $Prozess[$co.Count - 1][8]
    $i = 0
    For $ob In $co
    If $i >= 1 Then
    $Prozess[$i - 1][0] = $ob.Caption
    $Prozess[$i - 1][1] = $ob.ProcessId
    $Prozess[$i - 1][2] = $ob.ParentProcessId
    If (Not $Error) Then
    If $ob.GetOwner($sU, $Us) = 0 Then $Prozess[$i - 1][3] = $sU & '\' & $Us
    EndIf
    $Prozess[$i - 1][4] = $ob.Priority
    $Prozess[$i - 1][5] = $ob.ExecutablePath
    $Prozess[$i - 1][6] = $ob.WriteTransferCount
    $Prozess[$i - 1][7] = $ob.WorkingSetSize
    EndIf
    $i += 1
    Next
    Return $Prozess
    EndSwitch
    EndFunc ;==>New_Prozess

    [/autoit] [autoit][/autoit] [autoit]

    Func LA_Services($ComputerName)
    Local $ServSet = ObjGet('winmgmts:{impersonationLevel=impersonate}!//' & $ComputerName)
    Local $ob = $ServSet.InstancesOf('win32_service')
    If Not IsObj($ob) Then
    MsgBox(0, 'Error', 'Fehler, Objekt konnte nicht erstellt werden' & @CRLF & 'Programm wird beendet!')
    Exit
    EndIf
    Local $obDienste[$ob.Count][10]
    $i = 0
    For $Serv In $ob
    $obDienste[$i][0] = $Serv.Name
    If ($Serv.ProcessID <> 0) Then $obDienste[$i][1] = $Serv.ProcessID
    Switch $Serv.acceptPause
    Case True
    $obDienste[$i][2] = ' Ja '
    Case Else
    $obDienste[$i][2] = ' Nein '
    EndSwitch
    Switch $Serv.acceptStop
    Case True
    $obDienste[$i][3] = ' Ja '
    Case Else
    $obDienste[$i][3] = ' Nein '
    EndSwitch
    $obDienste[$i][4] = StringReplace($Serv.PathName, '"', '')
    $obDienste[$i][5] = $Serv.Status
    Switch $Serv.State
    Case 'Running'
    $obDienste[$i][6] = ' Wird ausgeführt '
    Case Else
    $obDienste[$i][6] = ' Beendet '
    EndSwitch
    $obDienste[$i][7] = $Serv.StartMode
    $obDienste[$i][8] = StringProper($Serv.StartName)
    $obDienste[$i][9] = $Serv.Caption
    $i += 1
    Next
    Return $obDienste
    EndFunc ;==>LA_Services

    [/autoit] [autoit][/autoit] [autoit]

    Func _Services_Running($Dienst)
    ;Startet ein Service
    Local $co
    $co = $obWMI.ExecQuery('Select * from Win32_Service WHERE name = "' & $Dienst & '"')
    If Not IsObj($co) Then Return SetError(1, 1, -1)
    For $ob In $co
    Return _Service_Error($ob.StartService())
    Next
    EndFunc ;==>_Services_Running

    [/autoit] [autoit][/autoit] [autoit]

    Func _Services_Stopp($Dienst)
    ;Beendet ein Service
    Local $co
    $co = $obWMI.ExecQuery('Select * from Win32_Service WHERE name = "' & $Dienst & '"')
    If Not IsObj($co) Then Return SetError(1, 1, -1)
    For $ob In $co
    Return _Service_Error($ob.StopService())
    Next
    EndFunc ;==>_Services_Stopp

    [/autoit] [autoit][/autoit] [autoit]

    Func QuickSort(ByRef $Array, ByRef $LB, ByRef $UB)
    Local $P1, $P2, $Ref, $Temp
    $P1 = $LB
    $P2 = $UB
    $Ref = $Array[Int(($P1 + $P2) / 2)]
    Do
    While ($Array[$P1] < $Ref)
    $P1 += 1
    WEnd
    While ($Array[$P2] > $Ref)
    $P2 -= 1
    WEnd
    If ($P1 <= $P2) Then
    $Temp = $Array[$P1]
    $Array[$P1] = $Array[$P2]
    $Array[$P2] = $Temp
    $P1 += 1
    $P2 -= 1
    EndIf
    Until ($P1 > $P2)
    If ($LB < $P2) Then QuickSort($Array, $LB, $P2)
    If ($P1 < $UB) Then QuickSort($Array, $P1, $UB)
    EndFunc ;==>QuickSort

    [/autoit] [autoit][/autoit] [autoit]

    Func _ObjektAr2DDubDel(ByRef $avArray)
    Local $ScripDict = ObjCreate('Scripting.Dictionary')
    If @error Then Return SetError(1, 1, -1)
    Local $iTmp
    Local $TmpArray
    Local $iTmp_Save
    Local $TmpArrayReturn[1][2]
    Local $iEnd = UBound($avArray)
    Local $1D2D = UBound($avArray, 2)
    If @error = 2 Then
    For $For In $avArray
    If Not $ScripDict.Exists($For) Then $ScripDict.Add($For, 0).RemoveAll
    Next
    $avArray = $ScripDict.Keys()
    Return ($iEnd - UBound($avArray))
    Else
    For $1D = 0 To $iEnd - 1
    $TmpArray &= '|'
    For $2D = 0 To $1D2D - 1
    $TmpArray &= $avArray[$1D][$2D]
    Next
    Next
    $TmpArray = StringSplit(StringTrimLeft($TmpArray, 1), '|')
    For $i = 1 To UBound($TmpArray) - 1
    $iTmp = $TmpArray[$i]
    If Not $ScripDict.Exists($iTmp) Then
    $ScripDict.Add($iTmp, 0).RemoveAll
    $iTmp_Save &= '|' & $i - 1
    EndIf
    Next
    $1D = 0
    $TmpArray = ''
    $TmpArray = StringSplit(StringTrimLeft($iTmp_Save, 1), '|')
    If ($TmpArray[0] = $iEnd) Then Return ($iEnd - $TmpArray[0])
    ReDim $TmpArrayReturn[$TmpArray[0]][$1D2D]
    For $i = 1 To UBound($TmpArray) - 1
    For $2D = 0 To $1D2D - 1
    $TmpArrayReturn[$1D][$2D] = $avArray[$TmpArray[$i]][$2D]
    Next
    $1D += 1
    Next
    $avArray = $TmpArrayReturn
    Return ($iEnd - $1D)
    EndIf
    EndFunc ;==>_ObjektAr2DDubDel

    [/autoit] [autoit][/autoit] [autoit]

    Func StartCallback()
    Local $DCHwnd = DllCallbackRegister('DetailFensterList', 'int', 'hwnd;lparam')
    DllCall('user32.dll', 'int', 'EnumWindows', 'ptr', DllCallbackGetPtr($DCHwnd), 'lparam', 10)
    If @error Then Return SetError(1, 0, -1)
    DllCallbackFree($DCHwnd)
    $aDFL[0][0] = ($Cont - 1)
    $Cont = 1
    Return $aDFL
    EndFunc ;==>StartCallback

    [/autoit] [autoit][/autoit] [autoit]

    Func DetailFensterList($HWnd, $lParam)
    #forceref $lParam
    $DCN = DllCall('user32.dll', 'uint', 'GetClassNameW', 'hwnd', $HWnd, 'wstr', '', 'uint', $Max)
    If @error Then Return SetError(1, 0, -1)
    If WinGetTitle($HWnd) And BitAND(WinGetState($HWnd), 2) And Not StringInStr($Not_Klassenname, $DCN[2]) Then
    $GWMFN = DllCall('user32.dll', 'uint', 'GetWindowModuleFileNameW', 'hwnd', $HWnd, 'wstr', '', 'uint', $Max)
    If @error Then Return SetError(1, 0, -2)
    $aDFL[$Cont][0] = $HWnd
    $aDFL[$Cont][1] = WinGetTitle($HWnd)
    $aDFL[$Cont][2] = $DCN[2]
    $aDFL[$Cont][3] = WinGetProcess($HWnd)
    $aDFL[$Cont][4] = $GWMFN[2]
    $Cont += 1
    EndIf
    Return True
    EndFunc ;==>DetailFensterList

    [/autoit] [autoit][/autoit] [autoit]

    Func IsInArray(Const $sArray, Const $sItem = '', Const $iDim = 0, $nStart = 0, $nEnd = 0, Const $case = 0, Const $iFlag = 0)
    If Not IsArray($sArray) Or Not $sItem Or (UBound($sArray, 0) > 2) Then Return SetError(1, 0, -1)
    If IsMissing($nEnd) Then $nEnd = UBound($sArray)
    If ($nStart > $nEnd) Then $nStart = 0
    If Not UBound($sArray, 2) Then
    For $i = $nStart To $nEnd - 1
    If Not StringCompare($sArray[$i], $sItem, $case) Then Return IIF(Not $iFlag, True, $i)
    Next
    Else
    If ($iDim > (UBound($sArray, 2) - 1)) Then Return SetError(1, 0, -2)
    For $i = $nStart To $nEnd - 1
    If Not StringCompare($sArray[$i][$iDim], $sItem, $case) Then Return IIF(Not $iFlag, True, $i)
    Next
    EndIf
    Return False
    EndFunc ;==>IsInArray

    [/autoit] [autoit][/autoit] [autoit]

    Func IIF($V_Expr, $F_True = True, $F_False = False)
    If $V_Expr Then Return $F_True
    Return $F_False
    EndFunc ;==>IIF

    [/autoit] [autoit][/autoit] [autoit]

    Func IsMissing(Const $iData)
    Return (Not $iData)
    EndFunc ;==>IsMissing

    [/autoit] [autoit][/autoit] [autoit]

    Func StringProper($s_String)
    Local $iX = 0
    Local $CapNext = 1
    Local $s_nStr = ""
    Local $s_CurChar
    For $iX = 1 To StringLen($s_String)
    $s_CurChar = StringMid($s_String, $iX, 1)
    Select
    Case $CapNext = 1
    If StringRegExp($s_CurChar, '[a-zA-ZÀ-ÿšœžŸ]') Then
    $s_CurChar = StringUpper($s_CurChar)
    $CapNext = 0
    EndIf
    Case Not StringRegExp($s_CurChar, '[a-zA-ZÀ-ÿšœžŸ]')
    $CapNext = 1
    Case Else
    $s_CurChar = StringLower($s_CurChar)
    EndSelect
    $s_nStr &= $s_CurChar
    Next
    Return $s_nStr
    EndFunc ;==>StringProper

    [/autoit] [autoit][/autoit] [autoit]

    Func StringToDate($Date)
    Return (StringMid($Date, 5, 2) & '/' & StringMid($Date, 7, 2) & '/' & StringLeft($Date, 4) & ' ' & StringMid($Date, 9, 2) & ':' & StringMid($Date, 11, 2) & ':' & StringMid($Date, 13, 2))
    EndFunc ;==>StringToDate

    [/autoit] [autoit][/autoit] [autoit]

    Func _Service_Error($Error)
    ; Error Handle
    Local $Rerurn
    Switch $Error
    Case 0
    $Rerurn = 'Erfolg'
    Case 1
    $Rerurn = 'Nicht unterstützt'
    Case 2
    $Rerurn = 'Zugriff verweigert'
    Case 3
    $Rerurn = 'Abhängige Dienste werden ausgeführt'
    Case 4
    $Rerurn = 'Invalid Service Control Ungültige Service Control'
    Case 5
    $Rerurn = 'Service Control kann nicht akzeptieren'
    Case 6
    $Rerurn = 'Service ist nicht aktiv'
    Case 7
    $Rerurn = 'Service Request timeout'
    Case 8
    $Rerurn = 'Unbekannter Fehler'
    Case 9
    $Rerurn = 'Pfad nicht gefunden'
    Case 10
    $Rerurn = 'Service bereits gestoppt'
    Case 11
    $Rerurn = 'Service Datenbank gesperrt'
    Case 12
    $Rerurn = 'Service Dependency Deleted'
    Case 13
    $Rerurn = 'Service Dependency Failure'
    Case 14
    $Rerurn = 'Service für Behinderte'
    Case 15
    $Rerurn = 'Service Fehler bei der Anmeldung'
    Case 16
    $Rerurn = 'Service zum Löschen markiert'
    Case 17
    $Rerurn = 'Service Nr. Thread'
    Case 18
    $Rerurn = 'Status Circular Dependency'
    Case 19
    $Rerurn = 'Status Duplicate Name'
    Case 20
    $Rerurn = 'Status - Ungültiger Name'
    Case 21
    $Rerurn = 'Status - Ungültiger Parameter'
    Case 22
    $Rerurn = 'Status - Invalid Service Account'
    Case 23
    $Rerurn = 'Status - Dienst existiert'
    Case 24
    $Rerurn = 'Service bereits angehalten'
    EndSwitch
    Return $Rerurn
    EndFunc ;==>_Service_Error

    [/autoit] [autoit][/autoit] [autoit]

    Func Com_Fehler()
    Switch $Com_Fehler
    Case 0
    $Error = True
    Case Else
    $Error = False
    EndSwitch
    EndFunc ;==>Com_Fehler

    [/autoit]

    LG Kleiner

    Dateien

    Task_Manager.au3 24,54 kB – 430 Downloads System.au3 10,1 kB – 450 Downloads
  • [BITTE TESTEN] Dateisuche auf mehreren Festplatten

    • Kleiner
    • 13. Juli 2010 um 08:22

    Hey!


    Wie schon schon die anderen, die Version ist einer der ersten!

    Habe dir ein Beispiel gemacht!

    Drive_List

    Spoiler anzeigen
    [autoit]

    #include 'FileListRekursiv.au3'
    #include <Array.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Local $Drive[3] = ['C:', 'D:', 'F:']
    Local $A, $B, $C, $Z = 0
    Local $iTimer = TimerInit()

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 0 To 2
    $C = ___ArrayAD(_File_List_S_Rekursiv($Drive[$i]), $Drive)
    Next

    [/autoit] [autoit][/autoit] [autoit]

    Func ___ArrayAD($A, $Drive)
    For $i = 1 To UBound($A) - 1
    $B &= '|' & $A[$i]
    Next
    $Z += 1
    If UBound($Drive) = $Z Then Return StringSplit(StringTrimLeft($B, 1), '|')
    EndFunc ;==>___ArrayAD

    [/autoit] [autoit][/autoit] [autoit]

    _ArrayDisplay($C, Round(TimerDiff($iTimer)))

    [/autoit]

    FileListRekursiv

    Spoiler anzeigen
    [autoit]

    ;===================================================================================================================================#
    ;~ Function Name....: _File_List_S_Rekursiv($_Pfad_, $_Wildc_ = '*', $_Flag_ = 0)
    ;
    ;~ Description......: Auflistung von Dateien
    ;
    ;~ $_Pfad_..........: Pfad
    ;~ $Wildc_..........: '*' ( Standart ) Suchbegrif u. o. Wildcards bei Wildcards mit o. suchbegriff $_Flag_ auf '3' setzen es ist auch
    ; möglich mehrere suchbegriffe zu suchen z.B ( *wma,*mp3,*txt ) o. ( wma,mp3,txt ) getrennt mit ','
    ;~ $Flag............: '0' ( Standart ) Datein u. Ordner '1' nur Datein '2' nur Ordner '3' um mit suchbegriffen zu suchen wie (*.txt)
    ;
    ;~ Return Value(s)..: Array ( Standard ) mit den gefundenen Dateien u. o Ordner Array[0] endhält die anzahl ( Fund )
    ;
    ;~ Author(s)........: Kleiner27 (http://www.autoit.de) # 27.03.2010 09:00 #
    ;====================================================================================================================================#

    [/autoit] [autoit][/autoit] [autoit]

    Local $F
    Local $UB
    Local $FN
    Local $RAS
    Local $Verz
    Local $Expan

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _File_List_S_Rekursiv($Pfad, Const $Wildc = '*', Const $Flag = 0)
    $Pfad = StringRegExpReplace($Pfad, '[\\/]+\z', '\') & '\'
    If Not FileExists($Pfad) Then Return SetError(1, 1, '')
    If StringRegExp($Wildc, '[\\/:><\|]|(?s)\A\s*\z') Then Return SetError(2, 2, '')
    If Not ($Flag = 0 Or $Flag = 1 Or $Flag = 2 Or $Flag = 3) Then Return SetError(3, 3, '')
    If ($RAS <> '') Then $RAS = ''
    _Rekursiv_S_($Pfad, StringReplace(StringReplace($Wildc, '*', ''), ',', '|'), $Flag)
    If Not $RAS Then Return SetError(4, 4, '')
    Return StringSplit(StringTrimLeft($RAS, 1), '|')
    EndFunc ;==>_File_List_S_Rekursiv

    [/autoit] [autoit][/autoit] [autoit]

    Func _Rekursiv_S_($Pfad, $Wildc, $Flag)
    Local $FL
    $F = FileFindFirstFile($Pfad & '*')
    If ($F <> -1) Then
    While True
    $FN = FileFindNextFile($F)
    If @error Then ExitLoop
    $Expan = @extended
    Switch $Flag
    Case 0
    Switch $Expan
    Case 0
    $RAS &= '|' & $Pfad & $FN
    Case 1
    $FL &= '|' & $FN & '\'
    $RAS &= '|' & $Pfad & $FN
    EndSwitch
    Case 1
    Switch $Expan
    Case 0
    $RAS &= '|' & $Pfad & $FN
    Case 1
    $FL &= '|' & $FN & '\'
    EndSwitch
    Case 2
    If ($Expan = 1) Then
    $FL &= '|' & $FN & '\'
    $RAS &= '|' & $Pfad & $FN
    EndIf
    Case 3
    If ($Expan = 1) Then $FL &= '|' & $FN & '\'
    If StringRegExp($FN, $Wildc) Then $RAS &= '|' & $Pfad & $FN
    EndSwitch
    WEnd
    EndIf
    FileClose($F)
    If Not $FL Then Return $FL = '|'
    $Verz = StringSplit(StringTrimLeft($FL, 1), '|')
    $UB = UBound($Verz) - 1
    For $i = 0 To $UB - 1
    $Verz[$i] = $Verz[$i + 1]
    Next
    ReDim $Verz[$UB]
    For $For In $Verz
    If (_F_L_S_($Pfad & $For) = False) Then _Rekursiv_S_($Pfad & $For, $Wildc, $Flag)
    Next
    EndFunc ;==>_Rekursiv_S_

    [/autoit] [autoit][/autoit] [autoit]

    Func _F_L_S_($FLS)
    Dim Static $K32 = DllOpen('kernel32.dll')
    Dim $DA = DllCall($K32, 'dword', 'GetFileAttributesW', 'wstr', $FLS)
    If (@error) Then Return SetError(0, @error, 0)
    Return BitAND($DA[0], 1024) = 1024
    EndFunc ;==>_F_L_S_

    [/autoit]


    Nochmal in einer Zip:


    LG Kleiner

    Dateien

    Drive_List.zip 1,71 kB – 292 Downloads
  • GUICtrlListView Icon ????

    • Kleiner
    • 29. Juni 2010 um 09:48

    Morgen!


    Habe mein Anligen mit _GUIImageList_DestroyIcon gelöst, die Index stelle werden sauber gelöscht und das, Index wird nicht unnötig vergrößert.
    Eine sache habe ich noch, ich Arbeite in der Update Func mit _GUICtrlListView_SetItemText nur beim ersetzen vom text Flackert das, ListView gib es dort eine lösung das, die Update Func nicht so beansprucht wird??


    LG Kleiner

  • Messenger API

    • Kleiner
    • 29. Juni 2010 um 09:34

    Hey Guten Morgen!


    Ja unter Hilfe Stichwort DllCall !

    Spoiler anzeigen
    [autoit]

    ; *******************************************************
    ; Beispiel 1 - direkter Aufruf der MessageBox API
    ; *******************************************************

    [/autoit] [autoit][/autoit] [autoit]

    $result = DllCall("user32.dll", "int", "MessageBox", "hwnd", 0, "str", "Irgendein Text", "str", "Ein Titel", "int", 0)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ; *******************************************************
    ; Beispiel 2 - Aufrufen einer Funktion, die Parameter verändert
    ; *******************************************************
    $PID=Run('Notepad.exe')
    WinWaitActive("[CLASS:Notepad]",'',5)
    $hwnd = WinGetHandle("[CLASS:Notepad]")
    $result = DllCall("user32.dll", "int", "GetWindowText", "hwnd", $hwnd, "str", "", "int", 32768)
    MsgBox(0, "Notepad-Info: Länge des Titels", $result[0]) ; Anzahl der zurückgegebenen Zeichen
    MsgBox(0, "Notepad-Info: Fenstertitel", $result[2]) ; Zurückgegebener Text in Parameter 2
    ProcessClose($PID)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ; *******************************************************
    ; Beispiel 3 - Den Windows PickIconDlg anzeigen
    ; *******************************************************
    $sFileName = @SystemDir & '\shell32.dll'

    [/autoit] [autoit][/autoit] [autoit]

    ; Struktur erzeugen um den Iconindex abzuspeichern
    $stIcon = DllStructCreate("int")
    $stString = DllStructCreate("wchar[260]")
    $structsize = DllStructGetSize($stString) / 2
    DllStructSetData($stString, 1, $sFileName)

    [/autoit] [autoit][/autoit] [autoit]

    ; Den PickIconDlg starten - '62' ist der Ordinalwert für diese Funktion
    DllCall("shell32.dll", "none", 62, "hwnd", 0, "ptr", DllStructGetPtr($stString), "int", $structsize, "ptr", DllStructGetPtr($stIcon))

    [/autoit] [autoit][/autoit] [autoit]

    $sFileName = DllStructGetData($stString, 1)
    $nIconIndex = DllStructGetData($stIcon, 1)

    [/autoit] [autoit][/autoit] [autoit]

    ; Den neuen Dateinamen und den Iconindex anzeigen
    MsgBox(0, "Icon-Info", "Die zuletzt ausgewählte Datei: " & @LF&@LF & $sFileName & @LF & "Icon-Index: " & $nIconIndex)

    [/autoit]


    LG Kleiner

  • GUICtrlListView Icon ????

    • Kleiner
    • 27. Juni 2010 um 05:19

    Hey!

    Habe mir da noch was überlegt!
    Ich lasse bei der Update Funktion prüfen ob sich nur der Titel geändert hat, wenn ja Item Text ändern, und wieder habe ich ein sonderbaren Fehler, wenn ich den eigenen Titel nicht anzeige lassen will wird der Image Index falsch angepasst???
    Ohne die Prüfung des eigenen Titel läuft alles gut!

    BugFix
    Ich habe deine (Hilfe) erst falsch verstanden, kann die Idee nicht umsetzen hast du vielleicht ein Beispiel.

    Spoiler anzeigen
    [autoit]

    ;#RequireAdmin
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_UseX64=n
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    #include <Array.au3>
    #include <GuiImageList.au3>
    #include <GuiListView.au3>
    #include <GuiStatusBar.au3>
    #include <GuiTab.au3>
    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <WindowsConstants.au3>
    #include <Process.au3>
    #include <WinAPI.au3>

    [/autoit] [autoit][/autoit] [autoit]

    #include <Process_new.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Opt('GUIOnEventMode', 1)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Global $Form[1]
    Local $Tab
    Local $SYS[30]
    Local $Menue_SYS[5]
    Local $aWinList, $Icon
    Local $iParts[3] = [180, 780, 50], $iStatus, $ExecutablePath
    Local $LV_SYS[5], $Handle_LV_SYS[5], $LV_Array_Pro[8]
    Local $Com_Fehler = ObjEvent('AutoIt.Error', 'Com_Fehler'), $Error = True, $Us, $sU, $co
    Local $obWMI = ObjGet('winmgmts:{impersonationLevel=impersonate}!\\.\root\CIMV2'), $cI
    Local $exStyles = BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT, $LVS_EX_SUBITEMIMAGES)
    Local $Bezeichnung[8] = ['ProzesseName ', ' PID', 'Parent PID', 'Eigentümer', 'Priorität', 'Ausführbaren Pfad', 'Geschriebenen Daten', 'Speichernutzung']

    [/autoit] [autoit][/autoit] [autoit]

    $Form[0] = GUICreate('Task_Manager', 870, 550, (@DesktopWidth - 870) / 2, (@DesktopHeight - 550) / 2, $WS_OVERLAPPEDWINDOW + $WS_CLIPSIBLINGS)
    GUISetOnEvent(-3, 'Ende')
    GUICtrlCreateLabel('Task - Überblick', 400, 480, 200, 20)
    GUICtrlSetFont(-1, 14, 400, '', 'Arial')
    $Menue_SYS[0] = GUICtrlCreateMenu('Datein')
    $Tab = GUICtrlCreateTab(10, 8, 850, 400)
    GUICtrlSetResizing(-1, $GUI_DOCKTOP + $GUI_DOCKLEFT + $GUI_DOCKBOTTOM + $GUI_DOCKRIGHT)

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlCreateTabItem('Anwendungen')
    $LV_SYS[0] = GUICtrlCreateListView('', 25, 50, 818, 315, 0x00010000 + $LVS_EX_DOUBLEBUFFER)
    GUICtrlSetResizing(-1, $GUI_DOCKTOP + $GUI_DOCKLEFT + $GUI_DOCKRIGHT + $GUI_DOCKBOTTOM)
    $Handle_LV_SYS[0] = GUICtrlGetHandle($LV_SYS[0])
    $Icon = _GUIImageList_Create(16, 16, 5)
    _GUICtrlListView_SetImageList($Handle_LV_SYS[0], $Icon, 1)
    _GUICtrlListView_AddColumn($LV_SYS[0], 'Task', 260)
    _GUICtrlListView_AddColumn($LV_SYS[0], 'EXE', 60)
    _GUICtrlListView_AddColumn($LV_SYS[0], 'Status', 60)
    _GUICtrlListView_AddColumn($LV_SYS[0], 'PID', 40)
    _GUICtrlListView_AddColumn($LV_SYS[0], 'Handel', 100)
    _GUICtrlListView_AddColumn($LV_SYS[0], 'Pfad', 260)
    $aProcess = ProcessList()
    $ExecutablePath = ExecutablePath()
    $aWinList = _WinAPI_EnumWindowsTop()
    _GUICtrlListView_BeginUpdate($Handle_LV_SYS[0])
    For $i = 1 To UBound($aProcess) - 1
    For $e = 1 To $aWinList[0][0]
    If (WinGetProcess($aWinList[$e][0]) = $aProcess[$i][1]) Then
    If (WinGetTitle($aWinList[$e][0]) <> '' And WinGetTitle($aWinList[$e][0]) <> WinGetTitle($Form[0])) Then
    _GUICtrlListView_AddItem($Handle_LV_SYS[0], WinGetTitle($aWinList[$e][0]), _GUICtrlListView_GetItemCount($Handle_LV_SYS[0]))
    _GUICtrlListView_AddSubItem($Handle_LV_SYS[0], _GUICtrlListView_GetItemCount($Handle_LV_SYS[0]) - 1, $aProcess[$i][0], 1)
    _GUICtrlListView_AddSubItem($Handle_LV_SYS[0], _GUICtrlListView_GetItemCount($Handle_LV_SYS[0]) - 1, ' Wird ausgeführt ', 2)
    _GUICtrlListView_AddSubItem($Handle_LV_SYS[0], _GUICtrlListView_GetItemCount($Handle_LV_SYS[0]) - 1, WinGetProcess($aWinList[$e][0]), 3)
    _GUICtrlListView_AddSubItem($Handle_LV_SYS[0], _GUICtrlListView_GetItemCount($Handle_LV_SYS[0]) - 1, $aWinList[$e][0], 4)
    _GUICtrlListView_AddSubItem($Handle_LV_SYS[0], _GUICtrlListView_GetItemCount($Handle_LV_SYS[0]) - 1, $ExecutablePath[$i], 5)
    _GUIImageList_AddIcon($Icon, $ExecutablePath[$i])
    EndIf
    EndIf
    Next
    Next
    _GUICtrlListView_EndUpdate($Handle_LV_SYS[0])
    $SYS[0] = GUICtrlCreateButton('Task beenden', 535, 375, 100, 22)
    GUICtrlSetResizing(-1, $GUI_DOCKRIGHT + $GUI_DOCKWIDTH + $GUI_DOCKBOTTOM + $GUI_DOCKHEIGHT)
    GUICtrlSetOnEvent(-1, 'Prozess_Update')
    $SYS[1] = GUICtrlCreateButton('Wechseln zu', 640, 375, 100, 22)
    GUICtrlSetResizing(-1, $GUI_DOCKRIGHT + $GUI_DOCKWIDTH + $GUI_DOCKBOTTOM + $GUI_DOCKHEIGHT)
    GUICtrlSetOnEvent(-1, '')
    $SYS[2] = GUICtrlCreateButton('Neuer Task...', 745, 375, 100, 22)
    GUICtrlSetResizing(-1, $GUI_DOCKRIGHT + $GUI_DOCKWIDTH + $GUI_DOCKBOTTOM + $GUI_DOCKHEIGHT)
    GUICtrlSetOnEvent(-1, '')

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlCreateTabItem('Processe')
    $LV_SYS[1] = GUICtrlCreateListView('', 25, 50, 818, 315, 0x00010000 + $LVS_EX_DOUBLEBUFFER)
    GUICtrlSetResizing(-1, $GUI_DOCKTOP + $GUI_DOCKLEFT + $GUI_DOCKRIGHT + $GUI_DOCKBOTTOM)
    $Handle_LV_SYS[1] = GUICtrlGetHandle($LV_SYS[1])
    For $i = 0 To 7
    $LV_Array_Pro[$i] = _GUICtrlListView_AddColumn($Handle_LV_SYS[1], $Bezeichnung[$i], 100)
    Next
    $co = $obWMI.ExecQuery('SELECT * FROM Win32_Process')
    If Not IsObj($co) Then
    MsgBox(0, 'Error', 'Fehler, Objekt konnte nicht erstellt werden' & @CRLF & 'Programm wird beendet!')
    Exit
    EndIf
    Dim $Prozess[$co.Count - 1][8], $i = 0
    For $ob In $co
    If $i >= 1 Then
    $Prozess[$i - 1][0] = $ob.Caption
    $Prozess[$i - 1][1] = $ob.ProcessId
    $Prozess[$i - 1][2] = $ob.ParentProcessId
    If ($Error = True) Then
    If $ob.GetOwner($sU, $Us) = 0 Then $Prozess[$i - 1][3] = $sU & '\' & $Us
    EndIf
    $Prozess[$i - 1][4] = $ob.Priority
    $Prozess[$i - 1][5] = $ob.ExecutablePath
    $Prozess[$i - 1][6] = $ob.WriteTransferCount
    $Prozess[$i - 1][7] = $ob.WorkingSetSize
    EndIf
    $i += 1
    Next
    _GUICtrlListView_AddArray($LV_SYS[1], $Prozess)
    $SYS[3] = GUICtrlCreateButton('Process beenden', 745, 375, 100, 22)
    GUICtrlSetResizing(-1, $GUI_DOCKRIGHT + $GUI_DOCKWIDTH + $GUI_DOCKBOTTOM + $GUI_DOCKHEIGHT)
    GUICtrlSetOnEvent(-1, '')

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlCreateTabItem('')
    $SYS[3] = GUICtrlCreateLabel('', 700, 490, 170, 22)
    GUICtrlSetResizing(-1, $GUI_DOCKRIGHT + $GUI_DOCKWIDTH + $GUI_DOCKBOTTOM + $GUI_DOCKHEIGHT)
    GUICtrlSetFont(-1, 8.5, 1000, '', 'Arial')
    $SYS[4] = GUICtrlCreateLabel('', 700, 465, 140, 22)
    GUICtrlSetResizing(-1, $GUI_DOCKRIGHT + $GUI_DOCKWIDTH + $GUI_DOCKBOTTOM + $GUI_DOCKHEIGHT)
    GUICtrlSetFont(-1, 8.5, 1000, '', 'Arial')

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $iStatus = _GUICtrlStatusBar_Create($Form[0])
    _GUICtrlStatusBar_SetParts($iStatus, $iParts)
    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    AdlibRegister('Update', 1000)
    GUIRegisterMsg($WM_SIZE, 'WM_SIZE')
    GUIRegisterMsg(0x0024, 'MY_WM_GETMINMAXINFO')

    [/autoit] [autoit][/autoit] [autoit]

    Func Update()
    Switch _GUICtrlTab_GetCurSel($Tab)
    Case 0
    WinListe_Update()
    _GUICtrlStatusBar_SetText($iStatus, ' Aktive Fenster : ' & _GUICtrlListView_GetItemCount($Handle_LV_SYS[0]), 0)
    Case 1
    Prozess_Update()
    _GUICtrlStatusBar_SetText($iStatus, ' Prozesse : ' & _GUICtrlListView_GetItemCount($Handle_LV_SYS[1]), 0)
    EndSwitch
    EndFunc ;==>Update

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func WinListe_Update()
    Local $Temp[1], $F_Text
    Local $UB = _GUICtrlListView_GetItemCount($Handle_LV_SYS[0])
    Local $Win_Alt[$UB + 1], $Win_Alt_Prue[$UB + 1]
    $Win_Alt[0] = $UB
    $Win_Alt_Prue[0] = $UB
    For $i = 1 To $Win_Alt[0]
    $Win_Alt[$i] = _GUICtrlListView_GetItemText($Handle_LV_SYS[0], $i - 1, 0)
    $Win_Alt_Prue[$i] = _GUICtrlListView_GetItemText($Handle_LV_SYS[0], $i - 1, 4)
    Next
    Local $iProcess = ProcessList()
    Local $ExecutablePath = ExecutablePath()
    Local $iWinList = _WinAPI_EnumWindowsTop()
    _GUICtrlListView_BeginUpdate($Handle_LV_SYS[0])
    For $i = 2 To $iProcess[0][0]
    For $e = 1 To $iWinList[0][0]
    If (WinGetProcess($iWinList[$e][0]) = $iProcess[$i][1]) Then
    $F_Text = WinGetTitle($iWinList[$e][0])
    If ($F_Text <> '' And $F_Text <> WinGetTitle($Form[0])) Then ; wird ein Icon zu viel gelöscht ???????????
    ;If ($F_Text <> '') Then ; so ist alles OKAY ??????????????
    If BitAND(_ArraySearch($Win_Alt, $F_Text), @error) Then
    If Win_Alt_Prue($Win_Alt_Prue, $F_Text, $iWinList[$e][0]) Then
    _ArrayAdd($Temp, 'SetItemText')
    ContinueLoop
    EndIf
    _GUICtrlListView_AddItem($Handle_LV_SYS[0], $F_Text, _GUICtrlListView_GetItemCount($Handle_LV_SYS[0]) - 1)
    _GUICtrlListView_AddSubItem($Handle_LV_SYS[0], _GUICtrlListView_GetItemCount($Handle_LV_SYS[0]) - 1, $iProcess[$i][0], 1)
    _GUICtrlListView_AddSubItem($Handle_LV_SYS[0], _GUICtrlListView_GetItemCount($Handle_LV_SYS[0]) - 1, ' Wird ausgeführt ', 2)
    _GUICtrlListView_AddSubItem($Handle_LV_SYS[0], _GUICtrlListView_GetItemCount($Handle_LV_SYS[0]) - 1, WinGetProcess($iWinList[$e][0]), 3)
    _GUICtrlListView_AddSubItem($Handle_LV_SYS[0], _GUICtrlListView_GetItemCount($Handle_LV_SYS[0]) - 1, $iWinList[$e][0], 4)
    _GUICtrlListView_AddSubItem($Handle_LV_SYS[0], _GUICtrlListView_GetItemCount($Handle_LV_SYS[0]) - 1, $ExecutablePath[$i], 5)
    _GUIImageList_AddIcon($Icon, $ExecutablePath[$i])
    EndIf
    _ArrayAdd($Temp, $F_Text)
    EndIf
    EndIf
    Next
    Next
    $Temp[0] = UBound($Temp) - 1
    If ($Temp[0] < $Win_Alt[0]) Then
    ReDim $Temp[UBound($Win_Alt)]
    For $i = 1 To $Win_Alt[0]
    If ($Win_Alt[$i] <> $Temp[$i] And $Temp[$i] <> 'SetItemText') Then _GUICtrlListView_DeleteItem($Handle_LV_SYS[0], $i - 1)
    Next
    EndIf
    If _GUICtrlListView_EndUpdate($Handle_LV_SYS[0]) Then _GUIImageList_SetImageCount($Icon, $Temp[0] - 1)
    EndFunc ;==>WinListe_Update

    [/autoit] [autoit][/autoit] [autoit]

    Func Win_Alt_Prue($Win_Alt_Prue, $F_Text, $iWinList); Prüfen ob sich nur der Titel geändert hat
    For $i = 1 To $Win_Alt_Prue[0]
    If ($Win_Alt_Prue[$i] = $iWinList) Then
    If _GUICtrlListView_SetItemText($Handle_LV_SYS[0], $i - 1, $F_Text) Then Return True
    EndIf
    Next
    Return False
    EndFunc ;==>Win_Alt_Prue

    [/autoit] [autoit][/autoit] [autoit]

    Func Prozess_Update()
    Local $Pro_New, $Temp[1]
    Local $UB = _GUICtrlListView_GetItemCount($Handle_LV_SYS[1])
    Local $Pro_New_List = ProcessList()
    If ($UB = UBound($Pro_New_List) - 2) Then Return (0)
    Local $Pro_Alt[$UB + 1]
    $Pro_Alt[0] = $UB
    For $i = 1 To $UB
    $Pro_Alt[$i] = _GUICtrlListView_GetItemText($Handle_LV_SYS[1], $i - 1, 0)
    Next
    _GUICtrlListView_BeginUpdate($Handle_LV_SYS[1])
    For $i = 2 To $Pro_New_List[0][0]
    If BitAND(_ArraySearch($Pro_Alt, $Pro_New_List[$i][0]), @error) Then
    $Pro_New = New_Prozess($Pro_New_List[$i][1], $Error)
    _GUICtrlListView_AddItem($Handle_LV_SYS[1], $Pro_New[0][0], _GUICtrlListView_GetItemCount($Handle_LV_SYS[1]))
    For $e = 1 To UBound($Pro_New, 2) - 1
    _GUICtrlListView_AddSubItem($Handle_LV_SYS[1], _GUICtrlListView_GetItemCount($Handle_LV_SYS[1]) - 1, $Pro_New[0][$e], $e)
    Next
    EndIf
    _ArrayAdd($Temp, $Pro_New_List[$i][0])
    Next
    $Temp[0] = UBound($Temp) - 1
    For $i = 1 To $Pro_Alt[0]
    If BitAND(_ArraySearch($Temp, $Pro_Alt[$i]), @error) Then _GUICtrlListView_DeleteItem($Handle_LV_SYS[1], _ArraySearch($Pro_Alt, $Pro_Alt[$i]) - 1)
    Next
    _GUICtrlListView_EndUpdate($Handle_LV_SYS[1])
    EndFunc ;==>Prozess_Update

    [/autoit] [autoit][/autoit] [autoit]

    Func Com_Fehler()
    Switch $Com_Fehler
    Case 0
    $Error = False
    Case Else
    $Error = True
    EndSwitch
    EndFunc ;==>Com_Fehler

    [/autoit] [autoit][/autoit] [autoit]

    Func WM_SIZE($hWnd, $iMsg, $iwParam, $ilParam)
    Local $aWinPos = WinGetPos($Form[0])
    Local $aParts[3] = [150, $aWinPos[2] - 100, 50]
    _GUICtrlStatusBar_SetParts($iStatus, $aParts)
    _GUICtrlStatusBar_Resize($iStatus)
    EndFunc ;==>WM_SIZE

    [/autoit] [autoit][/autoit] [autoit]

    Func MY_WM_GETMINMAXINFO($hWnd, $Msg, $wParam, $lParam)
    Local $Info_Chek = DllStructCreate('int;int;int;int;int;int;int;int;int;int', $lParam)
    DllStructSetData($Info_Chek, 7, 410)
    DllStructSetData($Info_Chek, 8, 455)
    DllStructSetData($Info_Chek, 9, @DesktopWidth)
    DllStructSetData($Info_Chek, 10, @DesktopHeight)
    Return (0)
    EndFunc ;==>MY_WM_GETMINMAXINFO

    [/autoit] [autoit][/autoit] [autoit]

    Func Ende()
    Exit
    EndFunc ;==>Ende

    [/autoit] [autoit][/autoit] [autoit]

    ;Func Form_HIDE()
    ; GUISetState(@SW_HIDE, @GUI_WinHandle)
    ;EndFunc ;==>Form_HIDE

    [/autoit] [autoit][/autoit] [autoit]

    ;Func Form_SHOW()
    ; GUISetState(@SW_SHOW, @GUI_WinHandle)
    ;EndFunc ;==>Form_SHOW

    [/autoit] [autoit][/autoit] [autoit]

    While 1 * Sleep(100)
    _GUICtrlStatusBar_SetText($iStatus, StringFormat("%02d:%02d:%02d", @HOUR, @MIN, @SEC), 2)
    ;WinSetTitle($Form[0], '', StringFormat("%02d:%02d:%02d", @HOUR, @MIN, @SEC))
    WEnd

    [/autoit]

    LG Kleiner

  • GUICtrlListView Icon ????

    • Kleiner
    • 25. Juni 2010 um 21:08

    Hey BugFix!

    Mit _GUICtrlListView_SetItemParam habe ich jetz noch nicht gearbeitet.
    Also ich hatte das auf eine andere weisse probiert GUIImageList_Remove, ich bin davon ausgegangen das, wenn ein neues Item erstellt wird am ende vom Index erstellt wird und das, ImageListIndex ist auch 0-basierender wenn jetzt Item-5 von 8 gelöscht wird solten doch bei beiden Index die unteren Item´s und Icos´s hoch rutschen.
    Ansich ist das mit _GUICtrlListView_SetItemParam doch das gleiche oder??

    LG KLeiner

  • GUICtrlListView Icon ????

    • Kleiner
    • 25. Juni 2010 um 20:14

    Hey Leute!

    Ich bastel gerade an eine Task – Manager ( Ideen von Raupi übernommen ) ich scheitere an der ImageListe.
    Das Problem liegt darin, wenn ein Fenster sein Titel – Text, jede Sekunde verändert. Zum Beispiel irgendein Online Spiel läuft : Sekunde werden runter oder hoch gezählt und ich öffne ein „Fenster“ oder Programm das zur Liste hinzugefügt wird, im ersten Moment wird das richtige Icon geholt, beim Aktualisieren bekommt das Item das Icon zugewissen, welches vorher an der Stelle war.
    Ich habe schon unzählige Möglichkeiten ausprobiert das, ich sie nicht alle aufzählen könnte und als ich dachte das, ich am Ziel war: Pustekuchen - irgendein anderer Fehler.
    Nun raucht mir der Kopf, habe keine Ideen mehr Hilfe hoch und runter gelesen, nur irgendwie sehe ich den Wald vor lauter Bäume nicht mehr.

    code:

    Spoiler anzeigen
    [autoit]

    ;#RequireAdmin

    [/autoit] [autoit][/autoit] [autoit]

    #include <Array.au3>
    #include <GuiImageList.au3>
    #include <GuiListView.au3>
    #include <GuiStatusBar.au3>
    #include <GuiTab.au3>
    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <WindowsConstants.au3>
    #include <Process.au3>
    #include <WinAPI.au3>

    [/autoit] [autoit][/autoit] [autoit]

    #include <Process_new.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Opt('GUIOnEventMode', 1)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Global $Form[1]
    Local $Tab
    Local $SYS[30]
    Local $Menue_SYS[5]
    Local $aWinList, $Icon
    Local $iParts[3] = [180, 780, 50], $iStatus, $ExecutablePath
    Local $LV_SYS[5], $Handle_LV_SYS[5], $LV_Array_Pro[8]
    Local $Com_Fehler = ObjEvent('AutoIt.Error', 'Com_Fehler'), $Error = True, $Us, $sU, $co
    Local $obWMI = ObjGet('winmgmts:{impersonationLevel=impersonate}!\\.\root\CIMV2'), $cI
    Local $exStyles = BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT, $LVS_EX_SUBITEMIMAGES)
    Local $Bezeichnung[8] = ['ProzesseName ', ' PID', 'Parent PID', 'Eigentümer', 'Priorität', 'Ausführbaren Pfad', 'Geschriebenen Daten', 'Speichernutzung']

    [/autoit] [autoit][/autoit] [autoit]

    $Form[0] = GUICreate('Task_Manager', 870, 550, (@DesktopWidth - 870) / 2, (@DesktopHeight - 550) / 2, $WS_OVERLAPPEDWINDOW + $WS_CLIPSIBLINGS)
    GUISetOnEvent(-3, 'Ende')
    GUICtrlCreateLabel('Task - Überblick', 400, 480, 200, 20)
    GUICtrlSetFont(-1, 14, 400, '', 'Arial')
    $Menue_SYS[0] = GUICtrlCreateMenu('Datein')
    $Tab = GUICtrlCreateTab(10, 8, 850, 400)
    GUICtrlSetResizing(-1, $GUI_DOCKTOP + $GUI_DOCKLEFT + $GUI_DOCKBOTTOM + $GUI_DOCKRIGHT)

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlCreateTabItem('Anwendungen')
    $LV_SYS[0] = GUICtrlCreateListView('', 25, 50, 818, 315, 0x00010000)
    GUICtrlSetResizing(-1, $GUI_DOCKTOP + $GUI_DOCKLEFT + $GUI_DOCKRIGHT + $GUI_DOCKBOTTOM)
    $Handle_LV_SYS[0] = GUICtrlGetHandle($LV_SYS[0])
    $Icon = _GUIImageList_Create(16, 16, 5)
    _GUICtrlListView_SetImageList($Handle_LV_SYS[0], $Icon, 1)
    _GUICtrlListView_AddColumn($LV_SYS[0], 'Task', 260)
    _GUICtrlListView_AddColumn($LV_SYS[0], 'EXE', 60)
    _GUICtrlListView_AddColumn($LV_SYS[0], 'Status', 60)
    _GUICtrlListView_AddColumn($LV_SYS[0], 'PID', 40)
    _GUICtrlListView_AddColumn($LV_SYS[0], 'Handel', 100)
    _GUICtrlListView_AddColumn($LV_SYS[0], 'Pfad', 260)
    $aProcess = ProcessList()
    $ExecutablePath = ExecutablePath()
    $aWinList = _WinAPI_EnumWindowsTop()
    For $i = 1 To UBound($aProcess) - 1
    For $e = 1 To $aWinList[0][0]
    If (WinGetProcess($aWinList[$e][0]) = $aProcess[$i][1]) Then
    If WinGetTitle($aWinList[$e][0]) <> '' Then
    _GUICtrlListView_AddItem($Handle_LV_SYS[0], WinGetTitle($aWinList[$e][0]), _GUICtrlListView_GetItemCount($Handle_LV_SYS[0]))
    _GUICtrlListView_AddSubItem($Handle_LV_SYS[0], _GUICtrlListView_GetItemCount($Handle_LV_SYS[0]) - 1, $aProcess[$i][0], 1)
    _GUICtrlListView_AddSubItem($Handle_LV_SYS[0], _GUICtrlListView_GetItemCount($Handle_LV_SYS[0]) - 1, ' Wird ausgeführt ', 2)
    _GUICtrlListView_AddSubItem($Handle_LV_SYS[0], _GUICtrlListView_GetItemCount($Handle_LV_SYS[0]) - 1, WinGetProcess($aWinList[$e][0]), 3)
    _GUICtrlListView_AddSubItem($Handle_LV_SYS[0], _GUICtrlListView_GetItemCount($Handle_LV_SYS[0]) - 1, $aWinList[$e][0], 4)
    _GUICtrlListView_AddSubItem($Handle_LV_SYS[0], _GUICtrlListView_GetItemCount($Handle_LV_SYS[0]) - 1, $ExecutablePath[$i], 5)
    _GUIImageList_AddIcon($Icon, $ExecutablePath[$i])
    EndIf
    EndIf
    Next
    Next
    $SYS[0] = GUICtrlCreateButton('Task beenden', 535, 375, 100, 22)
    GUICtrlSetResizing(-1, $GUI_DOCKRIGHT + $GUI_DOCKWIDTH + $GUI_DOCKBOTTOM + $GUI_DOCKHEIGHT)
    GUICtrlSetOnEvent(-1, 'Prozess_Update')
    $SYS[1] = GUICtrlCreateButton('Wechseln zu', 640, 375, 100, 22)
    GUICtrlSetResizing(-1, $GUI_DOCKRIGHT + $GUI_DOCKWIDTH + $GUI_DOCKBOTTOM + $GUI_DOCKHEIGHT)
    GUICtrlSetOnEvent(-1, '')
    $SYS[2] = GUICtrlCreateButton('Neuer Task...', 745, 375, 100, 22)
    GUICtrlSetResizing(-1, $GUI_DOCKRIGHT + $GUI_DOCKWIDTH + $GUI_DOCKBOTTOM + $GUI_DOCKHEIGHT)
    GUICtrlSetOnEvent(-1, '')

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlCreateTabItem('Processe')
    $LV_SYS[1] = GUICtrlCreateListView('', 25, 50, 818, 315, 0x00010000)
    GUICtrlSetResizing(-1, $GUI_DOCKTOP + $GUI_DOCKLEFT + $GUI_DOCKRIGHT + $GUI_DOCKBOTTOM)
    $Handle_LV_SYS[1] = GUICtrlGetHandle($LV_SYS[1])
    For $i = 0 To 7
    $LV_Array_Pro[$i] = _GUICtrlListView_AddColumn($Handle_LV_SYS[1], $Bezeichnung[$i], 100)
    Next
    $co = $obWMI.ExecQuery('SELECT * FROM Win32_Process')
    If Not IsObj($co) Then
    MsgBox(0, 'Error', 'Fehler, Objekt konnte nicht erstellt werden' & @CRLF & 'Programm wird beendet!')
    Exit
    EndIf
    Dim $Prozess[$co.Count - 1][8], $i = 0
    For $ob In $co
    If $i >= 1 Then
    $Prozess[$i - 1][0] = $ob.Caption
    $Prozess[$i - 1][1] = $ob.ProcessId
    $Prozess[$i - 1][2] = $ob.ParentProcessId
    If ($Error = True) Then
    If $ob.GetOwner($sU, $Us) = 0 Then $Prozess[$i - 1][3] = $sU & '\' & $Us
    EndIf
    $Prozess[$i - 1][4] = $ob.Priority
    $Prozess[$i - 1][5] = $ob.ExecutablePath
    $Prozess[$i - 1][6] = $ob.WriteTransferCount
    $Prozess[$i - 1][7] = $ob.WorkingSetSize
    EndIf
    $i += 1
    Next
    _GUICtrlListView_AddArray($LV_SYS[1], $Prozess)
    $SYS[3] = GUICtrlCreateButton('Process beenden', 745, 375, 100, 22)
    GUICtrlSetResizing(-1, $GUI_DOCKRIGHT + $GUI_DOCKWIDTH + $GUI_DOCKBOTTOM + $GUI_DOCKHEIGHT)
    GUICtrlSetOnEvent(-1, '')

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlCreateTabItem('')
    $SYS[3] = GUICtrlCreateLabel('', 700, 490, 170, 22)
    GUICtrlSetResizing(-1, $GUI_DOCKRIGHT + $GUI_DOCKWIDTH + $GUI_DOCKBOTTOM + $GUI_DOCKHEIGHT)
    GUICtrlSetFont(-1, 8.5, 1000, '', 'Arial')
    $SYS[4] = GUICtrlCreateLabel('', 700, 465, 140, 22)
    GUICtrlSetResizing(-1, $GUI_DOCKRIGHT + $GUI_DOCKWIDTH + $GUI_DOCKBOTTOM + $GUI_DOCKHEIGHT)
    GUICtrlSetFont(-1, 8.5, 1000, '', 'Arial')

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $iStatus = _GUICtrlStatusBar_Create($Form[0])
    _GUICtrlStatusBar_SetParts($iStatus, $iParts)
    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    AdlibRegister('Update', 1000)
    GUIRegisterMsg($WM_SIZE, 'WM_SIZE')
    GUIRegisterMsg(0x0024, 'MY_WM_GETMINMAXINFO')

    [/autoit] [autoit][/autoit] [autoit]

    Func Update()
    Switch _GUICtrlTab_GetCurSel($Tab)
    Case 0
    WinListe_Update()
    _GUICtrlStatusBar_SetText($iStatus, ' Aktive Fenster : ' & _GUICtrlListView_GetItemCount($Handle_LV_SYS[0]), 0)
    Case 1
    Prozess_Update()
    _GUICtrlStatusBar_SetText($iStatus, ' Prozesse : ' & _GUICtrlListView_GetItemCount($Handle_LV_SYS[1]), 0)
    EndSwitch
    EndFunc ;==>Update

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func WinListe_Update()
    Local $Temp[1], $F_Text
    Local $UB = _GUICtrlListView_GetItemCount($Handle_LV_SYS[0])
    Local $Win_Alt[$UB + 1]
    $Win_Alt[0] = $UB
    For $i = 1 To $Win_Alt[0]
    $Win_Alt[$i] = _GUICtrlListView_GetItemText($Handle_LV_SYS[0], $i - 1, 0)
    Next
    Local $iProcess = ProcessList()
    Local $ExecutablePath = ExecutablePath()
    Local $iWinList = _WinAPI_EnumWindowsTop()
    _GUICtrlListView_BeginUpdate($Handle_LV_SYS[0])
    For $i = 2 To $iProcess[0][0]
    For $e = 1 To $iWinList[0][0]
    If (WinGetProcess($iWinList[$e][0]) = $iProcess[$i][1]) Then
    $F_Text = WinGetTitle($iWinList[$e][0])
    If ($F_Text <> '') Then
    If BitAND(_ArraySearch($Win_Alt, $F_Text), @error) Then
    _GUIImageList_AddIcon($Icon, $ExecutablePath[$i])
    _GUICtrlListView_AddItem($Handle_LV_SYS[0], $F_Text, _GUICtrlListView_GetItemCount($Handle_LV_SYS[0]))
    _GUICtrlListView_AddSubItem($Handle_LV_SYS[0], _GUICtrlListView_GetItemCount($Handle_LV_SYS[0]) - 1, $iProcess[$i][0], 1)
    _GUICtrlListView_AddSubItem($Handle_LV_SYS[0], _GUICtrlListView_GetItemCount($Handle_LV_SYS[0]) - 1, ' Wird ausgeführt ', 2)
    _GUICtrlListView_AddSubItem($Handle_LV_SYS[0], _GUICtrlListView_GetItemCount($Handle_LV_SYS[0]) - 1, WinGetProcess($iWinList[$e][0]), 3)
    _GUICtrlListView_AddSubItem($Handle_LV_SYS[0], _GUICtrlListView_GetItemCount($Handle_LV_SYS[0]) - 1, $iWinList[$e][0], 4)
    _GUICtrlListView_AddSubItem($Handle_LV_SYS[0], _GUICtrlListView_GetItemCount($Handle_LV_SYS[0]) - 1, $ExecutablePath[$i], 5)
    EndIf
    _ArrayAdd($Temp, $F_Text)
    EndIf
    EndIf
    Next
    Next
    $Temp[0] = UBound($Temp) - 1
    For $i = 1 To $Win_Alt[0]
    If BitAND(_ArraySearch($Temp, $Win_Alt[$i]), @error) Then _GUICtrlListView_DeleteItem($Handle_LV_SYS[0], _ArraySearch($Win_Alt, $Win_Alt[$i]) - 1)
    Next
    _GUICtrlListView_EndUpdate($Handle_LV_SYS[0])
    If $Temp[0] >= $Win_Alt[0] Then _GUIImageList_SetImageCount($Icon, _GUICtrlListView_GetItemCount($Handle_LV_SYS[0]))
    EndFunc ;==>WinListe_Update

    [/autoit] [autoit][/autoit] [autoit]

    Func Prozess_Update()
    Local $Pro_New, $Temp[1]
    Local $UB = _GUICtrlListView_GetItemCount($Handle_LV_SYS[1])
    Local $Pro_New_List = ProcessList()
    If ($UB = UBound($Pro_New_List) - 2) Then Return (0)
    Local $Pro_Alt[$UB + 1]
    $Pro_Alt[0] = $UB
    For $i = 1 To $UB
    $Pro_Alt[$i] = _GUICtrlListView_GetItemText($Handle_LV_SYS[1], $i - 1, 0)
    Next
    _GUICtrlListView_BeginUpdate($Handle_LV_SYS[1])
    For $i = 2 To $Pro_New_List[0][0]
    If BitAND(_ArraySearch($Pro_Alt, $Pro_New_List[$i][0]), @error) Then
    $Pro_New = New_Prozess($Pro_New_List[$i][1], $Error)
    _GUICtrlListView_AddItem($Handle_LV_SYS[1], $Pro_New[0][0], _GUICtrlListView_GetItemCount($Handle_LV_SYS[1]))
    For $e = 1 To UBound($Pro_New, 2) - 1
    _GUICtrlListView_AddSubItem($Handle_LV_SYS[1], _GUICtrlListView_GetItemCount($Handle_LV_SYS[1]) - 1, $Pro_New[0][$e], $e)
    Next
    EndIf
    _ArrayAdd($Temp, $Pro_New_List[$i][0])
    Next
    $Temp[0] = UBound($Temp) - 1
    For $i = 1 To $Pro_Alt[0]
    If BitAND(_ArraySearch($Temp, $Pro_Alt[$i]), @error) Then _GUICtrlListView_DeleteItem($Handle_LV_SYS[1], _ArraySearch($Pro_Alt, $Pro_Alt[$i]) - 1)
    Next
    _GUICtrlListView_EndUpdate($Handle_LV_SYS[1])
    EndFunc ;==>Prozess_Update

    [/autoit] [autoit][/autoit] [autoit]

    Func Com_Fehler()
    Switch $Com_Fehler
    Case 0
    $Error = False
    Case Else
    $Error = True
    EndSwitch
    EndFunc ;==>Com_Fehler

    [/autoit] [autoit][/autoit] [autoit]

    Func WM_SIZE($hWnd, $iMsg, $iwParam, $ilParam)
    Local $aWinPos = WinGetPos($Form[0])
    Local $aParts[3] = [150, $aWinPos[2] - 100, 50]
    _GUICtrlStatusBar_SetParts($iStatus, $aParts)
    _GUICtrlStatusBar_Resize($iStatus)
    EndFunc ;==>WM_SIZE

    [/autoit] [autoit][/autoit] [autoit]

    Func MY_WM_GETMINMAXINFO($hWnd, $Msg, $wParam, $lParam)
    Local $Info_Chek = DllStructCreate('int;int;int;int;int;int;int;int;int;int', $lParam)
    DllStructSetData($Info_Chek, 7, 410)
    DllStructSetData($Info_Chek, 8, 455)
    DllStructSetData($Info_Chek, 9, @DesktopWidth)
    DllStructSetData($Info_Chek, 10, @DesktopHeight)
    Return (0)
    EndFunc ;==>MY_WM_GETMINMAXINFO

    [/autoit] [autoit][/autoit] [autoit]

    Func Ende()
    Exit
    EndFunc ;==>Ende

    [/autoit] [autoit][/autoit] [autoit]

    ;Func Form_HIDE()
    ; GUISetState(@SW_HIDE, @GUI_WinHandle)
    ;EndFunc ;==>Form_HIDE

    [/autoit] [autoit][/autoit] [autoit]

    ;Func Form_SHOW()
    ; GUISetState(@SW_SHOW, @GUI_WinHandle)
    ;EndFunc ;==>Form_SHOW

    [/autoit] [autoit][/autoit] [autoit]

    While 1 * Sleep(100)
    _GUICtrlStatusBar_SetText($iStatus, StringFormat("%02d:%02d:%02d", @HOUR, @MIN, @SEC), 2)
    WinSetTitle($Form[0], '',StringFormat("%02d:%02d:%02d", @HOUR, @MIN, @SEC))
    WEnd

    [/autoit]

    #include <Process_new.au3>

    Spoiler anzeigen
    [autoit]

    #include-once

    [/autoit] [autoit][/autoit] [autoit]

    Local $obWMI = ObjGet('winmgmts:{impersonationLevel=impersonate}!\\.\root\CIMV2')

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func New_Prozess($Process_New, $Error)
    Local $Us, $sU
    Local $Prozess[1][8]
    Local $co = $obWMI.ExecQuery('SELECT * FROM Win32_Process')
    For $ob In $co
    If ($ob.ProcessId = $Process_New) Then
    $Prozess[0][0] = $ob.Caption
    $Prozess[0][1] = $ob.ProcessId
    $Prozess[0][2] = $ob.ParentProcessId
    If ($Error = True) Then
    If $ob.GetOwner($sU, $Us) = 0 Then $Prozess[0][3] = $sU & '\' & $Us
    EndIf
    $Prozess[0][4] = $ob.Priority
    $Prozess[0][5] = $ob.ExecutablePath
    $Prozess[0][6] = $ob.WriteTransferCount
    $Prozess[0][7] = $ob.WorkingSetSize
    EndIf
    Next
    Return $Prozess
    EndFunc ;==>New_Prozess

    [/autoit] [autoit][/autoit] [autoit]

    Func ExecutablePath()
    Local $Us, $sU
    Local $ExecutablePath
    Local $co = $obWMI.ExecQuery('SELECT * FROM Win32_Process')
    For $ob In $co
    $ExecutablePath &= '|' & $ob.ExecutablePath
    Next
    Return StringSplit(StringTrimLeft($ExecutablePath, 1), '|')
    EndFunc ;==>ExecutablePath

    [/autoit]

    Im code habe ich die Aktuelle zeit im Titel laufen für Test´s!!


    LG Kleiner

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™