使用AU3运行dos命令遇到的一些问题
本帖最后由 532918457 于 2022-4-21 12:37 编辑#RequireAdmin
#Region ;**** 由 AccAu3Wrapper_GUI 创建指令 ****
#AccAu3Wrapper_Icon=F:\ICO\16.ico
#AccAu3Wrapper_OutFile_x64=一键激活win10.exe
#AccAu3Wrapper_Res_Language=2052
#AccAu3Wrapper_Res_requestedExecutionLevel=None
#EndRegion ;**** 由 AccAu3Wrapper_GUI 创建指令 ****
#include <WinAPI.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <ButtonConstants.au3>
#include <GUIToolTip.au3>
#include <StaticConstants.au3>
#include <Process.au3>
Global Const $gc_FormName = "激活Win10"
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate($gc_FormName, 177, 100, -1, -1)
GUISetBkColor(0xdeecfc)
Local $idComboBox1 = GUICtrlCreateCombo("", 10, 15, 155, 20)
Local $Btn1 = GUICtrlCreateButton("确定", 10, 50, 60, 24, $BS_DEFPUSHBUTTON)
Local $Btn2 = GUICtrlCreateButton("查看激活状态", 80, 50, 86, 24)
GUICtrlCreateLabel("By Simiya-L", -1, 80, 85, 20, $SS_RIGHT)
#EndRegion ### END Koda GUI section ###
_Main()
Exit
Func _Main()
GUICtrlSetData($idComboBox1, "激活win10(校内)|激活win10(校外)", "激活win10(校内)")
GUISetState(@SW_SHOW)
Local $nMsg
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Btn1
_Activation();激活win10
Case $Btn2
_ActivationStatus();查看激活状态
EndSwitch
WEnd
EndFunc ;==>_Main
Func _Activation()
Select
Case GUICtrlRead($idComboBox1) = "激活win10(校内)"
Local $Act1 = _RunDos("slmgr /skms kms.03k.org")
Sleep(2000)
ControlClick('Windows Script Host', '', 'Button1')
Local $Act2 = _RunDos("slmgr /ato")
TrayTip("", "系统激活完成", 5, 1)
Case GUICtrlRead($idComboBox1) = "激活win10(校外)"
RunWait(@ComSpec & "/c" & 'slmgr /skms kms.03k.org')
RunWait(@ComSpec & "/c" & 'slmgr /ato')
TrayTip("", "系统激活完成", 5, 1)
EndSelect
EndFunc ;==>_Activation
Func _ActivationStatus()
Local $ActSta = _RunDos("slmgr.vbs -xpr")
EndFunc ;==>_ActivationStatus
每次运行到图片的地方就要手动点击确定才可以运行下一条代码,我中间试过添加WinActivate的代码还是不行,代码应该卡在了 Local $Act1 = _RunDos("slmgr /skms kms.03k.org"),不点确定就不继续了,然后RunWait(@ComSpec & "/c" & 'slmgr /skms kms.03k.org')这一句是完全不起作用,不知到为什么,我测试的系统是windows10。
求各位大哥指教一下我这个学了两星期左右的萌新。
真够萌新的,帖子代码显示不正常得编辑下,这样一行显示怎么忍得下去的?
代码可用 【code】代码【/code】 或者 【au3】代码【/au3】发布,不要用贴图
不过新人就悬赏很不错,大方~
试试:
Case GUICtrlRead($idComboBox1) = "激活win10(校内)"
;~ Local $Act1 = _RunDos("slmgr /skms kms.03k.org")
Local $Act1 = Run(@ComSpec & " /C slmgr /skms kms.03k.org")
WinWaitActive('Windows Script', '密钥管理')
Send('{Enter}')
Local $Act2 = _RunDos("slmgr /ato")
TrayTip("", "系统激活完成", 5, 1) 等待这个窗口出现发送回车问题解决不了吗? redapple2008 发表于 2022-4-21 08:28
等待这个窗口出现发送回车问题解决不了吗?
就是要手动按回车,不能自动,我试过用send"{enter}"没用,会导致脚本不断重复 ControlSend试试了。 redapple2008 发表于 2022-4-21 09:00
ControlSend试试了。
还是·不行
这个应该用控件点击函数吧
ControlClick('Windows Script Host', '', 'Button1') 本帖最后由 532918457 于 2022-4-21 15:54 编辑
fybhwsx 发表于 2022-4-21 10:02
这个应该用控件点击函数吧
ControlClick('Windows Script Host', '', 'Button1')
如果用这样的方法就可以,无论用send还是控件点击,鼠标模拟点击都可以定位到windows script host这个窗口,但是用_Rundos就会卡着,不知道原理是什么。能请教一下能不能改一下我这个代码,不用——rundos都可以,我就是想不显示CMD后台帮我运行这些代码而已。
532918457 发表于 2022-4-21 10:22
如果用这样的方法就可以,无论用send还是控件点击,鼠标模拟点击都可以定位到windows script host这个窗 ...
用ShellExecute可以试试了 afan 发表于 2022-4-21 10:33
真够萌新的,帖子代码显示不正常得编辑下,这样一行显示怎么忍得下去的?
代码可用 【code】代码【/code】 ...
第一次发帖,里面高级那里有AU3代码输入我就直接复制进去,也不清楚为什么出来是一行,所以我就直接贴图了,而且贴图可以方便我指出那里不懂啊 redapple2008 发表于 2022-4-21 10:41
用ShellExecute可以试试了
没用过这个命令不会用啊,能不能举个例子,谢谢了:face (37): Func _KMS($WebSev)
RunWait(@ComSpec & ' /c ' & 'slmgr.vbs -upk', '', 0)
RunWait(@ComSpec & ' /c ' & 'slmgr /ipk W269N-WFGWX-YVC9B-4J6C9-T83GX', '', 0)
RunWait(@ComSpec & ' /c ' & 'slmgr /skms kms.03k.org', '', 0)
RunWait(@ComSpec & ' /c ' & 'slmgr /ato', '', 0)
Msgbox(64,"完成","操作成功,请检查是否激活成功,若激活失败请尝试更换激活通道")
EndFunc 532918457 发表于 2022-4-21 12:24
第一次发帖,里面高级那里有AU3代码输入我就直接复制进去,也不清楚为什么出来是一行,所以我就直接贴图 ...
萌新不可怕,粗心最致命。我在 8# 已给出答案了。 afan 发表于 2022-4-21 10:33
真够萌新的,帖子代码显示不正常得编辑下,这样一行显示怎么忍得下去的?
代码可用 【code】代码【/code】 ...
感谢大佬的指点!
Case GUICtrlRead($idComboBox1) = "激活win10(校内)"
Local $Act1 = Run(@ComSpec & " /C slmgr /skms kms.03k.org", "", @SW_HIDE)
WinWaitActive('Windows Script Host', '密钥管理')
Send('{Enter}')
Local $Act2 = Run(@ComSpec & " /C slmgr /ato", "", @SW_HIDE)
WinWaitActive('Windows Script Host', '正在激活')
Send('{Enter}')
TrayTip("", "系统激活完成", 5, 1)
Exit
我在你的基础上修改了一下,测试都比较完美了,还有一个问题,有没有方法在一个cmd窗口里输入多行的命令呢,就像bat文件一样。
redapple2008 发表于 2022-4-21 13:52
你这个要清理原本密钥的,win10各种版本密钥不通用的,比如我用的是LTSC的版本用你这个命令就无法激活了,我还要上网再找激活码才可以
页:
[1]
2