グラフィカル部分にwxモジュールを使用するアプリケーションを構築しようとしています。私のオペレーティングシステムはWindows10で、Pythonのバージョンは2.7です。
このアプリケーションは、誰かがコンピュータにリモート接続されているかどうかを確認し、接続されている場合はボタンの色を変更する必要があります。誰かがコンピューターに接続されているかどうかを確認するために、qwinsta呼び出しの出力を解析します。
これを指定する必要があります。このアプリケーションを実行するには、pythonwを使用します。
コードブロックは次のとおりです。
def isLocked():
process =subprocess.Popen('qwinsta',stdout=subprocess.PIPE,stderr=subprocess.PIPE,shell=True)
output,error = process.communicate()
print output
output2 = output[0:len(output)]
output2= output2.split('\n')
問題は、私が行ったサブプロセス呼び出しがエラーを返すことです。
'qwinsta'は、内部または外部コマンド、\ r \ noperableプログラムまたはバッチファイルとして認識されません。\ r \ n "" "
私は問題を見つけたと思いますが、それを解決する方法がわかりません:
このサブプロセス呼び出しは、Pythonで呼び出す場合は正常に機能します。pythonwを使用すると、失敗します。私にはそれはのように思えるpythonwの用途SYSWOW64 / cmd.exeを、そしてPythonが使用するsystem32に/ cmd.exeを。
pythonとpythonwの両方でos.environ変数を確認しましたが、COMSPEC変数は同じです。
だから私は問題の回避策を見つけました。私はまだ問題はpythonwがwindows / syswow64 /cmd.exeを使用していることだと思います。このcmdは、Syste32フォルダーにあるqwinsta.exe実行可能ファイルを実行できないようです。
*ただし、このqwista.exeは、syswow64 /cmd.exeがアクセスして実行可能ファイルを実行できるwindows / WinSxSフォルダーにもあります。
回避策 は、サブプロセスPopenにwindows / WinSxS / amd64_microsoft-windows-t..commandlinetoolsmqq_31bf3856ad364e35 ... qwinsta.exeへのパスを指定したことです。
process =subprocess.Popen('',stdout=subprocess.PIPE,stderr=subprocess.PIPE,shell=False,executable='C:\Windows\WinSxS\amd64...\qwinsta.exe')
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加