我想检测,那是 chrome 打开,但我不知道该怎么做。
这是在一个程序中,可以检测我弟弟观看 YT 视频的次数。
Godot 不允许退出“user://”
如果你有 Windows 10 作为操作系统,你可以从 Godot 调用 powershell 来制作它。在 powershell 中,要获取 chrome 进程列表,请使用get-process chrome
,您将看到如下内容:
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName
------- ------ ----- ----- ------ -- -- -----------
343 19 31404 57972 0,88 2664 2 chrome
259 17 22972 43920 0,34 2972 2 chrome
529 29 76956 65512 1,00 3576 2 chrome
238 17 24148 46548 0,55 5480 2 chrome
219 15 13084 23128 0,22 7676 2 chrome
136 11 1992 8724 0,05 7924 2 chrome
161 9 1676 6484 0,03 10200 2 chrome
230 16 16504 33064 0,17 13252 2 chrome
415 21 14372 30508 5,45 14836 2 chrome
195 8717 44248 27944 0,75 15520 2 chrome
1290 49 72020 129948 14,66 17652 2 chrome
如果你写get-process chrome | measure-object -line
,你可以得到行数:
Lines Words Characters Property
----- ----- ---------- --------
11
最后,如果你写,get-process chrome | measure-object -line | select Lines -expandproperty Lines
你只会看到行数:
11
现在,在 Godot 中应用它:
func _is_chrome_active() -> bool:
var chrome_active = false
if OS.get_name() == "Windows": # Verify that we are on Windows
var output = []
# Execute "get-process" in powershell and save data in "output":
OS.execute('powershell.exe', ['/C', "get-process chrome | measure-object -line | select Lines -expandproperty Lines"], true, output)
var result = output[0].to_int()
chrome_active = result > 0 # If there is more than 0 chrome processes, it will be true
print("Number of chrome processes: " + str(result))
return chrome_active
在这里,它用于OS.execute
打开powershell并发送命令。结果将output
作为Array
. 从 中取出第一个(也是唯一的)元素并将其转换为带有 line 的数字var result = output[0].to_int()
。之后,将该值与 0 进行比较,以了解是否正在执行某个 chrome 进程。如果有一些 chrome 进程处于活动状态,则此函数返回 true,否则返回 false。
现在,您可以从 Timer 调用它并计算打开 chrome 所经过的时间。