« DELPHI 2009 HANDBOOKはどこで買える? | メイン | C++ Builder 2009で、DLLのデバッグにPythonを利用する »

Python で Win32API プログラミング入門

Perl で Win32::API プログラミング入門 を参考にしました。

Python 2.5以降には、ctypes が付属しているので、 今日からすぐに Win32API を利用したプログラミングが出来ます。

# ctypesは、動的リンク/共有ライブラリ内の関数呼び出しを可能にします。
# Linuxなど、Windows以外のOSでも使用することができます。

簡単なメッセージボックスを表示するPythonプログラムは以下になります。

#!C:\Python26\python
# -*- coding: cp932 -*-
import ctypes
ctypes.windll.user32.MessageBoxA(0, 'Hello, World!', 'Message', 0)
# ユニコード版
# ctypes.windll.user32.MessageBoxW(0, u'Hello, World!', u'Message', 0)

このプログラム実行すると、「Hello, World!」と書かれたWindowsメッセージボックスが表示されます。

任意のDLLを扱う場合は、ctypes.windll.LoadLibraryを使用します。

test.dllのソースコード

#include <windows.h>
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
  return 1;
}
__declspec(dllexport) int WINAPI Add(int x, int y)
{
  return x + y;
}

test.dllを扱うPythonスクリプト

#!C:\Python26\python
# -*- coding: cp932 -*-
from ctypes import windll
from ctypes.util import find_library
# dllのパスの取得
path = find_library("test")
# dllの読み込み
dll = windll.LoadLibrary(path)
# dll内の関数の実行
print dll.Add(1, 2) #=> 3

ctypes はとっても便利なモジュールですね。

トラックバック

このエントリーのトラックバックURL:
http://www.gesource.jp/mt/mt-tb.cgi/938

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

About

2009年03月25日 17:37に投稿されたエントリーのページです。

ひとつ前の投稿は「DELPHI 2009 HANDBOOKはどこで買える?」です。

次の投稿は「C++ Builder 2009で、DLLのデバッグにPythonを利用する」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

Powered by
Movable Type 3.35