VB.NET中得到计算机硬件信息

本文汇集了在.NET中得到计算机硬件信息的一些功能。

得到显示器分辨率
Dim X As Short = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width
Dim Y As Short = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height
MsgBox("您的显示器分辨率是:" & X & " X " & Y)

得到特殊文件夹的路径
'"Desktop"桌面文件夹路径
MsgBox(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory))
'"Favorites"收藏夹路径
MsgBox(Environment.GetFolderPath(Environment.SpecialFolder.Favorites))
'"Application Data"路径
MsgBox(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData))

'通用写法
'Dim SPEC As String = Environment.GetFolderPath(Environment.SpecialFolder.XXXXXXX)
'XXXXXXX是特殊文件夹的名字

得到操作系统版本信息
MsgBox(Environment.OSVersion.ToString)

得到当前登录的用户名
MsgBox(Environment.UserName)

得到当前应用程序的路径
MsgBox(Environment.CurrentDirectory)

打开和关闭CD-ROM
'先新建模块
Module mciAPIModule
Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" _
(ByVal lpstrCommand As String, ByVal lpstrReturnString As String, _
ByVal uReturnLength As Integer, ByVal hwndCallback As Integer) As Integer
End Module

'打开CD-ROM
Dim lRet As Long
lRet = mciSendString("set cdAudio door open", 0&, 0, 0)

'关闭CD-ROM
Dim lRet As Long
lRet = mciSendString("set cdAudio door Closed", 0&, 0, 0)
'更多请参见
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/mmcmdstr_8eyc.asp

得到计算机IP和计算机全名
Dim MYIP As System.Net.IPHostEntry = System.Net.Dns.GetHostByName(System.Net.Dns.GetHostName)
MsgBox("您的IP地址:" & (MYIP.AddressList.GetValue(0).ToString))
MsgBox("您的计算机全名:" & (MYIP.HostName.ToString))

使用win32_operatingSystem (wmi Class)得到计算机信息
'添加ListBox在Form1_Load事件里,并引用system.Managment
Dim opSearch As New ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem")
Dim opInfo As ManagementObject
For Each opInfo In opSearch.Get()
ListBox1.Items.Add("Name: " & opInfo("name").ToString())
ListBox1.Items.Add("Version: " & opInfo("version").ToString())
ListBox1.Items.Add("Manufacturer: " & opInfo("manufacturer").ToString())
ListBox1.Items.Add("Computer name: " & opInfo("csname").ToString())
ListBox1.Items.Add("Windows Directory: " & opInfo("windowsdirectory").ToString())
Next

列出计算机安装的全部字体,并添加到ListBox
'新建Form并添加ListBox和Button
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim fntCollection As InstalledFontCollection = New InstalledFontCollection()
Dim fntFamily() As FontFamily
fntFamily = fntCollection.Families
ListBox1.Items.Clear()
Dim i As Integer = 0
For i = 0 To fntFamily.Length - 1
ListBox1.Items.Add(fntFamily(i).Name)
Next
End Sub

使用Win32_Processor列出处理器的信息
Imports System.Management
Public Class Form1
Inherits System.Windows.Forms.Form

#Region " Windows 窗体设计器生成的代码 "

Public Sub New()
MyBase.New()

'该调用是 Windows 窗体设计器所必需的。
InitializeComponent()

'在 InitializeComponent() 调用之后添加任何初始化

End Sub

'窗体重写 dispose 以清理组件列表。
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub

'Windows 窗体设计器所必需的
Private components As System.ComponentModel.IContainer

'注意: 以下过程是 Windows 窗体设计器所必需的
'可以使用 Windows 窗体设计器修改此过程。
'不要使用代码编辑器修改它。
Friend WithEvents ListBox1 As System.Windows.Forms.ListBox
Friend WithEvents Button1 As System.Windows.Forms.Button
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
Me.ListBox1 = New System.Windows.Forms.ListBox
Me.Button1 = New System.Windows.Forms.Button
Me.SuspendLayout()
'
'ListBox1
'
Me.ListBox1.Location = New System.Drawing.Point(8, 8)
Me.ListBox1.Name = "ListBox1"
Me.ListBox1.Size = New System.Drawing.Size(280, 186)
Me.ListBox1.TabIndex = 0
'
'Button1
'
Me.Button1.Location = New System.Drawing.Point(56, 208)
Me.Button1.Name = "Button1"
Me.Button1.Size = New System.Drawing.Size(168, 32)
Me.Button1.TabIndex = 1
Me.Button1.Text = "装载计算机处理器信息"
'
'Form1
'
Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
Me.ClientSize = New System.Drawing.Size(296, 254)
Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.Button1, Me.ListBox1})
Me.Text = "计算机处理器信息"
Me.ResumeLayout(False)

End Sub

#End Region

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles Button1.Click

Dim ProcQuery As New SelectQuery("Win32_Processor")
Dim ProcSearch As New ManagementObjectSearcher(ProcQuery)
Dim ProcInfo As ManagementObject

For Each ProcInfo In ProcSearch.Get()
Call processorfamily(ProcInfo("Family").ToString)
ListBox1.Items.Add("Description: " & ProcInfo("Description").ToString())
ListBox1.Items.Add("caption: " & ProcInfo("caption").ToString())
ListBox1.Items.Add("Architecture: " & ProcInfo("Architecture").ToString())
Call processortype(ProcInfo("ProcessorType").ToString())
Call CpuStat(ProcInfo("CpuStatus").ToString)
ListBox1.Items.Add("MaxClockSpeed: " & ProcInfo("MaxClockSpeed").ToString() & "MHZ")
ListBox1.Items.Add("L2CacheSpeed: " & ProcInfo("L2CacheSpeed").ToString() & "MHZ")
ListBox1.Items.Add("ExtClock: " & ProcInfo("L2CacheSpeed").ToString() & "MHZ")
ListBox1.Items.Add("ProcessorId: " & ProcInfo("ProcessorId").ToString())
ListBox1.Items.Add("AddressWidth: " & ProcInfo("AddressWidth").ToString() & "Bits")
ListBox1.Items.Add("DataWidth: " & ProcInfo("DataWidth").ToString() & "Bits")
ListBox1.Items.Add("Version: " & ProcInfo("Version").ToString())
ListBox1.Items.Add("ExtClock: " & ProcInfo("ExtClock").ToString() & "MHZ")
Next
End Sub
Function processorfamily(ByVal procssfam)
Dim processtype
Select Case procssfam
Case 1
processtype = "Other"
Case 2
processtype = "Unknown "
Case 3
processtype = "8086 "
Case 4
processtype = "80286 "
Case 5
processtype = "80386 "
Case 6
processtype = "80486 "
Case 7
processtype = "8087 "
Case 8
processtype = "80287 "
Case 9
processtype = "80387 "
Case 10
processtype = "80487 "
Case 11
processtype = "Pentium brand "
Case 12
processtype = "Pentium Pro "
Case 13
processtype = "Pentium II "
Case 14
processtype = "Pentium processor with MMX technology "
Case 15
processtype = "Celeron "
Case 16
processtype = "Pentium II Xeon "
Case 17
processtype = "Pentium III "
Case 18
processtype = "M1 Family "
Case 19
processtype = "M2 Family "
Case 24
processtype = "K5 Family "
Case 25
processtype = "K6 Family "
Case 26
processtype = "K6-2 "
Case 27
processtype = "K6-3 "
Case 28
processtype = "AMD Athlon Processor Family "
Case 29
processtype = "AMD Duron Processor "
Case 30
processtype = "AMD2900 Family "
Case 31
processtype = "K6-2+ "
Case 32
processtype = "Power PC Family "
Case 33
processtype = "Power PC 601 "
Case 34
processtype = "Power PC 603 "
Case 35
processtype = "Power PC 603+ "
Case 36
processtype = "Power PC 604 "
Case 37
processtype = "Power PC 620 "
Case 38
processtype = "Power PC X704 "
Case 39
processtype = "Power PC 750 "
Case 48
processtype = "Alpha Family "
Case 49
processtype = "Alpha 21064 "
Case 50
processtype = "Alpha 21066 "
Case 51
processtype = "Alpha 21164 "
Case 52
processtype = "Alpha 21164PC "
Case 53
processtype = "Alpha 21164a "
Case 54
processtype = "Alpha 21264 "
Case 55
processtype = "Alpha 21364 "
Case 64
processtype = "MIPS Family "
Case 65
processtype = "MIPS R4000 "
Case 66
processtype = "MIPS R4200 "
Case 67
processtype = "MIPS R4400 "
Case 68
processtype = "MIPS R4600 "
Case 69
processtype = "MIPS R10000 "
Case 80
processtype = "SPARC Family "
Case 81
processtype = "SuperSPARC "
Case 82
processtype = "microSPARC II "
Case 83
processtype = "microSPARC IIep "
Case 84
processtype = "UltraSPARC "
Case 85
processtype = "UltraSPARC II "
Case 86
processtype = "UltraSPARC IIi "
Case 87
processtype = "UltraSPARC III "
Case 88
processtype = "UltraSPARC IIIi "
Case 96
processtype = "68040 "
Case 97
processtype = "68xxx Family "
Case 98
processtype = "68000 "
Case 99
processtype = "68010 "
Case 100
processtype = "68020 "
Case 101
processtype = "68030 "
Case 112
processtype = "Hobbit Family "
Case 120
processtype = "Crusoe TM5000 Family "
Case 121
processtype = "Crusoe TM3000 Family "
Case 128
processtype = "Weitek "
Case 130
processtype = "Itanium Processor "
Case 144
processtype = "PA-RISC Family "
Case 145
processtype = "PA-RISC 8500 "
Case 146
processtype = "PA-RISC 8000 "
Case 147
processtype = "PA-RISC 7300LC "
Case 148
processtype = "PA-RISC 7200 "
Case 149
processtype = "PA-RISC 7100LC "
Case 150
processtype = "PA-RISC 7100 "
Case 160
processtype = "V30 Family "
Case 176
processtype = "Pentium III Xeon "
Case 177
processtype = "Pentium III Processor with Intel SpeedStep Technology "
Case 178
processtype = "Pentium 4 "
Case 179
processtype = "Intel Xeon "
Case 180
processtype = "AS400 Family "
Case 181
processtype = "Intel Xeon processor MP "
Case 182
processtype = "AMD AthlonXP Family "
Case 183
processtype = "AMD AthlonMP Family "
Case 184
processtype = "Intel Itanium 2 "
Case 185
processtype = "AMD Opteron Family "
Case 190
processtype = "K7 "
Case 200
processtype = "IBM390 Family "
Case 201
processtype = "G4 "
Case 202
processtype = "G5 "
Case 250
processtype = "i860 "
Case 251
processtype = "i960 "
Case 260
processtype = "SH-3 "
Case 261
processtype = "SH-4 "
Case 280
processtype = "ARM "
Case 281
processtype = "StrongARM "
Case 300
processtype = "6x86 "
Case 301
processtype = "MediaGX "
Case 302
processtype = "MII "
Case 320
processtype = "WinChip "
Case 350
processtype = "DSP "
Case 500
processtype = "Video Processor "
End Select
ListBox1.Items.Add("Family: " & processtype)

End Function
Function CpuStat(ByVal CpuStNUM)
Dim stat
Select Case CpuStNUM
Case 0
stat = "Unknown "
Case 1
stat = "CPU Enabled "
Case 2
stat = "CPU Disabled by User via BIOS Setup "
Case 3
stat = "CPU Disabled By BIOS (POST Error) "
Case 4
stat = "CPU is Idle "
Case 5
stat = "Reserved "
Case 6
stat = "Reserved "
Case 7
stat = "Other "
End Select
ListBox1.Items.Add("CpuStatus: " & stat)
End Function
Function processortype(ByVal proctypenum)
Dim proctype
Select Case proctypenum
Case 1
proctype = "Other "
Case 2
proctype = "Unknown "
Case 3
proctype = "Central Processor "
Case 4
proctype = "Math Processor "
Case 5
proctype = "DSP Processor "
Case 6
proctype = "Video Processor "
End Select
ListBox1.Items.Add("Processor Type: " & proctype)

End Function
End Class

得到CD-ROM信息
Imports System.Management
Public Class Form1
Inherits System.Windows.Forms.Form

#Region " Windows 窗体设计器生成的代码 "

Public Sub New()
MyBase.New()

'该调用是 Windows 窗体设计器所必需的。
InitializeComponent()

'在 InitializeComponent() 调用之后添加任何初始化

End Sub

'窗体重写 dispose 以清理组件列表。
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub

'Windows 窗体设计器所必需的
'注意: 以下过程是 Windows 窗体设计器所必需的
'可以使用 Windows 窗体设计器修改此过程。
'不要使用代码编辑器修改它。
Private components As System.ComponentModel.IContainer
Friend WithEvents ListBox1 As System.Windows.Forms.ListBox
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
Me.ListBox1 = New System.Windows.Forms.ListBox
Me.SuspendLayout()
'
'ListBox1
'
Me.ListBox1.Location = New System.Drawing.Point(24, 16)
Me.ListBox1.Name = "ListBox1"
Me.ListBox1.Size = New System.Drawing.Size(416, 173)
Me.ListBox1.TabIndex = 0
'
'Form1
'
Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
Me.ClientSize = New System.Drawing.Size(456, 206)
Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.ListBox1})
Me.Name = "Form1"
Me.Text = "Form1"
Me.ResumeLayout(False)

End Sub

#End Region

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles MyBase.Load
On Error Resume Next
Dim SoundDeviceQuery As New SelectQuery("Win32_CDROMDrive")
Dim SoundDeviceSearch As New ManagementObjectSearcher(SoundDeviceQuery)
Dim SoundDeviceInfo As ManagementObject
For Each SoundDeviceInfo In SoundDeviceSearch.Get()
Dim SizeInMBs As Long = (Val(SoundDeviceInfo("Size").ToString()))
SizeInMBs = Int((SizeInMBs / (1024 * 1024)))
ListBox1.Items.Add("CD-Rom Description: " & SoundDeviceInfo("caption").ToString())
ListBox1.Items.Add("CD-Rom Manufacturer: " & SoundDeviceInfo("Manufacturer").ToString())
ListBox1.Items.Add("CD-Rom Drive: " & SoundDeviceInfo("drive").ToString())
ListBox1.Items.Add("CD-Rom Media Loaded: " & SoundDeviceInfo("MediaLoaded").ToString())
ListBox1.Items.Add("CD-Rom Media Type: " & SoundDeviceInfo("MediaType").ToString())
ListBox1.Items.Add("CD-Rom Volume Name: " & SoundDeviceInfo("VolumeName").ToString())
ListBox1.Items.Add("CD-Rom Size: " & SizeInMBs & " MBytes")
ListBox1.Items.Add("CD-Rom Status: " & SoundDeviceInfo("Status").ToString())
ListBox1.Items.Add("CD-Rom MaxMediaSize: " & SoundDeviceInfo("MaxMediaSize").ToString())
ListBox1.Items.Add("CD-Rom Id: " & SoundDeviceInfo("Id").ToString())
ListBox1.Items.Add("CD-Rom TransferRate: "+Int(SoundDeviceInfo("TransferRate").ToString())+" KBs/秒")
Next
End Sub
End Class

得到硬盘信息
Imports System.Management
Public Class Form1
Inherits System.Windows.Forms.Form

#Region " Windows Form Designer generated code "

Public Sub New()
MyBase.New()
InitializeComponent()
End Sub

Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub
Private components As System.ComponentModel.IContainer
Friend WithEvents ListBox1 As System.Windows.Forms.ListBox
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
Me.ListBox1 = New System.Windows.Forms.ListBox
Me.SuspendLayout()
'
'ListBox1
'
Me.ListBox1.Location = New System.Drawing.Point(8, 8)
Me.ListBox1.Name = "ListBox1"
Me.ListBox1.Size = New System.Drawing.Size(272, 212)
Me.ListBox1.TabIndex = 0
'
'Form1
'
Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
Me.ClientSize = New System.Drawing.Size(292, 238)
Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.ListBox1})
Me.Name = "Form1"
Me.Text = "Form1"
Me.ResumeLayout(False)

End Sub

#End Region

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

On Error Resume Next
Dim HDDDeviceQuery As New SelectQuery("Win32_DiskDrive")
Dim HDDDeviceSearch As New ManagementObjectSearcher(HDDDeviceQuery)
Dim HDDDeviceInfo As ManagementObject
For Each HDDDeviceInfo In HDDDeviceSearch.Get()
ListBox1.Items.Add("HDD Description: " & HDDDeviceInfo("caption").ToString())
ListBox1.Items.Add("HDD BytesPerSector: " & HDDDeviceInfo("BytesPerSector").ToString())
ListBox1.Items.Add("HDD CompressionMethod: " & HDDDeviceInfo("CompressionMethod").ToString())
ListBox1.Items.Add("HDD Index: " & HDDDeviceInfo("Index").ToString())
ListBox1.Items.Add("HDD InstallDate: " & HDDDeviceInfo("InstallDate").ToString())
ListBox1.Items.Add("HDD Manufacturer: " & HDDDeviceInfo("Manufacturer").ToString())
ListBox1.Items.Add("HDD Partitions: " & HDDDeviceInfo("Partitions").ToString())
ListBox1.Items.Add("HDD Size: " & Int(Val(HDDDeviceInfo("Size").ToString()) / 2 ^ 30) & " GBytes")
ListBox1.Items.Add("HDD TotalCylinders: " & HDDDeviceInfo("TotalCylinders").ToString())
ListBox1.Items.Add("HDD TotalSectors: " & HDDDeviceInfo("TotalSectors").ToString())
ListBox1.Items.Add("HDD TracksPerCylinder: " & HDDDeviceInfo("TracksPerCylinder").ToString())
ListBox1.Items.Add("HDD TotalHeads: " & HDDDeviceInfo("TotalHeads").ToString())
ListBox1.Items.Add("HDD TotalTracks: " & HDDDeviceInfo("TotalTracks").ToString())
ListBox1.Items.Add("HDD SectorsPerTrack: " & HDDDeviceInfo("SectorsPerTrack").ToString())
ListBox1.Items.Add("HDD SCSILogicalUnit: " & HDDDeviceInfo("SCSILogicalUnit").ToString())
Next
End Sub
End Class

得到声卡信息
Imports System.Management
Public Class Form1
Inherits System.Windows.Forms.Form

#Region " Windows Form Designer generated code "

Public Sub New()
MyBase.New()
InitializeComponent()
End Sub

Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub
Private components As System.ComponentModel.IContainer
Friend WithEvents ListBox1 As System.Windows.Forms.ListBox
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
Me.ListBox1 = New System.Windows.Forms.ListBox
Me.SuspendLayout()
'
'ListBox1
'
Me.ListBox1.Location = New System.Drawing.Point(8, 8)
Me.ListBox1.Name = "ListBox1"
Me.ListBox1.Size = New System.Drawing.Size(272, 212)
Me.ListBox1.TabIndex = 0
'
'Form1
'
Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
Me.ClientSize = New System.Drawing.Size(292, 238)
Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.ListBox1})
Me.Name = "Form1"
Me.Text = "Form1"
Me.ResumeLayout(False)

End Sub

#End Region

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim SoundDeviceQuery As New SelectQuery("Win32_SoundDevice")
Dim SoundDeviceSearch As New ManagementObjectSearcher(SoundDeviceQuery)
Dim SoundDeviceInfo As ManagementObject
For Each SoundDeviceInfo In SoundDeviceSearch.Get()
ListBox1.Items.Add("Sound Device Description: " & SoundDeviceInfo("Caption").ToString())
ListBox1.Items.Add("Sound Device Status: " & SoundDeviceInfo("status").ToString())
ListBox1.Items.Add("Sound Device Manufacturer: " & SoundDeviceInfo("Manufacturer").ToString())
Next
End Sub

End Class

时间: 2025-01-19 06:33:40

VB.NET中得到计算机硬件信息的相关文章

在.NET中得到计算机硬件信息的一些功能

在.NET中得到计算机硬件信息的一些功能得到显示器分辨率 Dim X As Short = System.Windows.Forms.Screen.PrimaryScreen.Bounds.WidthDim Y As Short = System.Windows.Forms.Screen.PrimaryScreen.Bounds.HeightMsgBox("您的显示器分辨率是:" & X & " X " & Y)得到特殊文件夹的路径 '&qu

怎么才能在VB.NET中向控制台输出命令行,并且将返回的信息在VB中获得啊?

问题描述 具体情况:我要在VB.NET中调用PsTools工具,执行我要执行的控制语句,之后将获得的信息对应的保存到数据库中.各位谁有这方面的经验给江将怎么弄,拜谢了! 解决方案 解决方案二:..如果是自己写整个功能可以写一个控制台应用程序,而如果.....调用其他的CMD程序,则可以用管道.楼主可以自己查一下,实现起来SOEZ解决方案三:这个问题解决了!嗬嗬谢谢楼上了!DimmyProcessAsProcess=NewProcess() DimsAsString myProcess.Start

VB.NET中的多线程开发

多线程 引言 对于使用VB6的开发者而言,要在程序中实现多线程(multi-thread)功能,一般就是使用Win32 API调用.但凡是进行过这种尝试的开发者都会感觉到实现过程非常困难,而且总是会发生些null terminated strings GPF的错误.可是有了VB.NET,一切烦恼都成为过去. 自由线程(free threaded) 在VB6中,我们只能对组件设置多线程模式,这通常就是单元模式的多线程.对于单元线程组件而言,组件中的每个可执行方法都将在一个和组件相联系的线程上运行.

VB.net中HOOK的应用(CNET中文网)

中文 VB.net中HOOK的应用 在vb.net版做版主有一阵子了,一直在思考怎么能更好地帮助大家理解vb.net的新概念与编程方法.小小的回贴很难说清楚很多问题,所以利用一下文档中心这片广阔的天地,进行更深入的探讨.本人水平有限,不免错误与遗漏多多,请朋友们批评指正. 基本的想法是,写一系列的文章,讲解一下vb.net与vb的区别,vb.net中的新概念,vb.net控件的使用,vb.net解决问题的新方法.如果时间允许,我希望自己能快快开展这个工作.更重要的是网友们的支持与鼓励会是我继续的

VB.net中HOOK的应用(一)

本文不是讲解Hook原理的文章,仅是讨论一下在vb.net如何调用Hook功能,以及vb.net中API使用的变化问题. 由于Hook种类较多,本文中以最常用的键盘Hook为例进行分析. 一.先来看一下在vb中是如何实现的.截的是空格键.表现的目标是:一个form,上面有一个textbox,不管焦点是否落在textbox里,按空格键,不会在textbox中输入一个空格,而是变成在textbox中写入一句话:"HOOK成功!" 1.在一个Module中写入下列代码: 调用的API的申明:

我的推荐:在VB.NET中寻找App

摘要 使用过Visual Basic 6的开发人员几乎都使用过App这个对象,它的功能强大人所共知,那么Visual Basic .NET中是否也有类似的对象呢?下面将会进一步说明. -------------------------------------------------------------------------------- 目录 1. App简介 2. 在VB.NET寻找类似功能 3. 简单示例 4. 小结 ----------------------------------

VB.NET中读取INI文件设置信息函数sdGetIniInfo

函数 虽然VB.NET中读取XML配置信息很方便,但有时开发的过程中还是要用到INI文件,在VB.NET中读取INI却不像VB中那么方便了,刚才写了个函数,现贴出来,也许各位能用得上.     '函数名: sdGetIniInfo    '功能:读取INI文件设置信息    '参数说明:iniFile-->INI文件     iniSection--INI文件中设置的部分名称    '作者:SD    '日期:2005-10-11    'Email:ztqas@126.com    '备注:转

把握VB.NET中的流FileStream

stream 当你第一次用VB.NET读写文件的时候,你肯定会发现VB.NET摒弃了传统的文件I/O支持,感觉不习惯.其实,在.NET里面,微软用丰富的"流"对象取代了传统的文件操作,而"流",是一个在Unix里面经常使用的对象. 我们可以把流当作一个通道,程序的的数据可以沿着这个通道"流"到各种数据存储机构(比如:文件,字符串,数组,或者其他形式的流等).为什么我们会摒弃用了那么久的IO操作,而代之为流呢?其中很重要的一个原因就是并不是所有的数

VB.NET下获取硬盘信息的几种方法

硬盘 1.用API函数GetDiskFreeSpaceEx获取磁盘空间     Private Declare Function GetDiskFreeSpaceEx Lib "kernel32" Alias "GetDiskFreeSpaceExA" _        (ByVal lpDirectoryName As String, ByRef lpFreeBytesAvailableToCaller As Long, _        ByRef lpTota