我想检测到铬被打开了,但是我不知道该怎么做。
这是在一个程序中,该程序可以检测我的弟弟观看了YT视频的数量。
Godot不允许离开“ user://”
答案 0 :(得分:1)
如果您使用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
变量中。从中获取第一个(唯一的)元素,并用行var result = output[0].to_int()
将其转换为数字。之后,将该值与0进行比较,以了解是否正在执行某些Chrome处理。
如果有活动的chrome进程,此函数返回true,否则返回false。
现在,您可以从计时器中调用它,并计算打开chrome后经过的时间。