「AutoHotKey」自写自用电脑信息工具,网管利器

软件信息

引言

作为一个单位的网管,很多时候要获取所管理电脑的系统信息、硬件信息等内容,用ahk写了一个小的工具获取这些信息!代码中相关函数已经集成到一个类中,大家可以方便的调用!如果不会使用请留言,河许人手把手教你使用。

寄语

希望本篇技术分享是一个起点,不是一个终点,技术分享不易,希望您多多鼓励,奖赏一个贝怎么样?!

代码分享

;获取电脑的信息,构建了计算机类方便有能力的朋友调用!

;河许人

;2017-12-15


#Persistent

#SingleInstance, force

#NoEnv

#WinActivateForce

SetWorkingDir, %A_ScriptDir%

SetBatchLines, -1


px:=A_ScreenWidth/2-200

py:=A_ScreenHeight/2-145


Gui,2:Default

Gui,2:Color, Black

Gui,2:Color, ControlColor, Black

Gui,2:Font,cYellow,Fixedsys



Gui,2:Add,Text , x220  y10  ,系统名称

Gui,2:Add,Text , x220  y40  ,操作系统版本号

Gui,2:Add,Text , x220  y70  ,操作系统的服务软件包

Gui,2:Add,Text , x220  y100  ,计算机名

Gui,2:Add,Text , x220  y130  ,用户名

Gui,2:Add,Text , x220  y160  ,IP地址

Gui,2:Add,Text , x220  y190  ,物理内存

Gui,2:Add,Text , x220  y220  ,Cpu序列号

Gui,2:Add,Text , x220  y250  ,MAC地址


Gui,2:Add,Edit , x10  y10  w200 h25 vED1 cRed  Readonly Right,

Gui,2:Add,Edit , x10  y40  w200 h25 vED2        Readonly Right,

Gui,2:Add,Edit , x10  y70  w200 h25 vED3        Readonly Right,

Gui,2:Add,Edit , x10  y100 w200 h25 vED4        Readonly Right,

Gui,2:Add,Edit , x10  y130 w200 h25 vED5 cGreen Readonly Right,

Gui,2:Add,Edit , x10  y160 w200 h25 vED6        Readonly Right,

Gui,2:Add,Edit , x10  y190 w200 h25 vED7 cTeal  Readonly Right,

Gui,2:Add,Edit , x10  y220 w200 h25 vED8  Readonly Right,

Gui,2:Add,Edit , x10  y250 w200 h25 vED9  Readonly Right,

Gui,2:show, x%px%  y%py%  w400 h290 ,电脑信息

gosub,a0

return

2Guiclose:

    ExitApp


a0:

    RegRead, ProductName, HKEY_LOCAL_MACHINE, SOFTWARE\Microsoft\Windows NT\CurrentVersion, ProductName

    GMSEx := Computer.GlobalMemoryStatusEx()

    GMSExM01 := Round(GMSEx[2] / 1024**2, 2)

    CpuID:=Computer.GetCpuID()

    MacAddress:=Computer.GetMacAddress()

    if ( OSVersion := Computer.GetOSVersionInfo() )

        GuiControl, 2:, ED1, % productname

    GuiControl, 2:, ED2, % OSVersion.EasyVersion

    GuiControl, 2:, ED3, % OSVersion.ServicePackString

    GuiControl, 2:, ED4, % a_computername

    GuiControl, 2:, ED5, % a_username

    GuiControl, 2:, ED6, % a_ipaddress1

    GuiControl, 2:, ED7, % GMSExM01 MB

    GuiControl, 2:, ED8, % CpuID

    GuiControl, 2:, ED9, % MacAddress


    ;~ CpuID:=Computer.GetCpuID()

    ;~ MacAddress:=Computer.GetMacAddress()

    ;~ StdoutToVar_CreateProcess("notepad") ;没有返回值

    ;~ Version := StdoutToVar_CreateProcess("wmic cpu get Processorid") ;有返回值



return


class Computer

{

    ; ***** FUNCTIONS *****

    ;;1.获取CPU序列号函数

    ;方法一

    ;~ GetCpuID()

    ;~ {

    ;~ objSWbemObject:=ComObjGet("winmgmts:Win32_Processor.DeviceID='cpu0'")

    ;~ 序列号:=objSWbemObject.ProcessorId

    ;~ return,%序列号%

    ;~ }

    ;方法二

    ;~ GetCpuID()

    ;~ {

    ;~ 序列号:=objSWbemObject.ProcessorId

    ;~ 命令:="wmic cpu get Processorid"

    ;~ RunWait, %ComSpec% /c %命令% | clip,,hide

    ;~ if RegExMatch(clipboard, "iO)([\w `t]+)[`r`n `t]+([^`r`n]+)", match)

    ;~ {

    ;~ m_First := match.Value(1)

    ;~ m_Second := match.Value(2)

    ;~ return % m_Second

    ;~ }

    ;~ }

    ;方法三

    GetCpuID()

    {

        Version := computer.StdoutToVar_CreateProcess("wmic cpu get Processorid")

        if RegExMatch(Version, "iO)([\w `t]+)[`r`n `t]+([^`r`n]+)", match)

        {

            m_First := match.Value(1)

            m_Second := match.Value(2)

            return % m_Second

        }

    }

    ;;2.获取网卡硬件地址

    ;~ ;方法一

    ;~ GetMacAddress()

    ;~ {

    ;~ RunWait, %ComSpec% /c getmac /NH | clip,,hide

    ;~ RegExMatch(clipboard, ".*?([0-9A-Z].{16})(?!\w\\Device)", mac)

    ;~ return %mac1%

    ;~ }

    ;~ ;方法二

    ;~ GetMacAddress()

    ;~ {

    ;~ NetworkConfiguration:=ComObjGet("Winmgmts:").InstancesOf("Win32_NetworkAdapterConfiguration")

    ;~ for mo in NetworkConfiguration

    ;~ {

    ;~ if(mo.IPEnabled <> 0)

    ;~ return mo.MacAddress

    ;~ }

    ;~ }

    ;方法三

        GetMacAddress()

    {

        NetworkConfiguration := computer.StdoutToVar_CreateProcess("getmac")

        RegExMatch(NetworkConfiguration, ".*?([0-9A-Z].{16})(?!\w\\Device)", mac)

        return %mac1%

    }

    ;获取系统版本信息

    GetOSVersionInfo()

    {

        static Ver

        if !Ver

        {

            VarSetCapacity(OSVer, 284, 0)

            NumPut(284, OSVer, 0, "UInt")

            if !DllCall("GetVersionExW", "Ptr", &OSVer)

                return 0 ; GetSysErrorText(A_LastError)

            Ver := Object()

            Ver.MajorVersion      := NumGet(OSVer, 4, "UInt")

            Ver.MinorVersion      := NumGet(OSVer, 8, "UInt")

            Ver.BuildNumber      := NumGet(OSVer, 12, "UInt")

            Ver.PlatformId        := NumGet(OSVer, 16, "UInt")

            Ver.ServicePackString := StrGet(&OSVer+20, 128, "UTF-16")

            Ver.ServicePackMajor  := NumGet(OSVer, 276, "UShort")

            Ver.ServicePackMinor  := NumGet(OSVer, 278, "UShort")

            Ver.SuiteMask        := NumGet(OSVer, 280, "UShort")

            Ver.ProductType      := NumGet(OSVer, 282, "UChar")

            Ver.EasyVersion      := Ver.MajorVersion . "." . Ver.MinorVersion . "." . Ver.BuildNumber

        }

        return Ver

    }

    ;获取内存物理状态

    GlobalMemoryStatusEx()

    {

        static MEMORYSTATUSEX, init := VarSetCapacity(MEMORYSTATUSEX, 64, 0) && NumPut(64, MEMORYSTATUSEX, "UInt")

        if (DllCall("Kernel32.dll\GlobalMemoryStatusEx", "Ptr", &MEMORYSTATUSEX))

        {

            return { 2 : NumGet(MEMORYSTATUSEX, 8, "UInt64")

                , 3 : NumGet(MEMORYSTATUSEX, 16, "UInt64")

                , 4 : NumGet(MEMORYSTATUSEX, 24, "UInt64")

                , 5 : NumGet(MEMORYSTATUSEX, 32, "UInt64") }

        }

    }

    ; Im Original gilt "CP0"; zu CharSet CP850/CP858 vgl.: https://goo.gl/Y8xUYu , http://goo.gl/cMtc6i , https://goo.gl/ssCplI , https://goo.gl/s2P1jK

    StdoutToVar_CreateProcess(sCmd, sEncoding:="CP858", sDir:="", ByRef nExitCode:=0)

    {

        DllCall( "CreatePipe",          PtrP,hStdOutRd, PtrP,hStdOutWr, Ptr,0, UInt,0 )

        DllCall( "SetHandleInformation", Ptr,hStdOutWr, UInt,1, UInt,1                )


        VarSetCapacity( pi, (A_PtrSize == 4) ? 16 : 24,  0 )

        siSz := VarSetCapacity( si, (A_PtrSize == 4) ? 68 : 104, 0 )

        NumPut( siSz,      si,  0,                          "UInt" )

        NumPut( 0x100,    si,  (A_PtrSize == 4) ? 44 : 60, "UInt" )

        NumPut( hStdInRd,  si,  (A_PtrSize == 4) ? 56 : 80, "Ptr"  )

        NumPut( hStdOutWr, si,  (A_PtrSize == 4) ? 60 : 88, "Ptr"  )

        NumPut( hStdOutWr, si,  (A_PtrSize == 4) ? 64 : 96, "Ptr"  )


        if ( !DllCall( "CreateProcess", Ptr,0, Ptr,&sCmd, Ptr,0, Ptr,0, Int,True, UInt,0x08000000

            , Ptr,0, Ptr,sDir?&sDir:0, Ptr,&si, Ptr,&pi ) )

            return ""

            , DllCall( "CloseHandle", Ptr,hStdOutWr )

            , DllCall( "CloseHandle", Ptr,hStdOutRd )


        DllCall( "CloseHandle", Ptr,hStdOutWr ) ; The write pipe must be closed before Reading the stdout.

        VarSetCapacity(sTemp, 4095)

        while ( DllCall( "ReadFile", Ptr,hStdOutRd, Ptr,&sTemp, UInt,4095, PtrP,nSize, Ptr,0 ) )

        sOutput .= StrGet(&sTemp, nSize, sEncoding)


        DllCall( "GetExitCodeProcess", Ptr,NumGet(pi,0), UIntP,nExitCode )

        DllCall( "CloseHandle",        Ptr,NumGet(pi,0)                  )

        DllCall( "CloseHandle",        Ptr,NumGet(pi,A_PtrSize)          )

        DllCall( "CloseHandle",        Ptr,hStdOutRd                    )

        return sOutput

    }

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268

推荐阅读更多精彩内容

  • 我没有见过法国女人,但我喜欢书中的法国女人,她们什么时候都很优雅,和环境无关,和年龄也无关,哪怕岁月在她们的脸上刻...
    书荒者阅读 251评论 0 1
  • 选择海边的一家酒吧坐下, 陌生的面孔,陌生的语言,只有歌声是熟悉的。 驻唱歌手,我一直很喜欢这种情怀。每一位驻唱歌...
    优优和吖吖阅读 624评论 6 3
  • 早上11点才起床起来就开始赶工英开测试题终于收工了KO PPT制作有时候任务给你多少你就能完成多少人的潜力真是无穷...
    dq920813阅读 99评论 0 0
  • 今天还是下雨,看来不会轻易结束,无所谓,下雨也开心。 今天看的电影是李安导演的《卧虎藏龙》,其实看不懂这些什么道啊...
    周兴哲阅读 267评论 0 1