none
Visual Basic и сбор информации о "железе" ПК RRS feed

  • Общие обсуждения

  • Добрый день, Уважаемые коллеги!
    Хотелось бы поинтересоваться...Есть желание написать программу для работы с компьютерным "Железом", а именно - с его учётом и выдачей параметров устройств (модель/номер/тип и т.д.)
    Подскажите, пожалуйста, куда копать!
    1 ноября 2008 г. 8:20

Все ответы

  • Добрый день,

     

    "Копать" вам наверное придется в сторону Windows Management Instrumentation http://msdn.microsoft.com/en-us/library/aa394572(VS.85).aspx.

     

    Вот несколько примеров на эту тему: http://msdn.microsoft.com/en-us/library/aa394587(VS.85).aspx

     

    Вот ссылка на похожую тему в прошлом: http://forums.microsoft.com/TechNet-RU/ShowPost.aspx?PostID=3071873&SiteID=40

    1 ноября 2008 г. 9:45
  • Я пытался как-то сделать такую программу, но ничего не вышло... уже не помню почему.. Если вы сможете найти скрипт для сбора всей инфы о компе, поделитесь пожайлуса.
    2 ноября 2008 г. 16:45
  • Это, конечно же, не VB, а PowerShell, но для общий концепт можно переделать уже в VB при желании:

    Собираем базовые сведения о железе системы с помощью PowerShell

    2 ноября 2008 г. 17:22
  • Приветствую!
    У меня для этих целей служит веб-портал на ASP - в нем используется форма с единственным текстовым окошком, куда можно вписать имя компа. Кнопка submit отправляет данные на сервер, где полученное из поля значение считывается необходимыми WMI-процедурами для анализа
    установленного ПО, памяти, HDD, принтеров и служб.
    Выводятся данные в виде таблички.


    Code Snippet

    <%@ language="VBSCRIPT" %><

    Code Snippet

    /html>



    <%

    on error resume next


    dim strOutput_Services, strOutput_Soft
    dim strOutputIPAddress, strOutput_HDD_Model, strOutput_HDD_Size
    dim strOutput_Printer, strOutput_OS, strOutput_Memory


    Set wshnetwork = Server.CreateObject("wscript.network")
    strServerName = wshnetwork.ComputerName

    Set objWMIService = GetObject("winmgmts:\\" & Request.QueryString("strComputerName"))


    %>

    <%

    'Public Sub Get_Services(output)

    'Set colServices = objWMIService.execQuery("SELECT * FROM WIN32_Service WHERE STATE = 'RUNNING'")
        'For Each objService In ColServices
            'strOutput_Services = strOutput_Services & objService.Name & vbcrlf &_
                                    'objService.StartMode & "<BR>"
        'Next                           
    'End sub


    'Public Sub Get_InstalledSoftware(output)


    Set colItems = objWMIService.ExecQuery("Select name from Win32_Product",,48)
        For Each objItem In colItems
            strOutput_Soft = strOutput_Soft & objItem.Name & vbcrlf & "<BR>"
        Next
    'End sub


    'Sub Get_NetworkInformation(IPAddress)
    Set IPConfigSet = objWMIService.ExecQuery _
        ("Select * from Win32_NetworkAdapterConfiguration Where IPEnabled=TRUE")
     
    For Each IPConfig in IPConfigSet
        If Not IsNull(IPConfig.IPAddress) Then
            For i=LBound(IPConfig.IPAddress) to UBound(IPConfig.IPAddress)
                strOutputIPAddress = strOutputIPAddress & vbcrlf & "<BR>" & IPConfig.IPAddress(i)
            Next
        End If
    Next
    'End Sub


    'Public Sub Get_HDD_Info
    Set colItems = objWMIService.ExecQuery("Select * from Win32_DiskDrive",,48)
        For Each objItem In colItems
            strOutput_HDD_Model = strOutput_HDD_Model & objItem.Caption & "<BR>" & "<BR>"
            strOutput_HDD_Size = strOutput_HDD_Size & objItem.Size & "<BR>" & "<BR>"
        Next
    ' End sub

     
    'Public Sub Get_Printer_Info
    Set colItems = objWMIService.ExecQuery("Select * from Win32_Printer",,48)
        For Each objItem in colItems
            strOutput_Printer = strOutput_Printer & objItem.Name &_
            " - " & objItem.PortName & VBCRLF & "<BR>" & "<BR>"
           
        Next
     'end sub
     
     'Public Sub Get_OS
     
    Set colItems = objWMIService.ExecQuery("Select * from Win32_OperatingSystem",,48)
    For Each objItem in colItems
        strOutput_OS = strOutput_OS & objItem.Caption
    next
     
     'End sub
     
    'Public sub Get_Memory
    Set colItems = objWMIService.ExecQuery("Select * from Win32_PhysicalMemory",,48)
        For Each objItem in colItems
            strOutput_Memory = strOutput_Memory & objItem.BankLabel & " - " & objItem.Capacity & "<BR>" & "<BR>"
        Next
    'End sub
       
    %>




    <html>
    <head>
    <meta name="GENERATOR" content="SAPIEN Technologies PrimalScript 3.1">
    <meta http-equiv="Content-Type" content="text/html; charset=iso-1251">
    <title> =$$$ ADMIN PORTAL v1.0 $$$=</title>
    </head>
    <body>

    <form name="MainForm" method="get" action="AdminPortal.asp" style="font-size: small">
        &nbsp;
    <input type="submit" value="GetInfo!" style="z-index: 102; left: 615px; position: absolute; top: 57px">

    <p>
        &nbsp;<table frame="box" style="width: 735px; color: #333399; border-top-style: groove; border-right-style: groove; border-left-style: groove; height: 81px; border-bottom-style: groove; font-weight: normal; font-size: small; background-color: #99ccff; z-index: 100; left: 105px; float: none; overflow: scroll; text-transform: capitalize; font-style: normal; position: absolute; top: 177px; font-variant: normal; text-align: center;">
            <tr>
                <td rowspan="2" style="width: 5337px; text-align: justify">
                    <p style="vertical-align: top; text-align: center;">
                    Programs</td>
                <td rowspan="2" style="width: 3761px; text-align: center">
                    Printers</td>
                <td rowspan="2" style="width: 1117px">
                    Memory</td>
                <td colspan="2" style="height: 27px">
                    Hard Disk</td>
            </tr>
            <tr>
                <td style="width: 1122px; height: 15px">
                    Model</td>
                <td style="width: 1150px; height: 15px">
                    Capacity (bytes))</td>
            </tr>
        </table>
        &nbsp; <input type="text" name="strComputerName" style="z-index: 109; left: 433px; position: absolute; top: 58px ">
    </p>
        <div style="z-index: 110; left: 194px; width: 227px; position: absolute; top: 58px;
            height: 22px; color: steelblue;">
            <span style="font-size: 16pt">
    Type a Computer Name:</span></div>
        <p>
            &nbsp;</p>
        <hr style="z-index: 103; left: 80px; position: absolute; top: 106px; width: 768px; height: 1px;" />
        &nbsp;
        <div style="z-index: 104; left: 108px; width: 260px; position: absolute; top: 285px;
            height: 106px">
            <%=Response.Write(strOutput_Soft) %>
            </div>
        <hr style="z-index: 105; left: 78px; position: absolute; top: 267px; width: 766px; height: 4px;" />
        <div style="z-index: 106; left: 377px; width: 186px; position: absolute; top: 285px;
            height: 106px">
            <%=Response.Write(strOutput_Printer)%>
           
            </div>
        <div style="z-index: 107; left: 183px; width: 217px; position: absolute; top: 126px;
            height: 23px; font-size: small; color: steelblue;">
            <span style="font-size: 14pt">
            Getting info for Computer:</span></div>
        <div style="z-index: 108; left: 404px; width: 128px; position: absolute; top: 125px;
            height: 23px">
            <%=Request.QueryString("strComputerName")%>
            </div>
        <div style="z-index: 111; left: 544px; width: 148px; position: absolute; top: 112px;
            height: 35px">
            <%=Response.Write(strOutputIPAddress)%>
            </div>
        <div style="z-index: 112; left: 736px; width: 100px; position: absolute; top: 283px;
            height: 106px">
            <%=Response.Write(strOutput_HDD_Size)%>
            </div>
        <div style="z-index: 113; left: 646px; width: 82px; position: absolute; top: 284px;
            height: 105px; line-height: normal; letter-spacing: normal;">
            <% =Response.Write(strOutput_HDD_Model)%>
            </div>
        <div style="z-index: 114; left: 569px; width: 72px; position: absolute; top: 286px;
            height: 104px">
            <% =Response.Write(strOutput_Memory)%>
            </div>
        <div style="z-index: 115; left: 704px; width: 145px; position: absolute; top: 126px;
            height: 22px">
            <% =Response.Write(strOutput_OS)%>
           
           </div>
    </form>


    <%
    Sub ClearSub
    Response.Clear

    End sub
    %>





    </body>


    6 ноября 2008 г. 5:53
  • Просто хочется собрать всю информацию (вплоть до модели MotherBoard) о "железе" используя именно Visual Basic или C#. Есть ли возможность? Подгрузить dll или api-функцию какую-нибудь?
    14 ноября 2008 г. 6:21
  •  

    А зачем что-то еще что-то подгружать дополнительно? Все классы, что вам необходимы - в т.ч. и по MotherBoard и прочим низкоуровневым вещам уже есть и в COM, CIMOM и .NET моделях!

    C# не изучал - но на VB.NET обратиться к системным классам не сложнее, чем в VBS - к Win32, - на крайний случай, - в .NET-программе просто подключаете ScriptingObject-библиотеку и внедряете обычный VBS-код, считывающий WMI-инфу обо всех компонентах, которые необходимы.

    Если необходимо перечисление WMI-классов, их объектов, свойств, методов и возможностей - рекоммендую воспользоваться WMI scriptomatic`ом - http://www.microsoft.com/technet/scriptcenter/createit.mspx

    14 ноября 2008 г. 7:33