복붙노트

[PYTHON] Win32 API를 파이썬과 함께 사용하는 방법?

PYTHON

Win32 API를 파이썬과 함께 사용하는 방법?

파이썬에서 win32 API를 사용하려면 어떻게해야합니까? 가장 쉽고 쉬운 방법은 무엇입니까? 몇 가지 예를 제공해 주실 수 있습니까?

해결법

  1. ==============================

    1.PyWin32는 갈 길이지만 사용법은 무엇입니까? 한 가지 방법은 구체적인 문제로 시작하여 문제를 해결하는 것입니다. PyWin32는 많은 Win32 API 함수에 대한 바인딩을 제공하며, 실제로 특정 목표를 먼저 선택해야합니다.

    PyWin32는 갈 길이지만 사용법은 무엇입니까? 한 가지 방법은 구체적인 문제로 시작하여 문제를 해결하는 것입니다. PyWin32는 많은 Win32 API 함수에 대한 바인딩을 제공하며, 실제로 특정 목표를 먼저 선택해야합니다.

    내 Python 2.5 설치 (Windows의 ActiveState)에서는 win32 패키지에 라이브러리의 다양한 부분에 대한 샘플 코드가 들어있는 Demos 폴더가 있습니다.

    예를 들어 CopyFileEx.py는 다음과 같습니다.

    import win32file, win32api
    import os
    
    
    def ProgressRoutine(TotalFileSize, TotalBytesTransferred, StreamSize, StreamBytesTransferred,
        StreamNumber, CallbackReason, SourceFile, DestinationFile, Data):
        print Data
        print TotalFileSize, TotalBytesTransferred, StreamSize, StreamBytesTransferred, StreamNumber, CallbackReason, SourceFile, DestinationFile
        ##if TotalBytesTransferred > 100000:
        ##    return win32file.PROGRESS_STOP
        return win32file.PROGRESS_CONTINUE
    
    temp_dir=win32api.GetTempPath()
    fsrc=win32api.GetTempFileName(temp_dir,'cfe')[0]
    fdst=win32api.GetTempFileName(temp_dir,'cfe')[0]
    print fsrc, fdst
    
    f=open(fsrc,'w')
    f.write('xxxxxxxxxxxxxxxx\n'*32768)
    f.close()
    ## add a couple of extra data streams
    f=open(fsrc+':stream_y','w')
    f.write('yyyyyyyyyyyyyyyy\n'*32768)
    f.close()
    f=open(fsrc+':stream_z','w')
    f.write('zzzzzzzzzzzzzzzz\n'*32768)
    f.close()
    
    operation_desc='Copying '+fsrc+' to '+fdst
    win32file.CopyFileEx(fsrc, fdst, ProgressRoutine, operation_desc, False,   win32file.COPY_FILE_RESTARTABLE)
    

    CopyFileEx 함수를 GetTempPath 및 GetTempFileName과 같은 몇 가지 다른 함수와 함께 사용하는 방법을 보여줍니다. 이 예제에서이 라이브러리로 작업하는 방법에 대한 "일반적인 느낌"을 얻을 수 있습니다.

  2. ==============================

    2.@chaos에 언급 된 PyWin32는 아마도 가장 인기있는 선택 일 것이다. 대안은 파이썬의 표준 라이브러리의 일부인 ctypes입니다. 예를 들어 print ctypes.windll.kernel32.GetModuleHandleA (None)은 현재 모듈 (EXE 또는 DLL)의 모듈 핸들을 표시합니다. Win32 API를 사용하기 위해 ctypes를 사용하는보다 광범위한 예제가 있습니다.

    @chaos에 언급 된 PyWin32는 아마도 가장 인기있는 선택 일 것이다. 대안은 파이썬의 표준 라이브러리의 일부인 ctypes입니다. 예를 들어 print ctypes.windll.kernel32.GetModuleHandleA (None)은 현재 모듈 (EXE 또는 DLL)의 모듈 핸들을 표시합니다. Win32 API를 사용하기 위해 ctypes를 사용하는보다 광범위한 예제가 있습니다.

  3. ==============================

    3.Win32 Python에서 사용할 수있는 중요한 기능은 메시지 상자입니다. 이것은 OK 또는 Cancel의 전형적인 예입니다.

    Win32 Python에서 사용할 수있는 중요한 기능은 메시지 상자입니다. 이것은 OK 또는 Cancel의 전형적인 예입니다.

    result = win32api.MessageBox(None,"Do you want to open a file?", "title",1)
    
    
    
      if result == 1:
         print 'Ok'
      elif result == 2:
         print 'cancel'
    

    컬렉션 :

    win32api.MessageBox(0,"msgbox", "title")
    win32api.MessageBox(0,"ok cancel?", "title",1)
    win32api.MessageBox(0,"abort retry ignore?", "title",2)
    win32api.MessageBox(0,"yes no cancel?", "title",3)
    
  4. from https://stackoverflow.com/questions/1025029/how-to-use-win32-apis-with-python by cc-by-sa and MIT license