CXXXI. Funções da W32api

Introdução

Essa extensão é uma API genérica de extensão para DLLs. Ela era originalmente escrita para permitir acesso à API Win32 a partir do PHP, embora você pode também acessar outras funções exportadas via outras DLLs.

Os tipos atualmente suportados são tipos genéticos do PHP (strings, booleans, floats, inteiros e nulls) e tipos que você define com a função w32api_deftype().

Atenção

Este módulo é EXPERIMENTAL. Isso quer dizer que o comportamento neste módulo --- incluindo suas funções e seus nomes, e TUDO mais que está documentado sobre esse módulo --- poderá mudar em futuras versões do PHP, SEM QUALQUER NOTIFICAÇÃO. Esteja avisado, e use este módulo por sua própria conta e risco.

Dependências

Essa extensão só funciona em sistemas Windows.

Instalação

Não há nenhuma instalação necessária para utilizar estas funções, elas fazem parte do núcleo do PHP.

Configurações em execução

Esta extensão não define nenhum parâmetro de configuração no php.ini.

Tipos Resource

Essa extensão define um tipo de recurso, usado por tipo definidos pelo usuário. O nome desse recurso é "dynaparm".

Constantes pré-definidas

As contantes abaixo são definidas por esta extensão e somente estarão disponíveis quando a extensão foi compilada com o PHP ou carregada dinamicamente durante a execução.

DC_MICROSOFT (inteiro)

DC_BORLAND (inteiro)

DC_CALL_CDECL (inteiro)

DC_CALL_STD (inteiro)

DC_RETVAL_MATH4 (inteiro)

DC_RETVAL_MATH8 (inteiro)

DC_CALL_STD_BO (inteiro)

DC_CALL_STD_MS (inteiro)

DC_CALL_STD_M8 (inteiro)

DC_FLAG_ARGPTR (inteiro)

Exemplos

Esse exemplo pega a quantidade de tempo que o sistema está executando e mostra em uma caixa de mensagem.

Exemplo 1. Pega o uptime e mostra em uma caixa de mensagem

<?php
// Define constantes necessárias, pegas do arquivo
// Visual Studio/Tools/Winapi/WIN32API.txt
define("MB_OK", 0);

// Carrega a extensão
dl("php_w32api.dll");

// Registra a função GetTickCount de kernel32.dll
w32api_register_function("kernel32.dll",
                         
"GetTickCount",
                         
"long");
                         
// Registra a função MessageBoxA de User32.dll
w32api_register_function("User32.dll",
                         
"MessageBoxA",
                         
"long");

// Pega a informação do uptime
$ticks = GetTickCount();

// Converte a informação para um formato de gente
$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));

// Mostra uma caixa de mensagem com só um botão de OK e o texto de uptime
MessageBoxA(NULL,
            
$str,
            
"Uptime Information",
            
MB_OK);
?>
Índice
w32api_deftype -- Define um tipo para ser usado com outras funções da w32api_functions
w32api_init_dtype --  Cria uma instância do tipo de dado typename e atribui ao mesmo os valores passados
w32api_invoke_function -- Invoca a função funcname com os argumentos passados após o nome da função
w32api_register_function -- Registra função function_name da biblioteca com o PHP
w32api_set_call_method -- Edita a chamada de método usada