現在、PHP5でWindows APIを使用する方法を模索中です…。
マニュアルのこの辺りの情報から、従来のPHP4の php_w32api.dll が、PHP5では php_ffi.dll に置き換えられたらしいことがわかって、
PECL4WIN(Windows用のPECLのサイト)のここから5.0.5用のモジュールを入手して(5.1以降の環境ではモジュールが認識されないようです)、
php/ext ディレクトリに放り込んで、iniファイルに一行追記して、いざ使ってみたのですが…、
Windows APIの使い方がわかりませんorz。
やりたいことは、アクセスしたユーザのWindowsへのログオンIDを取得することで、
$windows = new ffi ("[lib='user32.dll'] int MessageBoxA( int handle, char *text, char *caption, int type );" );
echo $windows->MessageBoxA(0, "Message For You", "Hello World", 1);
上記のコードは正常にMessageBoxが表示されるので、Windows API の呼び出しはできているようなのですが、
$windows = new ffi ("[lib='advapi32.dll'] long GetUserName(string &a, int &b);" );
$name = "";
$windows->GetUserName($name, 100);
echo $name;
こちらのコードは、
Fatal error: Call to undefined method FFI::GetUserName()
となってしまいます…。
どなたか詳しい方がいたら、どこがおかしいのかご教授くださいませ……。

