Jump to content

Computer Information (New Tabbed Version!)


Skrip
 Share

Recommended Posts

Okay, JS I used your examples instead of using them in a different way because I was on a timer to get it done. (I'm going on a Vacation).

And search for big_daddy, for his add-remove programs list.

Ah okay, he is using the registry, and even his code may have inspired someone to create the code that I found the registry key through.

You really dont need my _ComputerGetSoftware() UDF since it is basically the same deal with the Programs tab.

Well I am glad I was able to get the examples up for you so you could use them, and I look forward to when you get back from your Vacation and are able to spend more time on this wonderful application.

Have fun on vacation!,

JS

AutoIt Links

File-String Hash Plugin Updated! 04-02-2008 Plugins have been discontinued. I just found out.

ComputerGetInfo UDF's Updated! 11-23-2006

External Links

Vortex Revolutions Engineer / Inventor (Web, Desktop, and Mobile Applications, Hardware Gizmos, Consulting, and more)

Link to comment
Share on other sites

Have fun on vacation!

Thanks, but we are not going anymore. We were gunna go visit reletives but they're coming here. So, I can also continue programming.

---

Thanks solid snake.

[left][sub]We're trapped in the belly of this horrible machine.[/sub][sup]And the machine is bleeding to death...[/sup][sup][/sup][/left]

Link to comment
Share on other sites

Anybody have any ideas on what else to add?

(Besides errors I need to fix)

[left][sub]We're trapped in the belly of this horrible machine.[/sub][sup]And the machine is bleeding to death...[/sup][sup][/sup][/left]

Link to comment
Share on other sites

Link to comment
Share on other sites

Holy Shit... (sorry kids)

Wow, That'll keep me busy!

I'll release an update when I get the sound +vid card problems fixed.

[left][sub]We're trapped in the belly of this horrible machine.[/sub][sup]And the machine is bleeding to death...[/sup][sup][/sup][/left]

Link to comment
Share on other sites

Holy Shit... (sorry kids)

Wow, That'll keep me busy!

I'll release an update when I get the sound +vid card problems fixed.

Yea someone showed me that as well (or a similar one). It is alot of work to get up to the amount of data those utilities provide. I am actually going to use my UDF Library (once complete) to create a program that will gather computer information, and add it to a database, and then it can go back and re-scan a system to alert me of changes that have been made, log them and allow me to review them to be sure whether they are good or bad.

Edit: Added Link

JS

Edited by JSThePatriot

AutoIt Links

File-String Hash Plugin Updated! 04-02-2008 Plugins have been discontinued. I just found out.

ComputerGetInfo UDF's Updated! 11-23-2006

External Links

Vortex Revolutions Engineer / Inventor (Web, Desktop, and Mobile Applications, Hardware Gizmos, Consulting, and more)

Link to comment
Share on other sites

Have also a look to this already made AutoIT script :http://www.autoitscript.com/forum/index.php?showtopic=16854

and this one also http://www.autoitscript.com/forum/index.ph...p;hl=servicespe to learn to work with listviews.....

maybe even this one http://www.911cd.net/forums//index.php?showtopic=13372 :-)

Edited by FeReNGi
Link to comment
Share on other sites

NEW RELEASE:

-Fixes Sound Card Information

-Fixes Video Card Information

---

Thank you script-o-matic!

JS, thats a good idea.

[left][sub]We're trapped in the belly of this horrible machine.[/sub][sup]And the machine is bleeding to death...[/sup][sup][/sup][/left]

Link to comment
Share on other sites

  • 3 weeks later...

Hope you don't mind but I extracted your Programs section and made it a single app. I added the ability to read remote registry keys for installed apps. What I'm finding is when run against a remote machine I'm getting far too few of a list of installed apps than if I were to run the app locally on the same machine (for instance if I run it against a desktop here it shows 35 objects yet if I run the app on the desktop then it shows 159 objects). Not sure what I'm missing. I'm using the Readkeys function instead of the UDF. I have the compinfo.au3 included but I'm not using any of the UDFs (yet). Any assistance? Thanks

#include <CompInfo.au3>
#include <Inet.au3>
#include <File.au3>
#include <Constants.au3>
#include <GuiStatusBar.au3>
#include <GUIConstants.au3>
#include <GuiListView.au3>
#include <process.au3>
#NoTrayIcon
GUISetIcon("install.ico")
Dim $Software
Dim $Key = "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall"
Dim $Title = "Display Uninstall"
Dim $EnableList = 1
Dim $RemoteComputer
Local $a_PartsRightEdge[2] = [344,-1]
Local $a_PartsText[2] = ["","v .1 2006"]
$SelectedCount = 0
Global $wait
$mainWindows = GUICreate("Software Uninstaller", 490, 391, -1, -1)
GUICtrlCreateIcon("shell32.dll", 162, 23, 17, 32, 32)
$Progress1 = GUICtrlCreateProgress(16, 340, 457, 20,$PBS_SMOOTH)
GUICtrlSetState($Progress1, $GUI_HIDE)
$ulist = GUICtrlCreateListView("  |Display Name|Key Item", 16, 64, 457, 269, BitOR($LVS_NOSORTHEADER, $LVS_REPORT, $LVS_SHOWSELALWAYS), BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_GRIDLINES, $LVS_EX_SUBITEMIMAGES))
GUICtrlSetResizing($ulist, $GUI_DOCKBORDERS)
_GUICtrlListViewSetColumnWidth($ulist, 0, $LVSCW_AUTOSIZE_USEHEADER)
_GUICtrlListViewSetColumnWidth($ulist, 1, 310)
_GUICtrlListViewSetColumnWidth($ulist, 2, 310)
$but1 = GUICtrlCreateButton("Refresh List", 74, 32, 100, 25, $BS_DEFPUSHBUTTON)
GUICtrlSetResizing($but1, $GUI_DOCKALL)
$but2 = GUICtrlCreateButton("Uninstall Program", 175, 32, 100, 25)
GUICtrlSetResizing($but2, $GUI_DOCKALL)
GUICtrlSetState($but2, $GUI_DISABLE)
$chkbox = GUICtrlCreateCheckbox("Enable\Disable Silent Uninstall", 300, 34)
GUICtrlSetResizing($chkbox, $GUI_DOCKALL)
$Label1 = GUICtrlCreateLabel("Remote Computer (Leave blank for local list): ", 70, 10, 230, 20)
GUICtrlSetResizing($Label1, $GUI_DOCKALL)
$Input1 = GUICtrlCreateInput("", 290, 8, 180, 20, BitOR($ES_LEFT, $ES_AUTOHSCROLL, $ES_UPPERCASE))
GUICtrlSetResizing($Input1, $GUI_DOCKALL)
$StatusBar1 = _GuiCtrlStatusBarCreate($mainWindows, $a_PartsRightEdge, $a_PartsText, $SBT_TOOLTIPS)
_GuiCtrlStatusBarSetMinHeight($StatusBar1, 15)
GUICtrlSetResizing($Progress1, $GUI_DOCKSTATEBAR)

GUISetState()

While 1
    $msg = GUIGetMsg()
    Select
        Case $msg = $GUI_EVENT_CLOSE
            _Selfdelete()
            Exit
        Case $MSG = $but1
            _GUICtrlStatusBarSetIcon($StatusBar1, 0,"shell32.dll", 171)
            GUICtrlSetState($Progress1, $GUI_SHOW)
            _GUICtrlListViewDeleteAllItems ($ulist)
            $RemoteComputer = StringReplace(GUICtrlRead($Input1), '\', '')
            $List = ReadKeys($RemoteComputer)
            GUICtrlSetData($Input1, '')
            GUICtrlSetData($progress1,0)
            GUICtrlSetState($Progress1, $GUI_HIDE)
        Case $MSG = $but2
            _GUICtrlStatusBarSetIcon($StatusBar1, 0, "shell32.dll", 162)
            $ListIndices = _GUICtrlListViewGetSelectedIndices ($ulist, 1)
            If $ListIndices == $LV_ERR Then ContinueLoop
            If $ListIndices[0] > 1 Then GUICtrlSetState($Progress1, $GUI_SHOW)
            Opt('RunErrorsFatal', 0)
            $Count = 0
            ControlListView('', '', $ulist, "SelectClear")
            For $x = $ListIndices[0] To 1 Step - 1
                $Count += 1
                $SelectKey = ''
                GUICtrlSetData($Progress1, Int(($Count / $ListIndices[0]) * 100))
                $ListInfo = StringSplit($List[$ListIndices[$x]], '|');ListInfo[0] = 5, ListInfo[1] = Display Name, ListInfo[2] = Regkey Name, ListInfo[3] = Icon, ListInfo[4] = QuietUninstallString, ListInfo[5] = UnistallString
                If GUICtrlRead($chkbox) == $GUI_CHECKED Or $RemoteComputer <> '' Then
                    $SelectKey = $ListInfo[4]
                    If $SelectKey == '' Then $SelectKey = StringReplace($ListInfo[5], '/i', '/X', 1) & ' /qn /norestart'
                    _GuiCtrlStatusBarSetText ($StatusBar1, ' Uninstalling Program ' & $Count & ' Of ' & $ListIndices[0] & '  ' & $ListInfo[1])
                EndIf
                If GUICtrlRead($chkbox) == $GUI_UNCHECKED And $SelectKey == '' Then
                    $SelectKey = $ListInfo[5]
                    _GuiCtrlStatusBarSetText ($StatusBar1, ' Uninstalling Program ' & $Count & ' Of ' & $ListIndices[0] & '  ' & $ListInfo[1])
                EndIf
                If $RemoteComputer == '' Then
                    $Pid = Run($SelectKey, @WorkingDir, @SW_SHOW)
                Else
                    $Pid = Run('BeyondExecv2.exe ' & StringMid($RemoteComputer, 1, StringInStr($RemoteComputer, '\', 0, -1) - 1) & ' -s -n -r ' & $SelectKey, @WorkingDir, @SW_HIDE)
                EndIf
                If @error Then
                    _FileWriteLog(@ScriptDir & '\UninstallFail.Log', $ListInfo[1] & ' | ' & $SelectKey)
                EndIf
                If Not @error And $RemoteComputer <> "" Then GUISetCursor(15, 1);set cursor to wait
                While ProcessExists($Pid)
                    Sleep(50)
                WEnd
                GUISetCursor(2, 1);set cursor to arrow
;ProcessWaitClose($Pid)
                SetError(0)
                RegRead($RemoteComputer & $Key & "\" & $ListInfo[2], 'UninstallString')
                If @error == 1 Then
                    _GUICtrlListViewDeleteItem ($ulist, $ListIndices[$x])
                    _ArrayDelete($List, $ListIndices[$x])
                EndIf
            Next
            Opt('RunErrorsFatal', 1)
            If $ListIndices[0] > 1 Then GUICtrlSetState($Progress1, $GUI_HIDE)
            _GUICtrlStatusBarSetIcon($StatusBar1, 0,"shell32.dll", 171)
            If $RemoteComputer == '' Then
                _GuiCtrlStatusBarSetText ($StatusBar1, ' Local Computer: ' & _GUICtrlListViewGetItemCount ($ulist) & ' Objects, ' & _GUICtrlListViewGetSelectedCount ($ulist) & ' Objects Selected')
            Else
                _GuiCtrlStatusBarSetText ($StatusBar1, ' Remote Computer: ' & '"' & StringReplace($RemoteComputer, '\', '') & '"' & ', ' & _GUICtrlListViewGetItemCount ($ulist) & ' Objects, ' _
                         & _GUICtrlListViewGetSelectedCount ($ulist) & ' Objects Selected')
            EndIf
            GUICtrlSetState($but2, $GUI_DISABLE)
                    Case $MSG = $GUI_EVENT_CLOSE
            Exit
; resize columns based on window size
        Case $MSG = $GUI_EVENT_MINIMIZE
            $width = ControlGetPos($mainWindows, "", $ulist)
            $Resize = $width[2] - _GUICtrlListViewGetColumnWidth ($ulist, 0)
            _GUICtrlListViewSetColumnWidth ($ulist, 1, $Resize / 2.1)
            _GUICtrlListViewSetColumnWidth ($ulist, 2, $Resize / 2.1)
            _GuiCtrlStatusBarResize ($StatusBar1)
        Case $MSG = $GUI_EVENT_MAXIMIZE
            $width = ControlGetPos($mainWindows, "", $ulist)
            $Resize = $width[2] - _GUICtrlListViewGetColumnWidth ($ulist, 0)
            _GUICtrlListViewSetColumnWidth ($ulist, 1, $Resize / 2.1)
            _GUICtrlListViewSetColumnWidth ($ulist, 2, $Resize / 2.1)
            _GuiCtrlStatusBarResize ($StatusBar1)
        Case $MSG = $GUI_EVENT_RESIZED
            $width = ControlGetPos($mainWindows, "", $ulist)
            $Resize = $width[2] - _GUICtrlListViewGetColumnWidth ($ulist, 0)
            _GUICtrlListViewSetColumnWidth ($ulist, 1, $Resize / 2.1)
            _GUICtrlListViewSetColumnWidth ($ulist, 2, $Resize / 2.1)
            _GuiCtrlStatusBarResize ($StatusBar1)
        Case $MSG = $GUI_EVENT_RESTORE
            $width = ControlGetPos($mainWindows, "", $ulist)
            $Resize = $width[2] - _GUICtrlListViewGetColumnWidth ($ulist, 0)
            _GUICtrlListViewSetColumnWidth ($ulist, 1, $Resize / 2.1)
            _GUICtrlListViewSetColumnWidth ($ulist, 2, $Resize / 2.1)
            _GuiCtrlStatusBarResize ($StatusBar1)
        Case Else
            If $EnableList And $SelectedCount == 1 Then
                $EnableList = 0
                GUICtrlSetState($but2, $GUI_ENABLE);enable uninstall button
            EndIf
            If Not $EnableList And $SelectedCount == 0 Then
                $EnableList = 1
                GUICtrlSetState($but2, $GUI_DISABLE);disable uninstall button
            EndIf
            If $SelectedCount <> _GUICtrlListViewGetSelectedCount ($ulist) Then
                $SelectedCount = _GUICtrlListViewGetSelectedCount ($ulist)
                If $RemoteComputer == '' Then
                    _GuiCtrlStatusBarSetText ($StatusBar1, ' Local Computer: ' & _GUICtrlListViewGetItemCount ($ulist) & ' Objects, ' & _GUICtrlListViewGetSelectedCount ($ulist) & ' Objects Selected')
                Else
                    _GuiCtrlStatusBarSetText ($StatusBar1, ' Remote Computer: ' & '"' & StringReplace($RemoteComputer, '\', '') & '"' & ', ' & _GUICtrlListViewGetItemCount ($ulist) & ' Objects, ' _
                             & _GUICtrlListViewGetSelectedCount ($ulist) & ' Objects Selected')
                EndIf
            EndIf
    EndSelect
WEnd

Func ReadKeys($s_RemoteComputer = '')
    GUISetCursor(15, 1);set cursor to wait
    Local $even = 1
    Local $Count = 1
    Dim $avArray[1]
    If $s_RemoteComputer <> '' Then
        _GuiCtrlStatusBarSetText ($StatusBar1, ' Reading Remote Registry Keys... Please Wait....')
        If StringMid($s_RemoteComputer, 1, 1) <> '\' Or StringMid($s_RemoteComputer, 2, 1) <> '\' Or StringRight($s_RemoteComputer, 1) <> '\' Then
            $s_RemoteComputer = '\\' & StringReplace($s_RemoteComputer, '\', '') & '\'
        EndIf
    Else
        _GuiCtrlStatusBarSetText ($StatusBar1, ' Reading Registry Keys, Please Wait....')
    EndIf
    Local Const $regkey = $s_RemoteComputer & 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall'
    While 1
        $skey = RegEnumKey($regkey, $Count)
        If @error <> 0 Then ExitLoop
        $line = RegRead($regkey & '\' & $skey, 'Displayname')
        $line = StringReplace($line, ' (remove only)', '')
        If $line == '' Then $line = "No Display Name"
        $SilentUnistall = RegRead($regkey & '\' & $skey, 'QuietUninstallString')
        $Unistall = RegRead($regkey & '\' & $skey, 'UninstallString')
        $Icon = RegRead($regkey & '\' & $skey, 'DisplayIcon')
        $Icon = StringReplace(StringMid($Icon, 1, StringInStr($Icon, ',') - 1), '"', '')
        If $Icon = "" Then $Icon = "SHELL32.DLL"
        
        If $SilentUnistall <> '' Or $Unistall <> '' Then
            If (GUICtrlRead($chkbox) == $GUI_CHECKED And $SilentUnistall <> '') Or ($s_RemoteComputer <> '' And $SilentUnistall <> '') Then
                $avArray[UBound($avArray) - 1] = $line & '|' & $skey & '|' & $Icon & '|' & $SilentUnistall & '|'
                ReDim $avArray[UBound($avArray) + 1]
            ElseIf ($s_RemoteComputer == '' And GUICtrlRead($chkbox) == $GUI_UNCHECKED) Or (GUICtrlRead($chkbox) == $GUI_CHECKED And StringInStr($Unistall, 'msiexec.exe')) Or ($s_RemoteComputer <> '' And StringInStr($Unistall, 'msiexec.exe')) Then
                $avArray[UBound($avArray) - 1] = $line & '|' & $skey & '|' & $Icon & '|' & $SilentUnistall & '|' & $Unistall
                ReDim $avArray[UBound($avArray) + 1]
            EndIf
        EndIf
        $Count += 1
    WEnd
    If (UBound($avArray) - 1) == 0 Then
        If $RemoteComputer == '' Then _GuiCtrlStatusBarSetText ($StatusBar1, ' Local Computer: ' & _GUICtrlListViewGetItemCount ($ulist) & ' Objects, ' & _GUICtrlListViewGetSelectedCount ($ulist) & ' Objects Selected')
        If $RemoteComputer <> '' And _GUICtrlListViewGetItemCount ($ulist) Then
            _GuiCtrlStatusBarSetText ($StatusBar1, ' Remote Computer: ' & '"' & StringReplace($RemoteComputer, '\', '') & '"' & ', ' & _GUICtrlListViewGetItemCount ($ulist) & ' Objects, ' _
                     & _GUICtrlListViewGetSelectedCount ($ulist) & ' Objects Selected')
            $RemoteComputer = '\\' & $RemoteComputer & '\'
        ElseIf $RemoteComputer <> '' And _GUICtrlListViewGetItemCount ($ulist) == 0 Then
            _GuiCtrlStatusBarSetText ($StatusBar1, ' Could Not Connect To Remote Computer ' & '"' & StringReplace($RemoteComputer, '\', '') & '"')
            $RemoteComputer = ''
        EndIf
    Else
        ReDim $avArray[UBound($avArray) - 1]
        _ArraySort($avArray)
        For $i = 0 To UBound($avArray) - 1
            GUICtrlSetData($Progress1, Int(($i / (UBound($avArray) - 1)) * 100))
            $Item = StringSplit($avArray[$i], '|')
            Local $lv_item = GUICtrlCreateListViewItem("" & "|" & $Item[1] & "|" & $Item[2], $ulist)
            GUICtrlSetImage(-1, $Item[3])
            If $even Then
                $even = 0
                GUICtrlSetBkColor($lv_item, 0x5CACEE)
            Else
                GUICtrlSetBkColor($lv_item, 0x9FB6CD)
                $even = 1
            EndIf
            Sleep(15)
        Next
        Sleep(1000)
        If $RemoteComputer == '' Then _GuiCtrlStatusBarSetText ($StatusBar1, ' Local Computer: ' & _GUICtrlListViewGetItemCount ($ulist) & ' Objects, ' & _GUICtrlListViewGetSelectedCount ($ulist) & ' Objects Selected')
        If $RemoteComputer <> '' And _GUICtrlListViewGetItemCount ($ulist) Then
            _GuiCtrlStatusBarSetText ($StatusBar1, ' Remote Computer: ' & '"' & StringReplace($RemoteComputer, '\', '') & '"' & ', ' & _GUICtrlListViewGetItemCount ($ulist) & ' Objects, ' _
                     & _GUICtrlListViewGetSelectedCount ($ulist) & ' Objects Selected')
            $RemoteComputer = '\\' & $RemoteComputer & '\'
        ElseIf $RemoteComputer <> '' And _GUICtrlListViewGetItemCount ($ulist) == 0 Then
            _GuiCtrlStatusBarSetText ($StatusBar1, ' Could Not Connect To Remote Computer ' & '"' & StringReplace($RemoteComputer, '\', '') & '"')
            $RemoteComputer = ''
        EndIf
        EndIf
    GUISetCursor(2, 1);set cursor to arrow
    Return ($avArray)
EndFunc;==>ReadKeys
Edited by powaking
Link to comment
Share on other sites

  • 3 months later...

I've added / Done some things with it. I'm getting less homework, ect...So i'll probably get into working on it again.

(2000 lines of code gets discouraging sometimes....)

[left][sub]We're trapped in the belly of this horrible machine.[/sub][sup]And the machine is bleeding to death...[/sup][sup][/sup][/left]

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...