CLXX. W32api 関数

導入

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

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

注意: この拡張モジュールは PECL レポジトリに移動 されており、以下のバージョン以降 PHP にバンドルされなくなっています。 PHP 5.1.0.

警告

この拡張モジュールは、 実験的 なものです。この拡張モジュールの動作・ 関数名・その他ドキュメントに書かれている事項は、予告なく、将来的な 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
// 必要な定数を定義します。これは
// Visual Studio/Tools/Winapi/WIN32API.txt から取得できます。
define ( "MB_OK" , 0 );

// 拡張モジュールを読み込みます。
dl ( "php_w32api.dll" );

// kernel32.dll の GetTickCount 関数を登録します。
w32api_register_function ( "kernel32.dll" ,
                         
"GetTickCount" ,
                         
"long" );
                         
// User32.dll の MessageBoxA 関数を登録します。
w32api_register_function ( "User32.dll" ,
                         
"MessageBoxA" ,
                         
"long" );

// uptime 情報を取得します。
$ticks = GetTickCount ();

// それを読みやすい形式に変換します。
$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 ));

// OK ボタンと uptime のみのメッセージボックスを表示します。
MessageBoxA ( NULL ,
            
$str ,
            
"Uptime Information" ,
            
MB_OK );
?>
目次
w32api_deftype  -- 他の w32api_functions で使用するために型を定義する
w32api_init_dtype  -- データ型 typename のインスタンスを作成し、そこに渡された値を代入する
w32api_invoke_function  -- 関数名の後ろに指定された引数を指定し、関数 funcname を実行する
w32api_register_function  -- ライブラリの関数 function_name を PHP に登録する
w32api_set_call_method  -- 使用するコール方式を設定する