0%

#批处理# PC平板触控开关

不知道各位有没有感觉同时打开触摸屏与触控笔会干扰触控笔操作(我的电脑是N-Trig笔,理论上Wacom也可用)所以做了一个可以控制触控屏的开关脚本,这样绘制之前一按后面的笔帽就可以关闭触控屏仅使用触控笔,需要触控屏时再按一下后面的笔帽又可以打开。

说一下原理吧, 利用devcon命令禁用/启用(disable/enable)触控屏,但是这里如果需要实时显示屏幕开启状态(通过改自己的文件名)自动提权的代码就无法被执行,因为名称改变了。所以另设置一个脚本专门显示状态,双击后再引向真正起作用的(也就是调用devcon命令)的脚本。但是这里又有一个问题,就是if exist语句不能加else(也许可以,但是我试过后怎么也不行),所以无法直接调用别的文件名。所以利用devcon显示状态的命令(statue)代替,这样就麻烦了,又是裁剪又是临时文件的,但是马马虎虎做出来了,试了下,能用。 然后把显示状态的脚本挂在桌面上,把控制脚本藏起来,创建一个快捷方式(因为windows里设置触控笔按键要么打开可执行应用要么打开快捷方式,但是脚本不是可执行文件,只好又绕远路创建快捷方式),然后在触控笔设置里把按键按一下定位到那个快捷方式就可以了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
@echo off

net session >nul 2>&1
if not "%errorLevel%" == "0" (
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
echo UAC.ShellExecute "%~s0", "%*", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
exit /b 2
)
cd C:\Users\z8442\
devcon status "HID_DEVICE_UP:000D_U:0004*">C:\data.txt
setlocal enabledelayedexpansion
for /f "delims=" %%a in (C:\data.txt) do set /a m+=1&set "_!m!=%%a"
set /a m=2
set data=!_%m%:~24,25!
if "%data%"=="running." (
cd C:\Users\z8442\
devcon disable "HID_DEVICE_UP:000D_U:0004*">nul
cd C:\Users\z8442\Desktop\
rename "Touch ON.bat" "Touch OFF.bat"
)

if "%data%"=="disabled." (
cd C:\Users\z8442\
devcon enable "HID_DEVICE_UP:000D_U:0004*">nul
cd C:\Users\z8442\Desktop\
rename "Touch OFF.bat" "Touch ON.bat"
)

del C:\data.txt

注释: 以上 ”C:\\Users\\z8442\\Desktop\\“是我的桌面地址,显示状态的脚本在我的桌面上。 “C:\\Users\\z8442\\“是存放devcon.exe的地方,当然推荐存放在C:\\Windows\\System32,这样这一句就可以省去。这里唠叨一下,这个devcon可以通过命令提示符直接控制硬件驱动状态,应该每个windows 10都有,在C:\\Program Files (x86)\\Intel\\Bluetooth\\utilities\\Devcon.exe,如果没有也可以在这里下载 从第一个cd C:\\Users\\z8442\\语句前的那一大段是来自网络的提权命令。 HID_DEVICE_UP:000D_U:0004是我的触控屏硬件id,不同电脑中触控屏的硬件id不一定相同,可以在Windows自带的设备管理器中的”人体工程学设备“中找到触控屏进而找到该id。 显示状态的脚本内容上只要能打开该脚本就可以,但对名字有特殊要求,只能是Touch ON或者Touch OFF。 下面附上不需桌面显示状态的脚本直接就能使用的脚本(但是可能需要更改硬件id)>Touch