通过网页来远程控制电脑媒体播放(基于db大佬)

通过网页来远程控制电脑媒体播放(基于db大佬)

添加功能:

歌曲切换,播放暂停

显示当前播放歌曲(目前只支持网易云音乐)

调整系统音量

 

使用

下载文章资源:通过网页来远程控制电脑 – AutoAHK

把下列代码替换资源里 <HTTP远程控制台.ahk> 的内容

 

 /*
═══════════════════════════════════════════════════════════
                    AutoHotkey -- 网页远程控制台

    这是一款基于AutoHotkey开发的 HTTP 远程控制台,可在手机端或PC端用浏览器
 来操作Windows电脑完成批量自动化操作。
    当前版本即开即用,除"进程状态"需要根据自己电脑情况更改路径匹配以外,其它
 功能均可正常使用。不熟悉AHK脚本命令也可使用Cmd命令操作电脑。熟悉AHK命令
 之后,可用AHK完成办公自动化、网页自动化、游戏自动化等等复杂操作。

                 此工具仅限于技术交流,切勿用于非法用途

═══════════════════════════════════════════════════════════
*/
#NoEnv
#Persistent
#MaxThreads 255
#SingleInstance Force
SetBatchLines -1
SetWorkingDir %A_ScriptDir%
Menu Tray, Icon, shell32.dll, 18

; 自动切换到管理员运行,这样能判断和控制进程状态
if !A_IsAdmin {
    Run *RunAs "%A_AhkPath%" /r "%A_ScriptFullPath%"
    RegWrite, REG_SZ, HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers,%A_AhkPath%, ~ RUNASADMIN
}
; 用于修正32位AHK读取不到64位系统"C:\Windows\System32"的问题
if !(A_IsUnicode=1 and A_PtrSize=8)
    DllCall("Wow64DisableWow64FsRedirection")

; 将函数内要共用显示的变量做全局声明
global 编辑框返回值显示:="", 重启电脑显示:="", 重启读秒:="", 关闭电脑显示:="", 关机读秒:="", 结束服务显示:="", 结束服务读秒:=""

; 参数结构:"网页路径" : Func("对应调用的函数名称")
paths := {"/" : Func("主界面")
            , "/DingShi_onoff" : Func("定时任务")
            , "/LiuLanQi_onoff" : Func("浏览器")
            , "/QQ_onoff" : Func("QQ")
            , "/JingYin_onoff" : Func("电脑静音")
            , "/XvNiJi_onoff" : Func("虚拟机")
            , "/YuanChengKongZhi_onoff" : Func("远程控制")
            , "/QuanPingJieTu" : Func("全屏截图")
            , "/QingLiNeiCun" : Func("清理内存")
            , "/ChongQiPC" : Func("重启电脑")
            , "/GuanBiPC" : Func("关闭电脑")
            , "/ChaKanJieTu" : Func("查看截图")
            , "/CmdZiDingYi" : Func("执行Cmd命令")
            , "/QuXiaoChongQi" : Func("取消重启")
            , "/JieShuHTTP" : Func("结束服务")
            , "/AHKScript1" : Func("自定义新进程1")
            , "/AHKScript2" : Func("自定义新进程2")
            , "/AHKScript3" : Func("自定义新进程3")
            , "/MediaNext" : Func("MediaNext")
            , "/MediaPrev" : Func("MediaPrev")
            , "/MediaStop" : Func("MediaStop")
            ; , "/IncreaseVolume" : Func("IncreaseVolume")
            ; , "/DecreaseVolume" : Func("DecreaseVolume")
            , "/AdjustVolume" : Func("AdjustVolume")
            , "/QingLiJinCheng" : Func("清理新脚本进程")}

Server := new HttpServer()
Server.LoadMimes(A_ScriptDir "\Lib\mime.types")
Server.SetPaths(paths)
HTTP服务端口 := 8866
Server.Serve(HTTP服务端口)
Run "http://localhost:8866/" ; 启动脚本后打开控制台网页【这句可删除】
Clipboard := "http://"A_IPAddress1 ":" HTTP服务端口 ; 运行时会将局域网ip和端口一并保存到剪贴板中,方便自己打开或发送
Gosub 加载托盘菜单
Return

; ================= 以下是对应进程调用代码【按自己软件路径自行修改匹配】=================
;                  几乎每个函数都是一个单独的示例,搜索关键字或参数修改即可。推荐查看AHK帮助文档修改

; 搜寻"定时先锋v1.23.exe"进程,存在则结束其进程,不存在时则打开该软件
定时任务(ByRef req, ByRef res) {
    Process, Exist, 定时先锋v1.23.exe
    if ErrorLevel
        Process, Close, 定时先锋v1.23.exe
      else
        Run "%A_ScriptDir%\调用工具\定时先锋v1.23\定时先锋v1.23.exe"
    ; 跳转回主界面
    res.SetBodyText("<head><meta http-equiv=""refresh"" content=""0.1;url=/""></head>"), res.status := 200
 }

; 返回到主页
BackToHome(ByRef res){
	res.SetBodyText("<head><meta http-equiv=""refresh"" content=""0.1;url=/""></head>"), res.status := 200
}

; 切换下一首
MediaNext(ByRef req, ByRef res){
	SendInput, {Media_Next}
	BackToHome(res)
}

; 切换上一首
MediaPrev(ByRef req, ByRef res){
	SendInput, {Media_Prev}
	BackToHome(res)
}

; 暂停/继续 播放
MediaStop(ByRef req, ByRef res){
	SendInput, {Media_Play_Pause}
	BackToHome(res)
}
IncreaseVolume(ByRef req, ByRef res){
}
DecreaseVolume(ByRef req, ByRef res){
}

; 调整系统音量
AdjustVolume(ByRef req, ByRef res){
	; msgbox,% req.queries.volume
	SoundSet, % req.queries.volume
	BackToHome(res)
}

DoNothing(){
	BackToHome(res)
}

;【示例】清理360浏览器,根据自己所用的浏览器进程名替换即可
浏览器(ByRef req, ByRef res) {
    ; 循环30次,结束所有"360se.exe"进程
    Loop 30
        Process, Close, 360se.exe
    ; 跳转回主界面
    res.SetBodyText("<head><meta http-equiv=""refresh"" content=""0.1;url=/""></head>"), res.status := 200
 }

; QQ启动与关闭【以下是1080p屏抓的图,不保证通用。需要自行启动Lib\FindText.ahk,抓图替换到"QQ托盘图标"变量】
QQ(ByRef req, ByRef res) {
    ; QQ进程存在时,用FindText屏幕找图找到QQ托盘图标并点击鼠标右键关闭QQ。进程不存在时,则启动QQ
    Process, Exist, QQ.exe
    if ErrorLevel {
        QQ托盘图标:="|<>*105$5.8cU8k|<>*82$9.zyHmTPUC3U"
        if (ok:=FindText(0, 0, A_ScreenWidth, A_ScreenHeight, 0, 0, QQ托盘图标, ,0)) {
            CoordMode Mouse
            X:=ok.1.x, Y:=ok.1.y, Comment:=ok.1.id
            Click, %X% %Y% Right
            Sleep 2000 ; 根据电脑性能情况可增加延时等待菜单弹出的时间
            X:=X+30, Y:=Y-35
            Click, %X% %Y%
        }
     } else ; 以下这条改成你的QQ启动器路径
        Run "D:\Program Files (x86)\Tencent\QQ\Bin\QQScLauncher.exe"
    ; 等待至少6秒,让QQ完全退出后再刷新网页
    Loop 60 {
        Sleep 100
        Process, Exist, QQ.exe
            if !ErrorLevel 
                break
    }
    res.SetBodyText("<head><meta http-equiv=""refresh"" content=""0.1;url=/""></head>"), res.status := 200
 }

; 发送媒体键"静音",使电脑切换音量状态
电脑静音(ByRef req, ByRef res) {
	; 还可以控制更多状态,播放暂停:Media_Play_Pause、下一曲:Media_Next等等。详见AHK帮助文档的按键列表说明
    Send {Volume_Mute}
    res.SetBodyText("<head><meta http-equiv=""refresh"" content=""0.1;url=/""></head>"), res.status := 200
 }

;虚拟机VMware进程存在时,则激活窗口用组合键退出在用虚拟机并退出软件,不存在时则启动VMware
虚拟机(ByRef req, ByRef res) {
    ; 因为AHK是单线程工作,所以Sleep和Msgbox这种阻塞线程的命令不要出现在主线程里。
    ; 可以用以下新建进程执行的方式来解决处理,也可以改成SetTimer异步执行
    Process, Exist, vmware.exe
    if ErrorLevel {
        AHK代码=
        (` %
            WinActivate, ahk_class VMUIFrame
            Sleep 2000
            Send ^e
            Sleep 5000
            Send {Alt Down}
            Sleep 500
            Send f
            Send x
            Send {Alt Up}
        )
        Exec(AHK代码,4)
      } else ; 以下这条改成你的VMware启动路径,也可改成.vmx虚拟机文件直接启动指定虚拟机
        Run "C:\Program Files (x86)\VMware\VMware Workstation\vmware.exe"
    res.SetBodyText("<head><meta http-equiv=""refresh"" content=""0.1;url=/""></head>"), res.status := 200
 }

; 因为ToDesk会自提升到System权限,所以得调用微软工具PsExec结束其进程
; https://docs.microsoft.com/zh-cn/sysinternals/downloads/psexec
远程控制(ByRef req, ByRef res) {
    Process, Exist, ToDesk.exe
    if ErrorLevel
        Run "%A_AhkPath%" "%A_ScriptDir%\调用工具\关闭ToDesk远程控制\关闭远程控制.ahk"
     else ; 以下这条改成你的ToDesk路径
        Run "C:\Program Files (x86)\ToDesk\ToDesk.exe"
    ; 等待至少3秒,让ToDesk完全退出后再刷新网页
    Loop 30 {
        Sleep 100
        Process, Exist, ToDesk.exe
            if !ErrorLevel 
                break
    }
    res.SetBodyText("<head><meta http-equiv=""refresh"" content=""0.1;url=/""></head>"), res.status := 200
 }

全屏截图(ByRef req, ByRef res) {
    ; 调用ImagePut库进行全屏截图,A_ScreenWidth=获取屏幕的宽度,A_ScreenHeight=获取屏幕高度
    ImagePutFile([0,0,A_ScreenWidth,A_ScreenHeight], "全屏截图.png", 100)
    res.SetBodyText("<head><meta http-equiv=""refresh"" content=""0.1;url=/""></head>"), res.status := 200
 }

; 调用微软内存工具RAMMap自动清理内存和备用内存的流程脚本
; https://docs.microsoft.com/en-us/sysinternals/downloads/rammap
清理内存(ByRef req, ByRef res) {
    if !A_OSVersion in WIN_VISTA,WIN_2003,WIN_XP,WIN_2000
        Run "%A_AhkPath%" "%A_ScriptDir%\调用工具\RAMMap一键整理内存\一键清内存和备用内存脚本.ahk"
    res.SetBodyText("<head><meta http-equiv=""refresh"" content=""0.1;url=/""></head>"), res.status := 200
 }

; 异步执行一分钟后,重启
重启电脑(ByRef req, ByRef res) {
    SetTimer 一分钟后重启, -60000
    重启读秒 := 60, 重启电脑显示 := "秒重启"
    res.SetBodyText("<head><meta http-equiv=""refresh"" content=""0.1;url=/""></head>"), res.status := 200
    SetTimer 重启读秒显示刷新, 1000
    Return
    
    重启读秒显示刷新:
    重启读秒 -= 1
    Return
    
    一分钟后重启:
    Shutdown, 6
    Return
 }

; 异步执行一分钟后,关机
关闭电脑(ByRef req, ByRef res) {
    SetTimer 一分钟后关机, -60000
    关机读秒 := 60, 关闭电脑显示 := "秒关机"
    res.SetBodyText("<head><meta http-equiv=""refresh"" content=""0.1;url=/""></head>"), res.status := 200
    SetTimer 关机读秒显示刷新, 1000
    Return
    
    关机读秒显示刷新:
    关机读秒 -= 1
    Return
    
    一分钟后关机:
    Shutdown, 5
    Return
 }

查看截图(ByRef req, ByRef res, ByRef server) {
    ; 判断截图文件是否存在,存在则网页显示,不存在则弹出提示字样
    if FileExist( A_ScriptDir "/全屏截图.png")
        server.ServeFile(res, A_ScriptDir "/全屏截图.png"), res.status := 200
     else
        res.SetBodyText("未找到截图文件,请先截图再查看"), res.status := 200
 }

; 调用RunCmd库来执行Cmd命令,具体说明请查看"\Lib\RunCMD.ahk"
执行Cmd命令(ByRef req, ByRef res) {
    ; 为防止线程被阻塞,所以使用新进程执行Cmd命令。以下示例因为包含字符转义和变量添加,比较特殊略复杂
    ; 不建议不熟悉AHK的做为参考。需要新建进程的,可参考虚拟机新建进程那个模板来使用。
    给新进程使用的Cmd指令要存为变量 := 获取网页传递代码并还原(req)
    AHK代码=
    (
        SetWorkingDir `%A_ScriptDir`%
        #Include `%A_ScriptDir`%\Lib\RunCMD.ahk
        ExecSend(RunCmd("%给新进程使用的Cmd指令要存为变量%"))
    )
    Exec(AHK代码,5)
    res.SetBodyText("<head><meta http-equiv=""refresh"" content=""0.1;url=/""></head>"), res.status := 200
 }

; 取消异步"一分钟后重启"和"一分钟后关机"的计时
取消重启(ByRef req, ByRef res) {
    SetTimer 一分钟后关机, off
    SetTimer 一分钟后重启, off
    SetTimer 重启读秒显示刷新, off
    SetTimer 关机读秒显示刷新, off
    关闭电脑显示 := "关闭电脑", 重启电脑显示 := "重启电脑", 重启读秒 := "", 关机读秒 := ""
    res.SetBodyText("<head><meta http-equiv=""refresh"" content=""0.1;url=/""></head>"), res.status := 200
 }

; 点击 "结束服务" 按钮开始90秒倒计时结束自身,想取消在计时到之前再点击一次按钮即可取消
结束服务(ByRef req, ByRef res) {
    static onoff
    if (onoff := !onoff) {
        SetTimer 延时结束自身, -99000
        结束服务读秒 := 99, 结束服务显示 := "秒结束"
      } else {
        SetTimer 延时结束自身, off
        结束服务读秒 := "", 结束服务显示 := "结束服务"
     }
    res.SetBodyText("<head><meta http-equiv=""refresh"" content=""0.1;url=/""></head>"), res.status := 200
    SetTimer 结束服务显示刷新, 1000
    Return
    
    结束服务显示刷新:
    结束服务读秒 -= 1
    Return

    延时结束自身:
    ExitApp
 }

自定义新进程1(ByRef req, ByRef res) {
    ; 获取网页传递的代码,并还原URL编码
    自定义新进程代码1 := 获取网页传递代码并还原(req)
    Exec(自定义新进程代码1,1)
    res.SetBodyText("<head><meta http-equiv=""refresh"" content=""0.1;url=/""></head>"), res.status := 200
 }

自定义新进程2(ByRef req, ByRef res) {
    自定义新进程代码2 := 获取网页传递代码并还原(req)
    Exec(自定义新进程代码2,2)
    res.SetBodyText("<head><meta http-equiv=""refresh"" content=""0.1;url=/""></head>"), res.status := 200
 }

; 以下做了个特殊的示例,在编辑框里输入"控制面板"后,用"进程3运行"。可以远程打开控制面板并返回提示到编辑框中
; 熟悉AHK后,可以自定义个人指令完成一套自动化流程并返回值到网页显示【相当于网页端的MsgBox,可供调试和确认】
自定义新进程3(ByRef req, ByRef res) {
    自定义新进程代码3 := 获取网页传递代码并还原(req)
    if (自定义新进程代码3="控制面板") {
        ; 新建进程运行,打开控制面板后,向主进程返回进度并在网页中显示出来【简单的演示,可自由发挥】
        自定义新进程代码3=
        (` %
            Run control.exe
            WinWait, ahk_class CabinetWClass
            ExecSend("控制面板已启动") ; 新进程往网页线程发送"编辑框返回值显示"的反馈信息
        )
        Exec(自定义新进程代码3,3)
      } else
        Exec(自定义新进程代码3,3)
    res.SetBodyText("<head><meta http-equiv=""refresh"" content=""0.1;url=/""></head>"), res.status := 200
 }

; 此标签是用来接收新进程发送的数据,CopyOfData是接收数据的变量名
ExecReturn:
编辑框返回值显示 := CopyOfData
Return

; 清理释放网页端自定义的那三个新进程。新进程控制更多使用方法请查看"\Lib\多线程互相通信和系统显示.ahk"
清理新脚本进程(ByRef req, ByRef res) {
    Exec("",1), Exec("",2), Exec("",3)
    res.SetBodyText("<head><meta http-equiv=""refresh"" content=""0.1;url=/""></head>"), res.status := 200
 }

; 获取网页传递的代码,并还原URL编码的函数
获取网页传递代码并还原(req) {
    Http请求体数组代码还原 := "", Http请求体数组代码还原 := Object()
    For each, Pair in StrSplit(req.body,"&")
        Part := StrSplit(Pair, "="), Http请求体数组代码还原.Push([Part[1], Part[2]])
    还原完成的代码 := EncodeDecodeURI(Http请求体数组代码还原[1,2], false)
    return 还原完成的代码
 }

; 网页控制台的主页面显示
主界面(ByRef req, ByRef res) {
    ; 先加载各种电脑实时状态到变量里,再反映到网页控制台中显示
    CPULoad() ; CPU使用率显示预加载

    DriveGet, 总容量, Capacity, C:/
    DriveSpaceFree, 可用空间数, C:/

    可用空间显示 := Format("{:.1f}", 可用空间数/1024)
    总容量显示 := Format("{:.1f}", 总容量/1024)

    GMSEx := GlobalMemoryStatusEx()
    内存大小显示 := Format("{:.2f}", GMSEx[2]/1073741824)
    内存占用率显示 := GMSEx[1]

    RegRead, 系统名称获取, HKEY_LOCAL_MACHINE, SOFTWARE\Microsoft\Windows NT\CurrentVersion, ProductName
    系统名称显示 := StrReplace(StrReplace(StrReplace(系统名称获取,"Windows","Win"),"Microsoft ",""),"Enterprise","企业版")

    Process, Exist, 定时先锋v1.23.exe
        定时任务显示 := ErrorLevel=0 ? "未启动" : "已启动"
    Process, Exist, 360se.exe
        浏览器显示 := ErrorLevel=0 ? "未启动" : "已启动"
    Process, Exist, QQ.exe
        QQ显示 := ErrorLevel=0 ? "未启动" : "已启动"
    Process, Exist, vmware.exe
        虚拟机显示 := ErrorLevel=0 ? "未启动" : "已启动"
    Process, Exist, ToDesk.exe
        远程控制显示 := ErrorLevel=0 ? "未启动" : "已启动"
    SoundGet, 当前音量状态, , mute
        音量状态显示 := 当前音量状态="off" ? "未静音" : "已静音"

    重启电脑显示 := 重启电脑显示="" ? "重启电脑" : 重启电脑显示
    关闭电脑显示 := 关闭电脑显示="" ? "关闭电脑" : 关闭电脑显示
    结束服务显示 := 结束服务显示="" ? "结束服务" : 结束服务显示
    编辑框返回值显示 := 编辑框返回值显示="" ? "可输入自定义Cmd命令↑`n【双击编辑框可复制灰字到剪贴板】    `n也可输入自定义AHK命令↓" : 编辑框返回值显示

    ; 新进程运行中,点击 "1 运行中" 按钮可以关闭对应进程
    DetectHiddenWindows, On
    WinGet, 新进程1在线显示, PID, <<ExecNew1>> ahk_class AutoHotkeyGUI
    WinGet, 新进程2在线显示, PID, <<ExecNew2>> ahk_class AutoHotkeyGUI
    WinGet, 新进程3在线显示, PID, <<ExecNew3>> ahk_class AutoHotkeyGUI
    新进程1在线显示 := 新进程1在线显示="" ? "进程1运行" : "1 运行中"
    新进程2在线显示 := 新进程2在线显示="" ? "进程2运行" : "2 运行中"
    新进程3在线显示 := 新进程3在线显示="" ? "进程3运行" : "3 运行中"

    CPU使用率显示 := CPULoad()

	MusicTitle := GetMusicAppPlayingTitle()
	NowSystemVolume := GetSystemVolume()

    主界面网页源码 =
    (LTrim
		<html><head><meta charset="UTF-8"><head><meta name="viewport" content="width=device-width">
		<title>NAS控制台</title>
		<link href='http://fonts.googleapis.com/css?family=Ubuntu' rel='stylesheet' type='text/css'><style type="text/css">
		html {font-family: Ubuntu;}
		body {margin:25px;margin-top:5px;width:450px;}
		h4 {font-size: 20px;color:green;}
		h5 {font-size: 16px;color:teal;}
		.custom1 {width:78px;height:24px;margin-top:650px;}
		.custom_title {height:24px;font-weight:700;margin-top:650px;}
		</style></head></html>
		<body><form action="" name="AHKScript" method="post">
		<textarea name="TextArea1" id="TextArea1" placeholder="%编辑框返回值显示%" style="position:absolute;left:27px;top:311px;width:358px;height:86px;z-index:10;" ondblclick="send(5)" rows="4" cols="37" spellcheck="false"></textarea>    
		<button  style="position:absolute;font-family:微软雅黑;left:10px;top:428px;width:84px;height:24px;z-index:11;" onclick="send(1)"/>%新进程1在线显示%</button>
		<button style="position:absolute;font-family:微软雅黑;left:112px;top:428px;width:84px;height:24px;z-index:15;" onclick="send(2)"/>%新进程2在线显示%</button>
		<button style="position:absolute;font-family:微软雅黑;left:215px;top:428px;width:84px;height:24px;z-index:9;" onclick="send(3)"/>%新进程3在线显示%</button>
		<button style="position:absolute;font-family:微软雅黑;left:114px;top:265px;width:78px;height:24px;z-index:19;" onclick="send(4)"/>Cmd命令</button>
		<script>
		function send(type) {
			var url = '';
			if (type === 1)
				url = '/AHKScript1';
			else if (type === 2)
				url = '/AHKScript2';
			else if (type === 3)
				url = '/AHKScript3';
			else if (type === 4)
				url = '/CmdZiDingYi';
			else {
				const input = document.querySelector('#CopyTextArea1');
				input.select();
				if (document.execCommand('copy')) {
					document.execCommand('copy');
					console.log('复制成功');
				}
			}
			document.AHKScript.action = url;
			document.AHKScript.submit();
		}
		</script>

		<input type="submit" id="Button15" value="清理进程" style="position:absolute;left:321px;top:428px;width:78px;height:24px;z-index:39;">

		<div id="wb_Text1" style="position:absolute;left:12px;top:45px;width:112px;height:14px;z-index:0;">
			<span style="color:#919191;font-family:微软雅黑;font-size:13px;"><strong>定时任务:</strong></span><span style="color:#000000;font-family:微软雅黑;font-size:13px;">%定时任务显示%</span></div>
		<form><input type="submit" id="Button1" value="开关" style="position:absolute;left:124px;top:46px;width:65px;height:21px;z-index:1;">
		</form>
		<div id="wb_Text2" style="position:absolute;left:220px;top:45px;width:112px;height:14px;z-index:2;">
			<span style="color:#919191;font-family:微软雅黑;font-size:13px;"><strong>浏览器:</strong></span><span style="color:#000000;font-family:微软雅黑;font-size:13px;">%浏览器显示%</span></div>
		<form><input type="submit" id="Button2" value="开关" style="position:absolute;left:334px;top:46px;width:65px;height:21px;z-index:3;">
		</form>
		<div id="wb_Text3" style="position:absolute;left:12px;top:86px;width:112px;height:14px;z-index:4;">
			<span style="color:#919191;font-family:微软雅黑;font-size:13px;"><strong>QQ:</strong></span><span style="color:#000000;font-family:微软雅黑;font-size:13px;">%QQ显示%</span></div>
		<form><input type="submit" id="Button3" value="开关" style="position:absolute;left:124px;top:87px;width:65px;height:21px;z-index:5;">
		</form>
		<div id="wb_Text4" style="position:absolute;left:220px;top:86px;width:112px;height:14px;z-index:13;">
			<span style="color:#919191;font-family:微软雅黑;font-size:13px;"><strong>音量状态:</strong></span><span style="color:#000000;font-family:微软雅黑;font-size:13px;">%音量状态显示%</span></div>
		<form><input type="submit" id="Button4" value="开关" style="position:absolute;left:334px;top:87px;width:65px;height:21px;z-index:14;">
		</form>
		<div id="wb_Text5" style="position:absolute;left:12px;top:128px;width:112px;height:14px;z-index:17;">
			<span style="color:#919191;font-family:微软雅黑;font-size:13px;"><strong>虚拟机:</strong></span><span style="color:#000000;font-family:微软雅黑;font-size:13px;">%虚拟机显示%</span></div>
		<form><input type="submit" id="Button5" value="开关" style="position:absolute;left:124px;top:129px;width:65px;height:21px;z-index:18;">
		</form>
		<div id="wb_Text6" style="position:absolute;left:220px;top:128px;width:112px;height:14px;z-index:22;">
			<span style="color:#919191;font-family:微软雅黑;font-size:13px;"><strong>远控软件:</strong></span><span style="color:#000000;font-family:微软雅黑;font-size:13px;">%远程控制显示%</span></div>
		<form><input type="submit" id="Button6" value="开关" style="position:absolute;left:334px;top:129px;width:65px;height:21px;z-index:23;">
		</form>

			<input type="submit" id="Button7" value="全屏截图" style="position:absolute;left:12px;top:211px;width:78px;height:24px;z-index:6;">
			<input type="submit" id="Button8" value="清理内存" style="position:absolute;left:114px;top:211px;width:78px;height:24px;z-index:7;">
			<input type="submit" id="Button9" value="%重启读秒%%重启电脑显示%" style="position:absolute;left:217px;top:211px;width:78px;height:24px;z-index:8;">
			<input type="submit" id="Button10" value="%关机读秒%%关闭电脑显示%" style="position:absolute;left:321px;top:211px;width:78px;height:24px;z-index:16;">
			<input type="submit" id="Button11" value="查看截图" style="position:absolute;left:12px;top:265px;width:78px;height:24px;z-index:12;">
			<input type="submit" id="Button13" value="取消重启" style="position:absolute;left:217px;top:265px;width:78px;height:24px;z-index:20;">
			<input type="submit" id="BtnMediaNext" value="下一首" class="custom1" onclick='window.location.href=("/MediaNext")'>
			<input type="submit" id="BtnMediaPrev" value="上一首" class="custom1" onclick='window.location.href=("/MediaPrev")'>
			<input type="submit" id="BtnMediaStop" value="暂停/继续" class="custom1" onclick='window.location.href=("/MediaStop")'>
			<input type="submit" id="MusicTitle" value="%MusicTitle%" class="custom_title">

			<input type="range" id="rangeChangeVolume" min="0" max="100" step="1" value="%NowSystemVolume%" style="width:80`%;padding:30px 10px;" onchange='updateSystemVolume(this.value)'/>
			<input type="submit" id="Button14" value="%结束服务读秒%%结束服务显示%" style="position:absolute;left:321px;top:265px;width:78px;height:24px;z-index:21;">

		<div id="wb_Text10" style="position:absolute;left:169px;top:10px;width:73px;height:18px;text-align:center;z-index:26;">
			<span style="color:#000000;font-family:微软雅黑;font-size:17px;"><strong>进程状态</strong></span>
		</div>
		<hr id="Line2" style="position:absolute;left:19px;top:14px;width:136px;z-index:27;">
		<hr id="Line3" style="position:absolute;left:256px;top:14px;width:135px;z-index:28;">
		<div id="wb_Text11" style="position:absolute;left:168px;top:171px;width:73px;height:18px;text-align:center;z-index:29;">
			<span style="color:#000000;font-family:微软雅黑;font-size:17px;"><strong>全局控制</strong></span>
		</div>
		<hr id="Line1" style="position:absolute;left:18px;top:175px;width:136px;z-index:30;">
		<hr id="Line4" style="position:absolute;left:255px;top:175px;width:135px;z-index:31;">
		<div id="wb_Text12" style="position:absolute;left:168px;top:475px;width:73px;height:18px;text-align:center;z-index:32;">
			<span style="color:#000000;font-family:微软雅黑;font-size:17px;"><strong>主机状态</strong></span>
		</div>
		<hr id="Line5" style="position:absolute;left:18px;top:479px;width:136px;z-index:33;">
		<hr id="Line6" style="position:absolute;left:255px;top:479px;width:135px;z-index:34;">
		<div id="wb_Text7" style="position:absolute;left:11px;top:513px;width:180px;height:17px;z-index:24;">

			<span style="color:#919191;font-family:微软雅黑;font-size:15px;"><strong>系统名称:</strong></span><span style="color:#000000;font-family:Calibri;font-size:15px;">%系统名称显示%</span>
		</div>
		<div id="wb_Text8" style="position:absolute;left:201px;top:513px;width:180px;height:17px;z-index:25;">
			<span style="color:#919191;font-family:微软雅黑;font-size:15px;"><strong>CPU使用率:</strong></span><span style="color:#000000;font-family:微软雅黑;font-size:15px;">%CPU使用率显示% `%</span>
		</div>
		<div id="wb_Text13" style="position:absolute;left:12px;top:542px;width:177px;height:17px;z-index:35;">
			<span style="color:#919191;font-family:微软雅黑;font-size:15px;"><strong>内存大小:</strong></span><span style="color:#000000;font-family:微软雅黑;font-size:15px;">%内存大小显示% GB</span>
		</div>
		<div id="wb_Text14" style="position:absolute;left:200px;top:542px;width:180px;height:17px;z-index:36;">
			<span style="color:#919191;font-family:微软雅黑;font-size:15px;"><strong>内存占用率:</strong></span><span style="color:#000000;font-family:微软雅黑;font-size:15px;">%内存占用率显示% `%</span>
		</div>
		<div id="wb_Text15" style="position:absolute;left:12px;top:571px;width:180px;height:17px;z-index:37;">
			<span style="color:#919191;font-family:微软雅黑;font-size:15px;"><strong>C盘存储状态</strong></span>
		</div>
		<div id="wb_Text9" style="position:absolute;left:200px;top:571px;width:218px;height:17px;z-index:38;">
			<span style="color:#919191;font-family:微软雅黑;font-size:15px;"><strong>可用空间:</strong></span><span style="color:#000000;font-family:微软雅黑;font-size:15px;">%可用空间显示% GB/%总容量显示% GB</span>
		</div>
		<hr id="Line1" style="position:absolute;left:18px;top:615px;width:136px;z-index:30;">
		<hr id="Line4" style="position:absolute;left:255px;top:615px;width:135px;z-index:31;">
		<div id="wb_Text12" style="position:absolute;left:168px;top:615px;width:73px;height:18px;text-align:center;z-index:32;">
			<span style="color:#000000;font-family:微软雅黑;font-size:17px;"><strong>媒体播放</strong></span>
		</div>
	<textarea id="CopyTextArea1" style="position:absolute;left:-11px;top:-11px;width:1px;height:1px;">%编辑框返回值显示%</textarea>
	<script>
	//以下是点击按钮对应跳转的代码
	window.onload = function () {
		var div = document.querySelector("div");
		document.querySelector("#Button1").onclick = function () {
			if (window.confirm('确定要开关定时任务吗?'))
				window.location.href='/DingShi_OnOff'; ;return false;
		}
		document.querySelector("#Button2").onclick = function () {
			if (window.confirm('确定要关闭浏览器吗?'))
				window.location.href='/LiuLanQi_OnOff'; ;return false;
		}
		document.querySelector("#Button3").onclick = function () {
			if (window.confirm('确定要开关QQ吗?'))
				window.location.href='/QQ_OnOff'; ;return false;
		}
		document.querySelector("#Button4").onclick = function () {
			if (window.confirm('确定要改变电脑音量状态吗?'))
				window.location.href='/JingYin_onoff'; ;return false;
		}
		document.querySelector("#Button5").onclick = function () {
			if (window.confirm('确定要开关虚拟机吗?'))
				window.location.href='/XvNiJi_OnOff'; ;return false;
		}
		document.querySelector("#Button6").onclick = function () {
			if (window.confirm('确定要开关其它远控软件吗?'))
				window.location.href='/YuanChengKongZhi_OnOff'; ;return false;
		}
		document.querySelector("#Button7").onclick = function () {
			if (window.confirm('确定要全屏截图吗?'))
				window.location.href='/QuanPingJieTu'; ;return false;
		}
		document.querySelector("#Button8").onclick = function () {
			if (window.confirm('确定要清理内存吗?【Win7以下不支持】'))
				window.location.href='/QingLiNeiCun'; ;return false;
		}
		document.querySelector("#Button9").onclick = function () {
			if (window.confirm('确定要延时重启电脑吗?'))
				window.location.href='/ChongQiPC'; ;return false;
		}
		document.querySelector("#Button10").onclick = function () {
			if (window.confirm('确定要延时关闭电脑吗?'))
				window.location.href='/GuanBiPC'; ;return false;
		}
		document.querySelector("#Button11").onclick = function () {
				window.location.href='/ChaKanJieTu'; ;return false;
		}
		document.querySelector("#Button13").onclick = function () {
			//取消延时关机、重启,直接取消不用确认
				window.location.href='/QuXiaoChongQi'; ;return false;
		}
		document.querySelector("#Button14").onclick = function () {
				window.location.href='/JieShuHTTP'; ;return false;
		}
		document.querySelector("#Button15").onclick = function () {
			if (window.confirm('要清理在用的新建脚本进程吗?'))
				window.location.href='/QingLiJinCheng'; ;return false;
		}
	}
	function updateSystemVolume(volume) {
		// 使用 JavaScript 获取滑块的值并构建新的 URL
		var newURL = "/AdjustVolume?volume=" + volume;
		
		// 将浏览器重定向到新的 URL
		window.location.href = newURL;
	}
			</script>
		</body>
	</html>
	)
    res.SetBodyText(主界面网页源码), res.status := 200
}

; 获取播放器的标题
GetMusicAppPlayingTitle(){
	if(WinExist("ahk_class OrpheusBrowserHost")){
		WinGetTitle, title,ahk_class OrpheusBrowserHost
		Return title
	}else{
		Return "未知播放器"
	}
}

; 获取系统的音量
GetSystemVolume(){
	SoundGet, OutputVar
	Return OutputVar
}

; 右键托盘调出菜单时,会暂停线程
加载托盘菜单:
Menu, Tray, NoStandard
Menu, Tray, DeleteAll
Menu, Tray, UseErrorLevel
Menu, Tray, Add, 重启HTTP(&R), 重启脚本
if A_OSVersion in WIN_VISTA,WIN_2003,WIN_XP,WIN_2000
    Menu, Tray, Icon, 重启HTTP(&R), shell32.dll, 147, 16
  else
    Menu, Tray, Icon, 重启HTTP(&R), shell32.dll, 239, 16
Menu, Tray, Add,
Menu, Tray, Add, 编辑脚本(&E), 编辑脚本
Menu, Tray, Icon, 编辑脚本(&E), C:\Windows\System32\notepad.exe, 1, 16
Menu, Tray, Add,
Menu, Tray, Add, 语法帮助(&H), AHK在线帮助文档
Menu, Tray, Icon, 语法帮助(&H), shell32.dll, 24, 16
Menu, Tray, Add,
Menu, Tray, Add, 关于脚本(&A), HTTP关于界面
Menu, Tray, Icon, 关于脚本(&A), shell32.dll, 222, 16
Menu, Tray, Add,
Menu, Tray, Add, 关闭HTTP(&X), 关闭脚本
Menu, Tray, Icon, 关闭HTTP(&X), shell32.dll, 132, 16
Menu, Tray, Color, ffffff
Menu, Tray, Default, 关闭HTTP(&X)
Return

AHK在线帮助文档:
Run https://www.autoahk.com/help/autohotkey/zh-cn/docs/AutoHotkey.htm
Return

编辑脚本:
Run "C:\Windows\System32\notepad.exe" "%A_ScriptFullPath%"
Return

重启脚本:
Reload

关闭脚本:
ExitApp

HTTP关于界面:
Gui, HTTP_About:New, -MaximizeBox -MinimizeBox
Gui, HTTP_About:Margin, , 16
Gui, HTTP_About:Add, Picture, w48 h-1 Icon18, shell32.dll
Gui, HTTP_About:Font, S12 Bold
Gui, HTTP_About:Add, Text, x+10 yp+1 vTAppName Section,   HTTP 远程控制台
Gui, HTTP_About:Font
Gui, HTTP_About:Add, Text, xs+4 y+10, 仅限于技术交流,切勿用于非法用途
Gui, HTTP_About:Add, Text, xs+8 y+10, 感谢:AutoHotkey|中文社区
Gui, HTTP_About:Add, Button, x116 y123 w70 Default gHTTP_AboutGuiClose, 确定
Gui, Add, Link, x78 y81, <a href="tencent://groupwpa/?subcmd=all&param=7B22457874506172616D223A7B226170704964223A223231227D2C2267726F757055696E223A3731373934373634372C2276697369746F72223A317D">QQ群:717947647</a>
Gui, HTTP_About:Add, Text, x78 y101,  Copyright (C) 2021 dbgba
GuiControlGet, rcCtrl, HTTP_About:Pos, TAppName
Gui, Add, Link,x12 y114 w60 h34, <a href="https://www.autohotkey.com/download/1.1/AutoHotkey_1.1.33.02_setup.exe">点击下载`nAHK安装包</a>
Gui, HTTP_About:Show, Autosize
Return

HTTP_AboutGuiClose:
HTTP_AboutGuiEscape:
Gui, HTTP_About:Destroy
Return

; 需要加载调用的脚本库文件,请勿改动
#Include %A_ScriptDir%\Lib\AHKhttp.ahk ; https://github.com/Skiouros/AHKhttp/blob/master/AHKhttp.ahk
#Include %A_ScriptDir%\Lib\AHKsock.ahk ; https://github.com/jleb/AHKsock/blob/master/AHKsock.ahk
#Include %A_ScriptDir%\Lib\ImagePut.ahk ; https://github.com/iseahound/ImagePut
#Include %A_ScriptDir%\Lib\RunCMD.ahk ; https://www.autohotkey.com/boards/viewtopic.php?t=74647
#Include %A_ScriptDir%\Lib\FindText.ahk ; https://blog.csdn.net/xshlong1981/article/details/103324372
#Include %A_ScriptDir%\Lib\多线程互相通信和系统显示.ahk ; 新进程控制更多使用方法请查看此脚本

给TA捐赠
共{{data.count}}人
人已捐赠
案例

win11 新电脑配置

2023-10-9 9:09:07

案例

ahk简易辅助挂机冒险岛脚本

2023-10-30 9:51:35

2 条回复 A文章作者 M管理员
  1. 速速蘑菇

    学习一下

  2. dbgba
    dbgba给作者打赏了¥2
个人中心
购物车
优惠劵
有新私信 私信列表
搜索