1

Windows と一緒にプログラム Sabnzbd、CouchPotato、SickBeard、および Headphones を起動するために、Windows 自動起動フォルダーに 4 つの .bat ファイルがあります。これらのバッチ ファイルでは、次のような行で Python .py ファイルを実行します。

start "SABnzbd" pythonw "C:\SABnzbd\SABnzbd.py"

4 つのプログラムがすべて開始されて実行された後、Windows タスク マネージャーでそれらを確認できます。ただし、個別のプロセスを特定することはできません。それらはすべて説明と同じように識別されpythonw.exe *32ますpythonw.exe:

ここに画像の説明を入力

私がやろうとしているのは、すべてのプログラムを特定することです。それを行う方法はありますか?これは、bat ファイルにパラメーターを追加することで実行できますか? それとも、まったく違うことをするべきですか?

4

5 に答える 5

3

PythonのWMIパッケージを使用することをお勧めします(この回答を参照してください):

import wmi

c = wmi.WMI ()
for process in [p for p in c.Win32_Process () if p.Name == 'pythonw.exe']:
    print process.ProcessId, process.CommandLine
于 2013-06-30T11:26:18.870 に答える
0

バッチでは、wmic.exe (WMI コンソール) を介して WMI にアクセスできます。

wmic Path Win32_Process where Name='pythonw.exe' get ProcessId,CommandLine

ビルトインの引用符で囲まれた最初の引数startは、ウィンドウ タイトルを設定します。プロセスを見て、GUI 機能に簡単にアクセスすることはできません。それを行う Win32 API があります (この目的でAutoItを使用します) が、本来、それがどれほど簡単かはわかりません。

于 2013-07-01T03:33:13.637 に答える
0

Pyinstaller を使用して、Python スクリプト ファイルを exe ファイルにフリーズします。

次に、これらのプロセスに別のexeファイル名を付けることで識別できます。例:Sabnzbd.exe、CouchPotato.exe など。

さらに、exeファイルを提供するため、クライアントのマシンにpythonインタープリターをインストールする必要はありません

于 2013-06-30T11:29:55.087 に答える
0

出力を使用tasklistおよびフィルタリングして、特定の名前に関連するすべてのプロセス ID (PID) を取得できます。

import os
def processes(name):
    os.system('tasklist /FI "IMAGENAME eq %s" > tmp.txt' % name)
    tmp = open('tmp.txt', 'r')
    return [int(i.split()[1]) for i in tmp.readlines()[3:]]

次に、pid を使用できます。

pids = processes('pythonw.exe') # <-- the name must be exact
于 2013-06-30T10:54:33.610 に答える