haijie1223 发表于 2021-10-26 21:39:42

激活要这么费劲么,批处理就行了

风行者 发表于 2021-10-26 23:26:23

慢慢玩




zbezj 发表于 2021-10-27 19:07:30

风行者 发表于 2021-10-26 23:26
慢慢玩

我安装的AccAu3Inst_1.5.11.127,竟然没有这个工具箱。。

zbezj 发表于 2021-10-27 19:26:33

风行者 发表于 2021-10-26 23:26
慢慢玩

方便发一下你这个版本的AU3吗,谢谢

zbezj 发表于 2021-10-27 19:47:37

风行者 发表于 2021-10-26 23:26
慢慢玩

多谢大神指点,已经在Q群里找到版本了。

zbezj 发表于 2021-10-27 20:54:16

风行者 发表于 2021-10-26 23:26
慢慢玩

研究了一下,程序扩展工具中提供的这个代码。和我1楼写的第一个转化方法一样,都是获取各种信息。等同于wmic命令中的get,比如:get Version (获取版本号)


而我想知道call Activate(执行Activate这个方法),怎么转化为AU3。貌似程序扩展工具中并没有介绍555555555


:face (10):

zbezj 发表于 2021-10-31 13:48:10

每日一问。。:face (37):

zghwelcome 发表于 2021-11-1 15:11:47

产品ID要找对,否则会报错
Local $sProductID = 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' ;产品ID
Local $colServices = ObjGet("winmgmts:").ExecQuery("SELECT Version FROM SoftwareLicensingService")
For $objProduct In ObjGet("winmgmts:").ExecQuery("SELECT ID FROM SoftwareLicensingProduct where id = '" & $sProductID & "'")
        $objProduct.Activate()
        For $objService In $colServices
                $objService.RefreshLicenseStatus()
        Next
        $objProduct.refresh_
Next





zbezj 发表于 2021-11-1 20:28:29

zghwelcome 发表于 2021-11-1 15:11
产品ID要找对,否则会报错

多谢多谢。貌似执行不报错了。

$objProduct.Activate()执行的返回值请问怎么获取呀?有时代码执行成功,但正常可能会有错误代码返回,想获取这个错误代码。

zbezj 发表于 2021-11-1 20:39:40

zghwelcome 发表于 2021-11-1 15:11
产品ID要找对,否则会报错

现在执行结果是空的



zghwelcome 发表于 2021-11-1 20:50:30

这个没有返回结果的,没有报错就成功

zbezj 发表于 2021-11-1 20:56:59

zghwelcome 发表于 2021-11-1 20:50
这个没有返回结果的,没有报错就成功

$objProduct.Activate()因为这个是执行激活的命令,虽然代码执行成功了。但是激活有可能成功也有可能失败啊,万一失败,错误代码也看不了吗? 使用wmic命令可以看错误代码、

zbezj 发表于 2021-11-1 21:05:33

zghwelcome 发表于 2021-11-1 20:50
这个没有返回结果的,没有报错就成功

并且还有个问题,这个代码执行虽然不报错了,但是有时貌似没有执行。因为msgbox没有弹出来。但有时能弹出,有时不弹出,好奇怪。

zghwelcome 发表于 2021-11-1 21:55:25

你弄个函数就行了啊

Local $sProductID = 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' ;产品ID
Activate($sProductID)
If Not @error Then
        MsgBox(512, '', '成功')
Else
        MsgBox(16, '', '失败')
EndIf

Func Activate($sProductID)
        Local $colServices = ObjGet("winmgmts:").ExecQuery("SELECT Version FROM SoftwareLicensingService")
        For $objProduct In ObjGet("winmgmts:").ExecQuery("SELECT ID FROM SoftwareLicensingProduct where id = '" & $sProductID & "'")
                $objProduct.Activate()
                For $objService In $colServices
                        $objService.RefreshLicenseStatus()
                Next
                $objProduct.refresh_
                Return True
        Next
        Return SetError(1, 0, False)
EndFunc   ;==>Activate



zbezj 发表于 2021-11-1 22:10:21

zghwelcome 发表于 2021-11-1 21:55
你弄个函数就行了啊

Local $owinmgmts = ObjGet("winmgmts:")
Local $sProductID = '4de7cb65-cdf1-4de9-8ae8-e3cce27b9f2c' ;产品ID
Local $colServices = ObjGet("winmgmts:").ExecQuery("SELECT Version FROM SoftwareLicensingService")
For $objProduct In ObjGet("winmgmts:").ExecQuery("SELECT ID FROM SoftwareLicensingProduct where id = '" & $sProductID & "'")
        $objProduct.Activate()
        MsgBox(64, 1, $objProduct.Activate())
        For $objService In $colServices
                $objService.RefreshLicenseStatus()
        Next
        $objProduct.refresh_
Next



Local $sProductID = '4de7cb65-cdf1-4de9-8ae8-e3cce27b9f2c' ;产品ID
Activate($sProductID)
If Not @error Then
      MsgBox(512, '', '成功')
Else
      MsgBox(16, '', '失败')
EndIf

Func Activate($sProductID)
      Local $colServices = ObjGet("winmgmts:").ExecQuery("SELECT Version FROM SoftwareLicensingService")
      For $objProduct In ObjGet("winmgmts:").ExecQuery("SELECT ID FROM SoftwareLicensingProduct where id = '" & $sProductID & "'")
                $objProduct.Activate()
                For $objService In $colServices
                        $objService.RefreshLicenseStatus()
                Next
                $objProduct.refresh_
                Return True
      Next
      Return SetError(1, 0, False)
EndFunc   ;==>Activate




出现了一个很奇怪的问题,上面两段代码是一回事。但是把他俩放到一个.au3里面执行。。结果失败。如果单独执行一段代码,就成功。

此外,下面这两行,如果把其中的ObjGet("winmgmts:"),事先用变量声明。Local $owinmgmts = ObjGet("winmgmts:"),也会执行失败。。好奇怪
Local $colServices = ObjGet("winmgmts:").ExecQuery("SELECT Version FROM SoftwareLicensingService")
For $objProduct In ObjGet("winmgmts:").ExecQuery("SELECT ID FROM SoftwareLicensingProduct where id = '" & $sProductID & "'")





页: 1 [2]
查看完整版本: WMIC命令转AU3的问题?