【获取windows7系统驱动程序状态信息】

如何在Windows7系统里面列举所有的驱动,并获得他们的信息呢?

微软的.net framework4.0提供了关于驱动访问的类,

如下图所示,创建一个CLR工程如下,9462618_201007032216051.jpg

插入下列代码,详情键代码注释

view plaincopy to clipboardprint?

#pragma once  

 

 

namespace yincheng {  

 

    using namespace System;  

    using namespace System::ComponentModel;  

    using namespace System::Collections;  

    using namespace System::Windows::Forms;  

    using namespace System::Data;  

    using namespace System::Drawing;  

 

    ///   

    /// Form1 摘要  

    ///  

    /// 警告: 如果更改此类的名称,则需要更改  

    ///          与此类所依赖的所有 .resx 文件关联的托管资源编译器工具的  

    ///          “资源文件名属性。否则,  

    ///          设计器将不能与此窗体的关联  

    ///          本地化资源正确交互。  

    ///   

    public ref class Form1 : public System::Windows::Forms::Form  

    {  

    public:  

        Form1(void)  

        {  

            InitializeComponent();  

            //  

            //TODO: 在此处添加构造函数代码  

            //  

        }  

 

    protected:  

        ///   

        /// 清理所有正在使用的资源。  

        ///   

        ~Form1()  

        {  

            if (components)  

            {  

                delete components;  

            }  

        }  

    private: System::ServiceProcess::ServiceController^  serviceController1;  

    private: System::Windows::Forms::Label^  label1;  

    private: System::Windows::Forms::Button^  button1;  

    private: System::Windows::Forms::ListView^  listView1;  

    private: System::Windows::Forms::ColumnHeader^  columnHeader1;  

    private: System::Windows::Forms::ColumnHeader^  columnHeader2;  

    private: System::Windows::Forms::ColumnHeader^  columnHeader3;  

    protected:   

 

    private:  

        ///   

        /// 必需的设计器变量。  

        ///   

        System::ComponentModel::Container ^components;  

 

#pragma region Windows Form. Designer generated code  

        ///   

        /// 设计器支持所需的方法 - 不要  

        /// 使用代码编辑器修改此方法的内容。  

        ///   

        void InitializeComponent(void)  

        {  

            this->serviceController1 = (gcnew System::ServiceProcess::ServiceController());  

            this->label1 = (gcnew System::Windows::Forms::Label());  

            this->button1 = (gcnew System::Windows::Forms::Button());  

            this->listView1 = (gcnew System::Windows::Forms::ListView());  

            this->columnHeader1 = (gcnew System::Windows::Forms::ColumnHeader());  

            this->columnHeader2 = (gcnew System::Windows::Forms::ColumnHeader());  

            this->columnHeader3 = (gcnew System::Windows::Forms::ColumnHeader());  

            this->SuspendLayout();  

            //   

            // label1  

            //   

            this->label1->AutoSize = true;  

            this->label1->Location = System::Drawing::Point(2, 8);  

            this->label1->Name = L"label1";  

            this->label1->Size = System::Drawing::Size(185, 12);  

            this->label1->TabIndex = 0;   

            this->label1->Text = L"当前系统驱动程序状态信息如下:";  

            //   

            // button1  

            //   

            this->button1->Location = System::Drawing::Point(257, 3);  

            this->button1->Name = L"button1";  

            this->button1->Size = System::Drawing::Size(258, 23);  

            this->button1->TabIndex = 1;  

            this->button1->Text = L"获取当前windows7系统驱动程序状态信息";  

            this->button1->UseVisualStyleBackColor = true;  

            this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click);  

            //   

            // listView1  

            //   

            this->listView1->Anchor = static_cast<:windows::forms::anchorstyles>((((System::Windows::Forms::AnchorStyles::Top | System::Windows::Forms::AnchorStyles::Bottom)   

                | System::Windows::Forms::AnchorStyles::Left)   

                | System::Windows::Forms::AnchorStyles::Right));  

            this->listView1->Columns->AddRange(gcnew cli::array< System::Windows::Forms::ColumnHeader^  >(3) {this->columnHeader1, this->columnHeader2,   

                this->columnHeader3});  

            this->listView1->FullRowSelect = true;  

            this->listView1->GridLines = true;  

            this->listView1->Location = System::Drawing::Point(4, 28);  

            this->listView1->Name = L"listView1";  

            this->listView1->Size = System::Drawing::Size(730, 309);  

            this->listView1->TabIndex = 2;  

            this->listView1->UseCompatibleStateImageBehavior. = false;  

            this->listView1->View = System::Windows::Forms::View::Details;  

            //   

            // columnHeader1  

            //   

            this->columnHeader1->Text = L"驱动程序名称";  

            this->columnHeader1->Width = 214;  

            //   

            // columnHeader2  

            //   

            this->columnHeader2->Text = L"驱动程序显示说明";  

            this->columnHeader2->Width = 282;  

            //   

            // columnHeader3  

            //   

            this->columnHeader3->Text = L"         驱动程序状态";  

            this->columnHeader3->Width = 280;  

            //   

            // Form1  

            //   

            this->AutoScaleDimensions = System::Drawing::SizeF(6, 12);  

            this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;  

            this->ClientSize = System::Drawing::Size(738, 340);  

            this->Controls->Add(this->listView1);  

            this->Controls->Add(this->button1);  

            this->Controls->Add(this->label1);  

            this->Name = L"Form1";  

            this->StartPosition = System::Windows::Forms::FormStartPosition::CenterScreen;  

            this->Text = L"演示获取windows7系统驱动程序状态信息-CSDN著名技术专家尹成的杰作";  

            this->Load += gcnew System::EventHandler(this, &Form1::Form1_Load);  

            this->ResumeLayout(false);  

            this->PerformLayout();  

 

        }  

#pragma endregion  

//获取当前系统驱动程序状态信息  

private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {  

   array<:serviceprocess::servicecontroller>^   MyServices;  

   int i;  

   array^  MyItems=gcnew array(3);  

   System::ServiceProcess::ServiceController^ MyService;  

   this->listView1->Items->Clear();  

   MyServices=this->serviceController1->GetDevices();  

   for(i=0;iLength;i++)  

   {  

     MyItems[0]=MyServices[i]->ServiceName;   

     MyItems[1]=MyServices[i]->DisplayName;  

     switch(MyServices[i]->Status)  

     {  

      case  System::ServiceProcess::ServiceControllerStatus::ContinuePending:  

           MyItems[2]="服务即将继续";  

           break;  

      case System::ServiceProcess::ServiceControllerStatus::Paused:  

           MyItems[2]="服务已暂停";  

           break;  

      case System::ServiceProcess::ServiceControllerStatus::PausePending:   

           MyItems[2]="服务即将暂停";  

           break;  

      case System::ServiceProcess::ServiceControllerStatus::Running:  

           MyItems[2]="服务正在运行";  

           break;  

      case System::ServiceProcess::ServiceControllerStatus::StartPending:  

           MyItems[2]="服务正在启动";  

           break;  

      case System::ServiceProcess::ServiceControllerStatus::Stopped:  

           MyItems[2]="服务未运行";  

           break;  

      case System::ServiceProcess::ServiceControllerStatus::StopPending:  

           MyItems[2]="服务正在停止";  

           break;  

     }  

     this->listView1->Items->Add(gcnew ListViewItem(MyItems));  

   }  

}  

private: System::Void Form1_Load(System::Object^  sender, System::EventArgs^  e) {  

         }  

};  

#pragma once

 

 

namespace yincheng {

 

      using namespace System;

      using namespace System::ComponentModel;

      using namespace System::Collections;

      using namespace System::Windows::Forms;

      using namespace System::Data;

      using namespace System::Drawing;

 

      ///

      /// Form1 摘要

      ///

      /// 警告: 如果更改此类的名称,则需要更改

      ///          与此类所依赖的所有 .resx 文件关联的托管资源编译器工具的

      ///          “资源文件名属性。否则,

      ///          设计器将不能与此窗体的关联

      ///          本地化资源正确交互。

      ///

      public ref class Form1 : public System::Windows::Forms::Form

      {

      public:

           Form1(void)

           {

                 InitializeComponent();

                 //

                 //TODO: 在此处添加构造函数代码

                 //

           }

 

      protected:

           ///

           /// 清理所有正在使用的资源。

           ///

           ~Form1()

           {

                 if (components)

                 {

                      delete components;

                 }

           }

      private: System::ServiceProcess::ServiceController^  serviceController1;

      private: System::Windows::Forms::Label^  label1;

      private: System::Windows::Forms::Button^  button1;

      private: System::Windows::Forms::ListView^  listView1;

      private: System::Windows::Forms::ColumnHeader^  columnHeader1;

      private: System::Windows::Forms::ColumnHeader^  columnHeader2;

      private: System::Windows::Forms::ColumnHeader^  columnHeader3;

      protected:

 

      private:

           ///

           /// 必需的设计器变量。

           ///

           System::ComponentModel::Container ^components;

 

#pragma region Windows Form. Designer generated code

           ///

           /// 设计器支持所需的方法 - 不要

           /// 使用代码编辑器修改此方法的内容。

           ///

           void InitializeComponent(void)

           {

                 this->serviceController1 = (gcnew System::ServiceProcess::ServiceController());

                 this->label1 = (gcnew System::Windows::Forms::Label());

                 this->button1 = (gcnew System::Windows::Forms::Button());

                 this->listView1 = (gcnew System::Windows::Forms::ListView());

                 this->columnHeader1 = (gcnew System::Windows::Forms::ColumnHeader());

                 this->columnHeader2 = (gcnew System::Windows::Forms::ColumnHeader());

                 this->columnHeader3 = (gcnew System::Windows::Forms::ColumnHeader());

                 this->SuspendLayout();

                 //

                 // label1

                 //

                 this->label1->AutoSize = true;

                 this->label1->Location = System::Drawing::Point(2, 8);

                 this->label1->Name = L"label1";

                 this->label1->Size = System::Drawing::Size(185, 12);

                 this->label1->TabIndex = 0;

                 this->label1->Text = L"当前系统驱动程序状态信息如下:";

                 //

                 // button1

                 //

                 this->button1->Location = System::Drawing::Point(257, 3);

                 this->button1->Name = L"button1";

                 this->button1->Size = System::Drawing::Size(258, 23);

                 this->button1->TabIndex = 1;

                 this->button1->Text = L"获取当前windows7系统驱动程序状态信息";

                 this->button1->UseVisualStyleBackColor = true;

                 this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click);

                 //

                 // listView1

                 //

                 this->listView1->Anchor = static_cast<:windows::forms::anchorstyles>((((System::Windows::Forms::AnchorStyles::Top | System::Windows::Forms::AnchorStyles::Bottom)

                      | System::Windows::Forms::AnchorStyles::Left)

                      | System::Windows::Forms::AnchorStyles::Right));

                 this->listView1->Columns->AddRange(gcnew cli::array< System::Windows::Forms::ColumnHeader^  >(3) {this->columnHeader1, this->columnHeader2,

                      this->columnHeader3});

                 this->listView1->FullRowSelect = true;

                 this->listView1->GridLines = true;

                 this->listView1->Location = System::Drawing::Point(4, 28);

                 this->listView1->Name = L"listView1";

                 this->listView1->Size = System::Drawing::Size(730, 309);

                 this->listView1->TabIndex = 2;

                 this->listView1->UseCompatibleStateImageBehavior. = false;

                 this->listView1->View = System::Windows::Forms::View::Details;

                 //

                 // columnHeader1

                 //

                 this->columnHeader1->Text = L"驱动程序名称";

                 this->columnHeader1->Width = 214;

                 //

                 // columnHeader2

                 //

                 this->columnHeader2->Text = L"驱动程序显示说明";

                 this->columnHeader2->Width = 282;

                 //

                 // columnHeader3

                 //

                 this->columnHeader3->Text = L"         驱动程序状态";

                 this->columnHeader3->Width = 280;

                 //

                 // Form1

                 //

                 this->AutoScaleDimensions = System::Drawing::SizeF(6, 12);

                 this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;

                 this->ClientSize = System::Drawing::Size(738, 340);

                 this->Controls->Add(this->listView1);

                 this->Controls->Add(this->button1);

                 this->Controls->Add(this->label1);

                 this->Name = L"Form1";

                 this->StartPosition = System::Windows::Forms::FormStartPosition::CenterScreen;

                 this->Text = L"演示获取windows7系统驱动程序状态信息-CSDN著名技术专家尹成的杰作";

                 this->Load += gcnew System::EventHandler(this, &Form1::Form1_Load);

                 this->ResumeLayout(false);

                 this->PerformLayout();

 

           }

#pragma endregion

//获取当前系统驱动程序状态信息

private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {

   array<:serviceprocess::servicecontroller>^   MyServices;

   int i;

   array^  MyItems=gcnew array(3);

   System::ServiceProcess::ServiceController^ MyService;

   this->listView1->Items->Clear();

   MyServices=this->serviceController1->GetDevices();

   for(i=0;iLength;i++)

   {

     MyItems[0]=MyServices[i]->ServiceName;

     MyItems[1]=MyServices[i]->DisplayName;

     switch(MyServices[i]->Status)

       {

        case  System::ServiceProcess::ServiceControllerStatus::ContinuePending:

           MyItems[2]="服务即将继续";

              break;

        case System::ServiceProcess::ServiceControllerStatus::Paused:

           MyItems[2]="服务已暂停";

              break;

        case System::ServiceProcess::ServiceControllerStatus::PausePending:

           MyItems[2]="服务即将暂停";

              break;

        case System::ServiceProcess::ServiceControllerStatus::Running:

           MyItems[2]="服务正在运行";

              break;

        case System::ServiceProcess::ServiceControllerStatus::StartPending:

           MyItems[2]="服务正在启动";

              break;

        case System::ServiceProcess::ServiceControllerStatus::Stopped:

           MyItems[2]="服务未运行";

              break;

        case System::ServiceProcess::ServiceControllerStatus::StopPending:

           MyItems[2]="服务正在停止";

              break;

       }

       this->listView1->Items->Add(gcnew ListViewItem(MyItems));

   }

}

private: System::Void Form1_Load(System::Object^  sender, System::EventArgs^  e) {

            }

};

}

 

 

 

然后运行之9462618_201007032216052.jpg

查看效果9462618_201007032216053.jpg9462618_201007032216054.jpg

 

fj.png21.JPG

fj.png22.JPG

fj.png23.JPG

fj.png24.JPG

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9462618/viewspace-667114/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/9462618/viewspace-667114/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值