0

関数を毎分更新して、特定のファイルが開いているかどうかを確認するにはどうすればよいのでしょうか。私はこれについてどうやって行くのか正確にはわかりませんが、ここに私が探しているものの例があります:

def timedcheck():
   if thisgame.exe is open:
      print("The Program is Open!")
   else:
      print("The Program is closed!")
      *waits 1 minute*
      timedcheck()

また、スクリプトで関数 "def timedcheck():"を毎分更新して、thisgame.exeが開いているかどうかをチェックし続けたいと思います。

私はすでにサイトを検索しましたが、すべての提案で「import win32ui」を使用することをお勧めします。これを行うと、エラーが発生します。

4

3 に答える 3

3

このチェックを毎分繰り返すには:

def timedcheck():
   while True:
       if is_open("thisgame.exe"):
          print("The Program is Open!")
       else:
          print("The Program is closed!")
       sleep(60)

exeファイルなので、「このファイルが開いているかどうかを確認する」ということは、「このgame.exeが実行されているかどうかを確認する」ことを意味すると思います。psutilが役立つはずです-以下のコードをテストしていないため、微調整が必​​要になる場合がありますが、一般的な原則を示しています。

def is_open(proc_name):
    import psutil
    for process in psutil.process_iter():
        if proc_name in process.name:
            return True
    return False
于 2013-02-03T02:49:18.243 に答える
0

チェック間の 1 分間の遅延に 60 を入力して、 time モジュールからスリープを使用できます。ファイルを一時的に開いて、不要な場合は閉じることができます。ファイルが既に開かれている場合は、IOError が発生します。例外でエラーをキャッチすると、プログラムは再試行する前にさらに 1 分間待機します。

import time
def timedcheck():
   try:
      f = open('thisgame.exe')
      f.close()
      print("The Program is Closed!")
   except IOError:
      print("The Program is Already Open!")
   time.sleep(60) #*program waits 1 minute*
   timedcheck()
于 2013-02-03T02:39:44.987 に答える
0

@ rkd91の回答のバリエーションは次のとおりです。

import time

thisgame_isrunning = make_is_running("thisgame.exe")

def check():
   if thisgame_isrunning():
      print("The Program is Open!")
   else:
      print("The Program is closed!")

while True:
    check() # ignore time it takes to run the check itself
    time.sleep(60) # may wake up sooner/later than in a minute

ここでmake_is_running():

import psutil # 3rd party module that needs to be installed

def make_is_running(program):
    p = [None] # cache running process
    def is_running():
        if p[0] is None or not p[0].is_running():
            # find program in the process list
            p[0] = next((p for p in psutil.process_iter()
                         if p.name == program), None)
        return p[0] is not None
    return is_running

psutilPython 2.7 を Windows にインストールするには、 psutil-0.6.1.win32-py2.7.exe.

于 2013-02-03T16:38:05.047 に答える