2017-01-02 2 views
2

작업 관리자 [Windows 8+] 내부의 "프로세스"탭에는 현재 실행중인 모든 프로세스가 나열됩니다. MS Word 2 개 창을 열면 한 번만 표시되지만 실제로는 그룹이며 두 작업을 별도로보고 끝낼 수 있도록 확장 할 수 있습니다.작업 관리자 같은 킬

이것은 훌륭하지만 WINWORD.EXE가 나열된 "세부 정보"탭으로 이어지지는 않지만 단지 1 회 발생합니다! 따라서 오직 1 개의 PID! PID를 닫으려고하면 전체가 닫히기 때문에 PID를 공유하는 것이 문제가됩니다.

저는 특정 단어 창을 죽이고 싶습니다. 프로그램 적으로 창을 죽이려고하면 모든 단어 창을 죽이려고하지 않습니다. (현재는 taskkillimport os을 통해 Python으로 보내고, 다른 방법은 추가하지 않고 수행합니다. 모듈도 괜찮을 것입니다).

바로 지금 내가 taskkill.... "WordDoc.docx"을 실행하면 매우 열악하고 잠재적으로 데이터가 손실 될 수있는 모든 열린 단어 문서가 삭제됩니다. 작업 관리자에서 수행되는 것과 같은 "프로세스"를 종료 할 수있는 방법이 있습니까?

감사합니다

그게 문제가되지 않습니다 그래서 내가/T를 사용하고 있지 않다 PS

답변

1

프로세스 탭에서 프로세스의 단일 창을 닫을 때, 작업 관리자의 프로세스를 죽이지 않는다 창은에 속하지만 단지 해당 창에 WM_CLOSE 메시지를 보냅니다. Word 문서에서 변경 사항을 저장하고 저장하지 않을 것인지 묻는 메시지가 계속 표시되므로 Word 창이 "죽지"않은 것을 알 수 있습니다. 일반적으로 사전로드 된 모듈을 사용 어쨌든

import win32gui 

def enumHandler(hwnd, lParam): 
    if win32gui.IsWindowVisible(hwnd): 
     if 'My Word Document' in win32gui.GetWindowText(hwnd): 
      win32gui.PostMessage(hwnd, win32con.WM_CLOSE, 0, 0) 

win32gui.EnumWindows(enumHandler, None)  
+0

: 창 제목이 원하는 값과 일치하는 경우

당신은 모든 최상위 창을 열거 다음 코드를 사용하여 작업 관리자로 동일한 작업을 수행 한 다음 WM_CLOSE를 전송 할 수 있습니다 대신 tho? (귀하의 답변을 주셔서 감사합니다,하지만 만약 그것이 운영 체제는 os.ETC()와 같은 경우에도 Python과 함께 설치되어있는 무언가를 사용할 수 있다면 더 좋을 것입니다. –

+0

pst 당신은 또한 win32con을 가져와야한다 코드가 작동하지 않는다;),하지만 난 아직도 다른 사람들을위한 네이티브 솔루션을 원합니다 :) –