-1

我想检测,那是 chrome 打开,但我不知道该怎么做。

这是在一个程序中,可以检测我弟弟观看 YT 视频的次数。

Godot 不允许退出“user://”

4

1 回答 1

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. 从 中取出第一个(也是唯一的)元素并将其转换为带有 line 的数字var result = output[0].to_int()。之后,将该值与 0 进行比较,以了解是否正在执行某个 chrome 进程。如果有一些 chrome 进程处于活动状态,则此函数返回 true,否则返回 false。

现在,您可以从 Timer 调用它并计算打开 chrome 所经过的时间。

于 2020-03-25T17:56:04.437 回答