找回密码
 加入
搜索
查看: 5920|回复: 15

调用API查询设备信息!

  [复制链接]
发表于 2010-1-8 09:43:47 | 显示全部楼层 |阅读模式
哪位朋友能帮我用AU3写个脚本,能实现调用API查询CPU、内存、硬盘、光驱、显卡、IP、MAC。查询结果能自动保存为txt文本,谢谢了·因本人刚入门AU3不知道怎么用AU3调用API,还请大家帮忙!!!
 楼主| 发表于 2010-1-8 09:47:44 | 显示全部楼层
自己先顶一下!希望各位高人能出手帮忙...谢谢了!
 楼主| 发表于 2010-1-8 11:27:55 | 显示全部楼层
论坛就没有高人吗?帮我解决一下呀@谢了....
发表于 2010-1-8 13:32:03 | 显示全部楼层
自己多找找,源码区里有
发表于 2010-1-8 13:54:57 | 显示全部楼层
本帖最后由 sanmoking 于 2010-1-8 13:56 编辑

$wbemFlagReturnImmediately = 0x10
$wbemFlagForwardOnly = 0x20
$colItems = ""
$strComputer = "localhost"

$Output = ""
$objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
$colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_ComputerSystem", "WQL", _
                $wbemFlagReturnImmediately + $wbemFlagForwardOnly)
        For $objItem In $colItems
                $Output = $Output & "计算机名: " & $objItem.Caption & @CRLF
                $Output = $Output & "计算机名(获取方式2): " & $objItem.Name & @CRLF
                $Output = $Output & "计算机名(获取方式3): " & @ComputerName & @CRLF
                $Output = $Output & "工作组: " & $objItem.Domain & @CRLF        
                $Output = $Output & "当前用户: " & $objItem.UserName & @CRLF        
                $Output = $Output & "当前用户(获取方式2): " & @UserName & @CRLF                        
                $Output = $Output & "注册用户: " & $objItem.PrimaryOwnerName & @CRLF               
                $Output = $Output & "系统: " & $objItem.SystemType & @CRLF
                $Output = $Output & "系统: " & @OSType & @CRLF
                $Output = $Output & "系统: " & @OSVersion & @CRLF
                $Output = $Output & "启动: " & $objItem.SystemStartupOptions(0) & @CRLF
                $Output = $Output & "cpu制造商: " & $objItem.Manufacturer & @CRLF
                $Output = $Output & "cpuArch: " & @CPUArch & @CRLF               
                $Output = $Output & "内存容量: " & $objItem.TotalPhysicalMemory & @CRLF
                If @IPAddress1 <> "0.0.0.0" Then $Output = $Output & "ip1: " & @IPAddress1 & @CRLF
                If @IPAddress2 <> "0.0.0.0" Then $Output = $Output & "ip2: " & @IPAddress2 & @CRLF
                If @IPAddress3 <> "0.0.0.0" Then $Output = $Output & "ip3: " & @IPAddress3 & @CRLF
                If @IPAddress4 <> "0.0.0.0" Then $Output = $Output & "ip4: " & @IPAddress4 & @CRLF        
        Next
MsgBox(1, "WMI 输出", $Output)


如果有au3自带的宏变量可以获得的,就直接用宏好了,au3自己没有的,再去用wmi来获取,大概就是像上面那样子的,具体到你想要获得哪个信息,百度一下就知道在哪里了。
提问问题不能像楼主这样的,你这样问干脆直接说让人给你写一个程序好了。
具体问题具体分析,问题要具体到一个焦点上,比如你要获取MAC值、硬盘序列号……这样子才会有人解答的。
另外如果论坛有答案的你再问,斑竹只会删帖扣分,不会有人回答的。

评分

参与人数 1金钱 +15 收起 理由
afan + 15

查看全部评分

发表于 2010-1-8 14:00:43 | 显示全部楼层
如果楼主要学习api的相关知识,这里有个帖子,我自己也是个菜鸟,不懂api,所以帮不上楼主的忙了。
 楼主| 发表于 2010-1-9 08:14:11 | 显示全部楼层
楼上的兄弟,谢谢了!我是新手.以后还要多多向你们学习..
发表于 2010-1-9 11:31:15 | 显示全部楼层
论坛搜索WMI 现成的例子不少
发表于 2010-1-9 14:08:02 | 显示全部楼层
呵呵,老问题啦
发表于 2010-1-10 00:15:23 | 显示全部楼层
#include <GUIConstants.au3>
#NoTrayIcon


$g_szVersion = "info"
If WinExists($g_szVersion) Then Exit
AutoItWinSetTitle($g_szVersion)

Opt('GUICloseOnESC', 0)


GUICreate ("硬件信息查看器",500,350)


GUICtrlCreateLabel("B I O S:",10,30,60,30)
GUICtrlSetColor(-1,0x0000ff)
$bios=GUICtrlCreateInput("",80,20,250,25)

GUICtrlCreateLabel("主 板:",10,70,60,30)
GUICtrlSetColor(-1,0x0000ff)
$board=GUICtrlCreateInput("",80,60,250,25)

GUICtrlCreateLabel("C P U:",10,110,60,30)
GUICtrlSetColor(-1,0x0000ff)
$cpu=GUICtrlCreateInput("",80,100,250,25)

GUICtrlCreateLabel("显 卡:",10,150,60,30)
GUICtrlSetColor(-1,0x0000ff)
$display=GUICtrlCreateInput("",80,140,250,25)

GUICtrlCreateLabel("声 卡:",10,190,60,30)
GUICtrlSetColor(-1,0x0000ff)
$sound=GUICtrlCreateInput("",80,180,250,25)

GUICtrlCreateLabel("网 卡:",10,230,60,30)
GUICtrlSetColor(-1,0x0000ff)
$network=GUICtrlCreateInput("",80,220,250,25)

GUICtrlCreateLabel("内 存:",10,270,60,30)
GUICtrlSetColor(-1,0x0000ff)
$mem=GUICtrlCreateInput("",80,260,250,25)

GUICtrlCreateLabel("操作系统:",10,310,60,30)
GUICtrlSetColor(-1,0x0000ff)
$os=GUICtrlCreateInput("",80,300,250,25)

GUISetState( )
info()

While 1
$msg = GUIGetMsg()

Select

case $msg = $GUI_EVENT_CLOSE
ExitLoop 
EndSelect
Wend


Func info()

$objWMIService = objget("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
$colBios = $objWMIService.ExecQuery("Select * from Win32_BIOS")
$colBoard = $objWMIService.ExecQuery("SELECT * FROM Win32_BaseBoard")
$colSettings = $objWMIService.ExecQuery("Select * from Win32_OperatingSystem")
$colMemory = $objWMIService.ExecQuery("Select * from Win32_ComputerSystem")
$colCPU = $objWMIService.ExecQuery("Select * from CIM_Processor")
$colVideoinfo = $objWMIService.ExecQuery("Select * from Win32_VideoController")
$colSound = $objWMIService.ExecQuery("Select * from Win32_SoundDevice")
$colMouse = $objWMIService.ExecQuery("Select * from Win32_PointingDevice")
$colMonitor = $objWMIService.ExecQuery("Select * from Win32_DesktopMonitor")
$colNIC = $objWMIservice.ExecQuery("Select * from Win32_NetworkAdapter WHERE Netconnectionstatus = 2")


For $object in $colBios
GUICtrlSetData($bios,StringMid($object.Caption,1))
Next

For $object in $colBoard
GUICtrlSetData($board,$object.Product)

Next


For $object in $colCPU
GUICtrlSetData($cpu, StringStripWS($object.Name,1))
Next

For $object in $colVideoinfo
GUICtrlSetData($display, StringStripWS($object.Description ,1))

Next

For $object in $colSound
GUICtrlSetData($sound, StringStripWS($object.Description ,1))
Next

For $object in $colNIC
GUICtrlSetData($network, StringStripWS($object.name ,1))

Next


For $objOperatingSystem in $colSettings

GUICtrlSetData($os,$objOperatingSystem.Caption & " Build " & $objOperatingSystem.BuildNumber & " Sp " & $objOperatingSystem.ServicePackMajorVersion & "." & $objOperatingSystem.ServicePackMinorVersion )

Next
for $object in $colMemory
GUICtrlSetData($mem,String(Int(Number($object.TotalPhysicalMemory) / (1024 * 1024))) & " Mb")
Next

EndFunc
看看这个吧!如果合适的话至于保存到TXT这个你就自己写了!
 楼主| 发表于 2010-1-17 14:10:52 | 显示全部楼层
谢谢楼上的兄弟。。。
发表于 2010-1-24 13:56:03 | 显示全部楼层
本帖最后由 netegg 于 2010-1-24 13:57 编辑

楼主,你要的这些信息不是单独一个api函数里的东西,要调用不少
不过你可以参考下http://www.autoitx.com/forum.php ... &extra=page%3D1
发表于 2010-1-25 02:51:52 | 显示全部楼层
$colBios = $objWMIService.ExecQuery("Select * from Win32_BIOS")

$colBoard = $objWMIService.ExecQuery("SELECT * FROM Win32_BaseBoard")

GUICtrlSetData($board,$object.Product)

GUICtrlSetData($bios,StringMid($object.Caption,1))

For $object in $colSound

GUICtrlSetData($sound, StringStripWS($object.Description ,1))

Next

For $object in $colNIC

GUICtrlSetData($network, StringStripWS($object.name ,1))

這些該從何學習
发表于 2010-1-26 18:44:31 | 显示全部楼层
回复 13# ankeyliu

wmi
发表于 2010-1-30 00:01:34 | 显示全部楼层
回复 1# yangkaicheng

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-29 17:25 , Processed in 0.133561 second(s), 28 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表