Forum und email

W32api Functions

介紹

This extension is a generic extension API to DLLs. This was originally written to allow access to the Win32 API from PHP, although you can also access other functions exported via other DLLs.

Currently supported types are generic PHP types (strings, booleans, floats, integers and nulls) and types you define with w32api_deftype().

Note: This extension has been moved to the » PECL repository and is no longer bundled with PHP as of PHP 5.1.0.

Warning

這個延伸是實驗性質的。這個延伸的行為 -- 包括函數名稱和包含此延伸的任何其它文件 -- 在未來PHP的發行中可能會在不通知的情況改變。使用此延伸需自行承擔風險。

需求

This extension will only work on Windows systems.

安裝

這些函數是PHP核心的一部分,不需要安裝就可使用。

執行時期組態

php.ini中沒有定義此延伸的組態指令。

資源類型

This extension defines one resource type, used for user defined types. The name of this resource is "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)

範例

This example gets the amount of time the system has been running and displays it in a message box.

Example#1 Get the uptime and display it in a message box

<?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);
?>

Table of Contents