양쪽 이전 판이전 판다음 판 | 이전 판 |
project:peekwindow [2015/08/08 19:29] – [설명] changwoo | project:peekwindow [2015/08/08 20:22] (현재) – [설명] changwoo |
---|
| |
우선 제대로 이벤트를 던지면 p_buf에는 각 항목의 텍스트가 복사됩니다. WinAPI가 여기까지는 해 줍니다. 그 다음 | 우선 제대로 이벤트를 던지면 p_buf에는 각 항목의 텍스트가 복사됩니다. WinAPI가 여기까지는 해 줍니다. 그 다음 |
''__read_from_buffer()'' 메소드가 호출됩니다. 여기서 [[https://msdn.microsoft.com/ko-kr/library/windows/desktop/ms680553%28v=vs.85%29.aspx|ReadProcessMemory()]] 함수를 이용해 p_buf의 메모리를 다시 파이썬 스크립트 프로세스 쪽의 메모리 공간, extraction_buffer로 재차 복사합니다. 다른 프로세스에서 데이터를 끌어 오는 거라 좀 번거롭죠. extraction_buffer의 값을 드디어 파이썬 리스트가 받아 저장합니다. | ''<nowiki>__read_from_buffer()</nowiki>'' 메소드가 호출됩니다. 여기서 [[https://msdn.microsoft.com/ko-kr/library/windows/desktop/ms680553%28v=vs.85%29.aspx|ReadProcessMemory()]] 함수를 이용해 p_buf의 메모리를 다시 파이썬 스크립트 프로세스 쪽의 메모리 공간, extraction_buffer로 재차 복사합니다. 다른 프로세스에서 데이터를 끌어 오는 거라 좀 번거롭죠. extraction_buffer의 값을 드디어 파이썬 리스트가 받아 저장합니다. |
| |
리스트의 각 항목을 선택하려면 [[https://msdn.microsoft.com/ko-kr/library/windows/desktop/bb761196%28v=vs.85%29.aspx|LVM_SETITEMSTATE]] 이벤트를 던져 주어야 합니다. 이 때 LVITEM 구조체는 이렇게 되어 있어야 합니다. | 리스트의 각 항목을 선택하려면 [[https://msdn.microsoft.com/ko-kr/library/windows/desktop/bb761196%28v=vs.85%29.aspx|LVM_SETITEMSTATE]] 이벤트를 던져 주어야 합니다. 이 때 LVITEM 구조체는 이렇게 되어 있어야 합니다. |
<code python control_picker.py> | <code python control_picker.py> |
# -*- coding: utf-8 | # -*- coding: utf-8 |
# Application 내부의 모든 윈도우 객체를 나열합니다. | |
import win32gui | import win32gui |
import pywintypes | import pywintypes |
print "None selected again." | print "None selected again." |
print "Done!" | print "Done!" |
| |
</code> | </code> |
| |
| === 설명 === |
| |
| {{:project:subrenamer.png?nolink&600|}} |
| |
| 위 그림이 SubRenamer입니다. [[https://www.wxwidgets.org/|wxWidget]]을 이용하 C++ 버전으로 제작한 것인데 바이너리만 남고 소스가 어딨는지... 알 수 없네요. m( 보다시피 두 개의 ListView 컨트롤이 있습니다. 위쪽의 ID는 0x3EC, 아래쪽이 0x3ED입니다. Spy++로 확인 가능합니다. |
| |
| 이 프로그램은 동영상과 자막을 맞춰주는 프로그램입니다. [[.:pysubrenamer|파이썬 버전으로도 문서를 만들었으니]] 참고하기 바랍니다. 이 프로그램은 간단하게 폴더 안에 같은 이름으로 mp4, avi, mkv 같은 동영상 확장자와 smi 확장자 한 쌍이 맞춰져 있는지를 확인합니다. 짝이 맞지 않으면 동영상은 위쪽 리스트에, 자막은 아래쪽 리스트에 표시됩니다. 실제 동영상이 아니어도 괜찮습니다. 0바이트짜리 파일을 만들어 적당히 video_001.mp4, video_002.mp4 이런 식으로 가짜 동영상 파일만 서너개 만든 후, 아래쪽의 'scan' 버튼만 눌러 보면 바로 결과를 확인할 수 있습니다. |
| |
| {{:project:subrenamer_capture_01.png?nolink|}} |
| |
| control picker 스크립트도 subrenamer 프로그램을 상대로 제작했습니다. 스크립트를 실행하면 subrenamer 창을 찾고, 창을 가장 위로 올린 다음, 리스트 컨트롤의 항목을 선택하는 데모를 보여 줍니다. |
| |