CXV. W32api関数

導入

この拡張モジュールは、DLLへの一般的な拡張APIです。この拡張モジュー ルはもともとPHPからWin32 APIにアクセスできるようにするために作 成されましたが、他のDLLによりエクスポートされている他の関数にもア クセスすることができます。

現在、サポートされている型は一般のPHP型(文字列, boolean, float, 整数, NULL)とw32api_deftype()で定義した型です。

警告

このモジュールは、 実験的なものです。これは、これらの関数の動作、関 数名は、このドキュメントに書かれて事項と同様に告知なく将来的なPHPのリ リースで変更される可能性があります。注意を喚起するとともに、このモジュー ルは使用者のリスクで使用して下さい。

要件

この拡張モジュールはWindowsシステムでのみ動作します。

インストール手順

これらの関数はPHPコアに含まれるため、使用す る際にインストールは不要です。

実行用の設定

この拡張モジュールは設定ディレクティブを全く 定義しません。

リソース型

この拡張モジュールは、1種類のリソース型を定義し、ユーザ定義型で使 用されます。このリソースの名前は、"dynaparm"で す。

定義済みの定数

これらの定数は、この拡張モジュールで定義されており、 この拡張モジュールがPHP内部にコンパイルされているか実行時に動的にロー ドされるかのどちらかの場合のみ使用可能です。

DC_MICROSOFT (integer)

DC_BORLAND (integer)

DC_CALL_CDECL (integer)

DC_CALL_STD (integer)

DC_RETVAL_MATH4 (integer)

DC_RETVAL_MATH8 (integer)

DC_CALL_STD_BO (integer)

DC_CALL_STD_MS (integer)

DC_CALL_STD_M8 (integer)

DC_FLAG_ARGPTR (integer)

以下の例は、システムの実行時間を取得し、メッセージボックスに表示 するものです。

例 1. uptimeを取得し、メッセージボックスに表示する

<?php
// Define constants needed, taken from
// Visual Studio/Tools/Winapi/WIN32API.txt
define("MB_OK", 0);

// Load the extension in
dl("php_w32api.dll");

// Register the GetTickCount function from kernel32.dll
w32api_register_function("kernel32.dll",
                         
"GetTickCount",
                         
"long");
                         
// Register the MessageBoxA function from User32.dll
w32api_register_function("User32.dll",
                         
"MessageBoxA",
                         
"long");

// Get uptime information
$ticks = GetTickCount();

// Convert it to a nicely displayable text
$secs  = floor($ticks / 1000);
$mins  = floor($secs / 60);
$hours = floor($mins / 60);

$str = sprintf("You have been using your computer for:".
                
"\r\n %d Milliseconds, or \r\n %d Seconds".
                
"or \r\n %d mins or\r\n %d hours %d mins.",
                
$ticks,
                
$secs,
                
$mins,
                
$hours,
                
$mins - ($hours*60));

// Display a message box with only an OK button and the uptime text
MessageBoxA(NULL,
            
$str,
            
"Uptime Information",
            
MB_OK);
?>
目次
w32api_deftype -- 他のw32api_functionsで使用するために型を定義する
w32api_init_dtype --  データ型typenameのインスタンスを作成し、val1, val2, 関数の値で埋 める
w32api_invoke_function --  関数名の後ろで指定された引数を指定して関数funcnameを実行する
w32api_register_function --  PHPを保持するライブラリから関数function_nameを登録する
w32api_set_call_method -- カレントメソッドの使用値を設定する