« Unicodeを駆使した顔文字 |Main| Pythonでマウスポインタの位置を取得→その周辺のスクリーンキャプチャ »

« Jython入門 | Python | Pythonでマウスポインタの位置を取得→その周辺のスクリーンキャプチャ »

PythonでAMETサーバ

AMETとは仮名漢字変換ソフトであるATOKからユーザの入力データを受け取ることのできるオートメーションサーバです。詳細はATOK技術情報を参照してください。

オートメーションの勉強がてらPythonで書いてみたところ、想像以上に短い行数で実装できたのでここで公開します。このスクリプトを実行するとAmetServクラスがオートメーションサーバとしてレジストリに登録され、他のアプリケーションから「AmetPy」の名前でアクセスが出来るようになります。以前作ったAmetMulti.pyAmetMultiに依存していたので、この技術を使って単体で動くものにしようと思っています。

なおこのソースコードを参考にオートメーションサーバを作ってみようと考えている方は http://www.roy.hi-ho.ne.jp/pastel/home/Python/Win32拡張モジュールQuick Start to Server Side COM and Pythonも読んでみるといいと思います。

#
# AMET Automation Server
#

class AmetServ:
    _public_methods_ = ['AmetStart']
    _public_attrs_ = ['AmetYomi', 'AmetHyoki', 'AmetResult', 'AmetQuit']
    _reg_progid_ = "AmetPy"
    _reg_clsid_ = "{432497D0-6AB1-4C95-864A-B360A5363364}"
    WM_USER = 0x0400
    WM_AMET_NOTIFY = WM_USER + 100
    def AmetStart(self, hWnd):
        import win32api
        self.AmetResult = ( u"AmetYomi: " + self.AmetYomi +
                            u", AmetKyoki: " + self.AmetHyoki)
        self.AmetQuit = 1
        win32api.PostMessage(hWnd, self.WM_AMET_NOTIFY)
        

if __name__ == '__main__':
	print "Registering COM server ..."
	import win32com.server.register
	win32com.server.register.UseCommandLine(AmetServ)

トラックバック(Trackback)

Trackback URL: http://www.nishiohirokazu.org/mt/mt-tb.cgi/24

ご意見・ご感想をお送りください(フィードバック)

(フィードバックはメールで送信され、基本的に表示されませんが、内容によっては公開させていただくこともございます。ご了承ください。Your comment doesn't appear the page immediately. If the comment has value to other people, it will be put on the page or subsequent entries. Thank you.)

上の情報は、いずれも未記入でかまいません。 All of above questions are optional.