532918457 发表于 2022-4-20 19:14:43

使用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。

求各位大哥指教一下我这个学了两星期左右的萌新。

afan 发表于 2022-4-20 19:14:44

真够萌新的,帖子代码显示不正常得编辑下,这样一行显示怎么忍得下去的?
代码可用 【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:32

等待这个窗口出现发送回车问题解决不了吗?

532918457 发表于 2022-4-21 08:54:55

redapple2008 发表于 2022-4-21 08:28
等待这个窗口出现发送回车问题解决不了吗?

就是要手动按回车,不能自动,我试过用send"{enter}"没用,会导致脚本不断重复

redapple2008 发表于 2022-4-21 09:00:21

ControlSend试试了。

532918457 发表于 2022-4-21 09:48:58

redapple2008 发表于 2022-4-21 09:00
ControlSend试试了。

还是·不行

fybhwsx 发表于 2022-4-21 10:02:25

这个应该用控件点击函数吧
ControlClick('Windows Script Host', '', 'Button1')

532918457 发表于 2022-4-21 10:22:33

本帖最后由 532918457 于 2022-4-21 15:54 编辑

fybhwsx 发表于 2022-4-21 10:02
这个应该用控件点击函数吧
ControlClick('Windows Script Host', '', 'Button1')
如果用这样的方法就可以,无论用send还是控件点击,鼠标模拟点击都可以定位到windows script host这个窗口,但是用_Rundos就会卡着,不知道原理是什么。能请教一下能不能改一下我这个代码,不用——rundos都可以,我就是想不显示CMD后台帮我运行这些代码而已。

redapple2008 发表于 2022-4-21 10:41:14

532918457 发表于 2022-4-21 10:22
如果用这样的方法就可以,无论用send还是控件点击,鼠标模拟点击都可以定位到windows script host这个窗 ...

用ShellExecute可以试试了

532918457 发表于 2022-4-21 12:24:43

afan 发表于 2022-4-21 10:33
真够萌新的,帖子代码显示不正常得编辑下,这样一行显示怎么忍得下去的?
代码可用 【code】代码【/code】 ...

第一次发帖,里面高级那里有AU3代码输入我就直接复制进去,也不清楚为什么出来是一行,所以我就直接贴图了,而且贴图可以方便我指出那里不懂啊

532918457 发表于 2022-4-21 12:28:52

redapple2008 发表于 2022-4-21 10:41
用ShellExecute可以试试了

没用过这个命令不会用啊,能不能举个例子,谢谢了:face (37):

redapple2008 发表于 2022-4-21 13:52:24

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

afan 发表于 2022-4-21 13:59:13

532918457 发表于 2022-4-21 12:24
第一次发帖,里面高级那里有AU3代码输入我就直接复制进去,也不清楚为什么出来是一行,所以我就直接贴图 ...

萌新不可怕,粗心最致命。我在 8# 已给出答案了。

532918457 发表于 2022-4-21 15:53:16

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文件一样。

532918457 发表于 2022-4-21 15:57:44

redapple2008 发表于 2022-4-21 13:52


你这个要清理原本密钥的,win10各种版本密钥不通用的,比如我用的是LTSC的版本用你这个命令就无法激活了,我还要上网再找激活码才可以
页: [1] 2
查看完整版本: 使用AU3运行dos命令遇到的一些问题