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 はとっても便利なモジュールですね。
質問です。
現在Mac使っているんですけど、windllってWindowsだけですよね
それってどうやってライブラリをMacでsetup出来るんですか?