2011-08-24 5 views
0

파이썬 2.7을 사용할 때 tskill 작업이 파이썬 스크립트를 통해 잘 작동했지만 2.5로 전환하면이 코드가 실패합니다. Python 2.5 및 Tskill

import os 
import time 
import win32com.client 
os.startfile('cmd') 
shell = win32com.client.Dispatch("WScript.Shell") 
shell.AppActivate('Administrator:C:\Windows\System32\cmd.exe') 
time.sleep(2) 
shell.SendKeys('tskill java + {ENTER}') 
time.sleep(2) 
shell.Sendkeys('tskill javaw + {ENTER}') 
#shell.SendKeys('exit + {ENTER}') 

나는 열리고 응용 프로그램을 (그것은 그래픽 도구입니다)를 실행 파이썬 스크립트를 실행 os.startfile를 사용합니다.

참고 :이 스크립트가 호출 될 때까지 이미 응용 프로그램이 실행 중이므로 여기서 열 필요가 없습니다.

파이어 폭스 2.5에서 이와 비슷한 방법으로 성공적으로 응용 프로그램을 닫는 방법을 알려줄 수 있습니까? 도와 주셔서 감사합니다!

답변

0

저는 시스템에 tskill이 없지만 taskkill /F /FI "IMAGENAME eq java*"과 비슷하다고 생각합니다. 어쨌든, 여기에 백그라운드에서 정상 콘솔 응용 프로그램 (예 : 숨겨진 창) 서브 프로세스 모듈 사용 (파이썬 2.5.2에서 테스트를 대신 taskkill를 사용)를 호출하는 방법은 다음과 같습니다

import subprocess 

def tskill(*args): 
    si = subprocess.STARTUPINFO() 
    si.dwFlags |= subprocess.STARTF_USESHOWWINDOW 
    command = ('tskill',) + args 
    rc = subprocess.call(command, startupinfo=si) 
    return rc == 0 

if tskill('java') and tskill('javaw'): 
    #success 

내가 때문에 call을 사용 만 호출이 성공했는지 실패했는지는 중요하지만 일반적으로 subprocess.PIPE을 사용하여 subprocess.Popen을 사용하여 stdout 및 stderr를 캡처 할 수 있습니다.

편집 : 어떻게 프로세스를 종료하는 방법은

command = ['path/to/executable', 'arg0', 'arg1', '...'] 
p = subprocess.Popen(command) 
#do something 

#kill if it's still alive 
if p.poll() is None: 
    p.kill() 
+0

은 어떻게 생각 독립적 인 스크립트로이를 실행합니까 서브 프로세스 모듈과 함께 시작? 메소드를 파일에 저장하고'tskill ('java')'로 호출하면됩니까? – dawnoflife

+0

나는 응용 프로그램을 열고 실행하는 메인 파이썬 스크립트를 가지고 있는데, 이것은 Processing이라고 부른다. 이제 해당 응용 프로그램을 닫고 별도의 파이썬 스크립트를 사용하여 응용 프로그램을 종료해야합니다. 그 스크립트를 tskill하려고하면, 작동하지 않습니다. 반면에 cmd에 직접 가면 작동합니다. 파이썬 2.5와 관련된 것입니다. 2.7로 할 수 있습니다. 그래서 내 질문은 Python 스크립트를 통해이 코드를 사용하는 방법입니다? 죄송합니다. 너무 오래 걸리면! – dawnoflife

+0

'os.startfile'으로 처리하기 시작합니다. – dawnoflife