燈明日記 このページをアンテナに追加 RSSフィード

ごあいさつ

燈明日記へようこそ!!

燈明日記の主なテーマは、以下の通りです。

そして、燈明日記へ来られたのも『私』と『あなた』の何かのご縁です。なので、どうぞごゆっくりご覧下さい!


2009/4/11(土)

[] PerlでWindowsAPIをコールする

前回、『Perl で Win32::API プログラミング入門』リンクメモでのお約束(暇な時にソース解析)、とりあえず前半部だけソース解析をしてみました。

#!/usr/bin/perl
use Win32::API;
my $MessageBox = Win32::API->new("user32", "MessageBoxA", "NPPN", "N");
   $MessageBox->Call(0, "Hello, World!\n", "Message", 0);
http://d.hatena.ne.jp/TAKESAKO/20090324/1237879559

コンストラクタ(new)の引数は以下のようです。

  • 第1引数は、DLL(user32.dll)のライブラリの名前を指定します。
  • 第2引数は、WindowsAPIの名前を指定します。
    ちなみに、"MessageBoxA"の最後の"A"ですが、ANSI版の「MessageBoxA」とUnicode版の「MessageBoxW」の2種類が存在します。文字列系のAPIには大体この2種類があります。
  • 第3引数は、WindowsAPIの引数の属性を指定します。
    "N"はvalue is a number (long)で、"P"はvalue is a pointer (to a string, structure, etc...)です。
  • 第4引数は、WindowsAPIの戻り値の属性を指定します。
    "N"は上記と同じで、戻り値が無い時は"V"になるようです。
  • 参考リンク:他の属性に関しては以下のURLを参照のこと。
    http://search.cpan.org/~cosimo/Win32-API/API.pm

Callメソッドの引数は以下のようです。

  • 第1引数は、オーナーウィンドウ(親ウィンドウ)を指定します。
    サンプルでは『0』が指定されていますが、これは、オーナーウィンドウを持たないという意味です。
  • 第2引数は、メッセージボックスに表示するメインの文字列を指定します。
  • 第3引数は、メッセージボックスのフレームに表示されるタイトルを指定します。
  • 第4引数は、メッセージボックスの形態を表す定数を指定します。
    形態を表す定数は沢山ありますが、サンプルでの『0』はMB_OKでデフォルトです。
  • 参考リンク:他の形態を表す定数に関しては以下のURLを参照のこと。
    http://wisdom.sakura.ne.jp/system/winapi/win32/win5.html

ちなみに、Callメソッドは、WindowsAPI(今回はMessageBoxA)に対応してるようです。

つまり、CallメソッドをコールすることでWindowsAPIが実行されます。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/chaichanPaPa/20090411/1239442496
リンク元