CXXXI. Funzioni W32api

Introduzione

Questa è una generica API verso le DLL. In origine fu scritta per consentire l'accesso alle API Win32 dal PHP, sebbene si possa anche accedere a funzioni esportate da altre DLL.

Attualmente i tipi di dati supportati dal modulo sono i generici tipi PHP (strings, booleans, floats, integers e null) e i tipi definiti dall'utente tramite w32api_deftype().

Avvertimento

Questo modulo è SPERIMENTALE. Ovvero, il comportamento di queste funzioni, i nomi di queste funzioni, in definitiva tutto ciò che è documentato qui può cambiare nei futuri rilasci del PHP senza preavviso. Siete avvisati, l'uso di questo modulo è a vostro rischio.

Requisiti

Questo modulo gira solo su sistemi Windows.

Installazione

Non è necessaria nessuna installazione per usare queste funzioni, esse fanno parte del core di PHP.

Configurazione di Runtime

Questa estensione non definisce alcuna direttiva di configurazione in php.ini

Tipi di risorse

Questo modulo definisce un solo tipo di risorsa utilizzata per i tipi di dati definiti dall'utente. Il nome i questa risorsa è "dynaparm".

Costanti predefinite

Queste costanti sono definite da questa estensione e sono disponibili solo se l'estensione è stata compilata nel PHP o se è stata caricata dinamicamente a runtime.

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)

Esempi

Nel seguente esempio si ottiene da quanto tempo il sistema è attivo ed il risultato viene visualizzato in una finestra.

Esempio 1. Ottenere il tempo di attività e visualizzarlo in una finestra

<?php
// Definizione delle costanti richieste, dati ottenuti da
// Visual Studio/Tools/Winapi/WIN32API.txt
define("MB_OK", 0);

// Carico il modulo
dl("php_w32api.dll");

// Registrazione della funzione GetTickCount da kernel32.dll
w32api_register_function("kernel32.dll",
                         
"GetTickCount",
                         
"long");

// Registrazione della funzione MessageBoxA da User32.dll
w32api_register_function("User32.dll",
                         
"MessageBoxA",
                         
"long");

// Ottiene il dato cercato
$ticks = GetTickCount();

// Converte in formato umano
$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));
    
// Visualizza la finestra con il bottone di OK
MessageBoxA(NULL,
            
$str,
            
"Uptime Information",
            
MB_OK);
?>
Sommario
w32api_deftype -- ...) Definisce un tipo per l'uso con altre w32api_functions
w32api_init_dtype --  Crea un'istanza ai tipi di dati typename e li riempie con i valori forniti
w32api_invoke_function -- ....) Invoca la funzione funcname con gli argomenti passati dopo il nome della funzione
w32api_register_function -- Registra la funzione function_name dalla libreria con PHP
w32api_set_call_method -- Imposta il metodo di chiamata usato

Hosting by: hurra.com
Generated: 2007-01-26 17:56:53