|
W32api FunctionsThis 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:
This extension is EXPERIMENTAL. The behaviour of this extension -- including the names of its functions and anything else documented about this extension -- may change without notice in a future release of PHP. Use this extension at your own risk.
This extension defines one resource type, used for user defined types.
The name of this resource is The constants below are defined by this extension, and will only be available when the extension has either been compiled into PHP or dynamically loaded at runtime.
This example gets the amount of time the system has been running and displays it in a message box. Example 2611. Get the uptime and display it in a message box<?php Table of Contents
Code Examples / Notes » ref.w32apichris
The win32 support appears to be pretty flaky in php. This of course is to be expected with an experimental extension. That being said, if you are having trouble using the win32 functionality you may want to look into creating a PHP extension instead. We were having some problems interfacing PHP with a 3rd party dll. As such we created an extension which wraps the interface with the aforementioned dll. The solution was surprisingly quick and painless. Because we use Delphi primarily we found the following extremely useful and easy to use. http://users.chello.be/ws36637/php4delphi.html#download more info here: http://php.us.themoes.org/manual/en/zend.creating.php me
The w32api extension -does not- work on versions of php that are not between 4.2.0 and 4.2.3. This is mentioned on the individual function's manual pages, but not on the extension's main page. Perhaps I'm just missing something, but if you want to interact with the Win32 API via PHP you have to use an outdated version, or just not bother with it at all.
23-aug-2003 09:42
The small, unofficial documentation is now available here http://wobster.mynnga.de/w32api.txt . The old link from the post above is dead. Note that the W32API doesn't seem to be under development anymore. E-Mails to the author stayed unanswered. If you really have to use it, just some hints here: There are often problems concerning Apache webservers. This extension doesn't seem to work with mod_php. I used the API on IIS5 with PHP as CGI. Additionally the IUSR_<hostname> (that's the user IIS runs php.exe by default) might need additional rights to be able to call certain API-functions. sk89q
The only way I've been able to call Win32 API functions with PHP5 has been through COM and DynamicWrapper. Get DynamicWrapper at: http://ourworld.compuserve.com/homepages/Guenter_Born/ WSHBazaar/WSHDynaCall.htm (remove new line) Here's an example to play a beep sound with your computer speaker: <?php $com = new COM("DynamicWrapper"); $com->Register("KERNEL32.DLL", "Beep", "i=ll", "f=s", "r=l"); $com->Beep(5000, 100); ?> jan kleinsorge
Or google for "win32.hlp". Almost every API-function is listed in there.
serdar_soydemir
It seems that this extension will be replaced by FFI extension in PHP5. FFI stands for "Foreign Function Interface" and it's not limited by Windows API, but also supports Linux APIs. You may reach this extension's website at http://pecl.php.net/package/ffi . For Windows, you may try this code from commandline php.exe: <?php dl ("php_ffi.dll"); $windows = new ffi ("[lib='user32.dll'] int MessageBoxA( int handle, char *text, char *caption, int type );" ); echo $windows->MessageBoxA(0, "Message For You", "Hello World", 1); ?> philip soeberg
In response to post by Jan Kleinsorge. To get the proper windows system uptime, one should use the Performance Monitoring system... GetTickCount is limited to 49.7 days, as the result is a dword. <?php if (!dl("php_w32api.dll")) { echo "Unable to load php_w32api.dll"; exit; } $api = new win32; $api->registerfunction("bool QueryPerformanceCounter (float &lpPerformanceCount) From kernel32.dll"); $api->registerfunction("bool QueryPerformanceFrequency (float &lpPerformanceFrequency) From kernel32.dll"); $api->QueryPerformanceCounter($a); $api->QueryPerformanceFrequency($b); $c = $a/$b; $days = floor($c / 86400); echo gmstrftime("System uptime is $days Days, %H Hr, %M Min, %S Sec ", $c); ?> The above snippet will return the true uptime for an unlimited time for a windows OS. (Disregarding the fact that windows needs reboot every 10 days or so :)) A tiny dange though is the lack of 64bit variable types in php.. (the "float &lpPerformanceCount" should be "long long &lpPerformanceCount") .. Nevertheless.. It works :) Philip S. arunasphp
In order to use most (perhaps all?) of the win32 API while running with a web server you have to give the server service permission to interact with the desktop. This is especially noticeable with the given example, where the script will try to display message boxes on the server's display. Keep in mind, however, that you should think hard about the consequences of letting a web server interact with your desktop, especially if you're not the only one using the web server. wobble
I played a bit around with the W32API. Here is some code that actually works with the current release of W32API. The interface changed completely, so all documentation about this extension is out-dated. While the old release just implemented "plain" functions, the current version offers a class to handle all the API-related operations. Additionally, functions are now registered using a SQL-like language with a single string. <?php $api = new win32; /* BOOL GetUserName( LPTSTR lpBuffer, // address of name buffer LPDWORD nSize // address of size of name buffer ); Returns the current thread's username "&" passes argument as "refrence" not as "copy" */ $api->registerfunction("long GetUserName (string &a, int &b) From advapi32.dll"); /* DWORD GetTickCount(VOID) Returns the ms the OS is running */ $api->registerfunction("long GetTickCount () From Kernel32.dll"); $len = 255; // set the length your variable should have $name = str_repeat("\0", $len); // prepare an empty string if ($api->GetUserName($name, $len) == 0) { die("failed"); } if (!($time = $api->GetTickCount())) { die("failed"); } echo "Username: $name \nSystemtime: $time \n"; ?> GOOD LUCK !! Jan Kleinsorge silver_dragoon77
hi for phpgtk users, who might want to add some sound to their apps, here is the code, assuming ding.wav is in the script's directory $api = new win32; $api->registerfunction("long sndPlaySound (string a, int b) From winmm.dll"); $api->sndPlaySound("ding.wav", 0); you can use the big win32.hlp file containing the win32 api reference to get some other multimedia functions regards sami fouad
Here is a new link for the official page for the Windows API @ Microsoft's site: http://tinyurl.com/5mupk magicaltux
Answer to the note posted by me at nullflux dot com (see below) The Win32 API *does* work in other versions of PHP than between 4.2.0 and 4.2.3. However the documented functions are not available. You will have to use the "win32" class to access functions. For an example, read Philip Soeberg's post just below. sami fouad
http://msdn.microsoft.com/library/ contains functions for use with this extension. Beware! The menu system is very dense, and confusing at first if you don't know where your going. Luckily for you I am going to add how to get there in this note. ;) Windows Development > Development Guides > Windows API > Windows API Reference Enjoy. |
Change Language.NET Functions Apache-specific Functions Alternative PHP Cache Advanced PHP debugger Array Functions Aspell functions [deprecated] BBCode Functions BCMath Arbitrary Precision Mathematics Functions PHP bytecode Compiler Bzip2 Compression Functions Calendar Functions CCVS API Functions [deprecated] Class/Object Functions Classkit Functions ClibPDF Functions [deprecated] COM and .Net (Windows) Crack Functions Character Type Functions CURL Cybercash Payment Functions Credit Mutuel CyberMUT functions Cyrus IMAP administration Functions Date and Time Functions DB++ Functions Database (dbm-style) Abstraction Layer Functions dBase Functions DBM Functions [deprecated] dbx Functions Direct IO Functions Directory Functions DOM Functions DOM XML Functions enchant Functions Error Handling and Logging Functions Exif Functions Expect Functions File Alteration Monitor Functions Forms Data Format Functions Fileinfo Functions filePro Functions Filesystem Functions Filter Functions Firebird/InterBase Functions Firebird/Interbase Functions (PDO_FIREBIRD) FriBiDi Functions FrontBase Functions FTP Functions Function Handling Functions GeoIP Functions Gettext Functions GMP Functions gnupg Functions Net_Gopher Haru PDF Functions hash Functions HTTP Hyperwave Functions Hyperwave API Functions i18n Functions IBM Functions (PDO_IBM) IBM DB2 iconv Functions ID3 Functions IIS Administration Functions Image Functions Imagick Image Library IMAP Informix Functions Informix Functions (PDO_INFORMIX) Ingres II Functions IRC Gateway Functions PHP / Java Integration JSON Functions KADM5 LDAP Functions libxml Functions Lotus Notes Functions LZF Functions Mail Functions Mailparse Functions Mathematical Functions MaxDB PHP Extension MCAL Functions Mcrypt Encryption Functions MCVE (Monetra) Payment Functions Memcache Functions Mhash Functions Mimetype Functions Ming functions for Flash Miscellaneous Functions mnoGoSearch Functions Microsoft SQL Server Functions Microsoft SQL Server and Sybase Functions (PDO_DBLIB) Mohawk Software Session Handler Functions mSQL Functions Multibyte String Functions muscat Functions MySQL Functions MySQL Functions (PDO_MYSQL) MySQL Improved Extension Ncurses Terminal Screen Control Functions Network Functions Newt Functions NSAPI-specific Functions Object Aggregation/Composition Functions Object property and method call overloading Oracle Functions ODBC Functions (Unified) ODBC and DB2 Functions (PDO_ODBC) oggvorbis OpenAL Audio Bindings OpenSSL Functions Oracle Functions [deprecated] Oracle Functions (PDO_OCI) Output Control Functions Ovrimos SQL Functions Paradox File Access Parsekit Functions Process Control Functions Regular Expression Functions (Perl-Compatible) PDF Functions PDO Functions Phar archive stream and classes PHP Options&Information POSIX Functions Regular Expression Functions (POSIX Extended) PostgreSQL Functions PostgreSQL Functions (PDO_PGSQL) Printer Functions Program Execution Functions PostScript document creation Pspell Functions qtdom Functions Radius Rar Functions GNU Readline GNU Recode Functions RPM Header Reading Functions runkit Functions SAM - Simple Asynchronous Messaging Satellite CORBA client extension [deprecated] SCA Functions SDO Functions SDO XML Data Access Service Functions SDO Relational Data Access Service Functions Semaphore SESAM Database Functions PostgreSQL Session Save Handler Session Handling Functions Shared Memory Functions SimpleXML functions SNMP Functions SOAP Functions Socket Functions Standard PHP Library (SPL) Functions SQLite Functions SQLite Functions (PDO_SQLITE) Secure Shell2 Functions Statistics Functions Stream Functions String Functions Subversion Functions Shockwave Flash Functions Swish Functions Sybase Functions TCP Wrappers Functions Tidy Functions Tokenizer Functions Unicode Functions URL Functions Variable Handling Functions Verisign Payflow Pro Functions vpopmail Functions W32api Functions WDDX Functions win32ps Functions win32service Functions xattr Functions xdiff Functions XML Parser Functions XML-RPC Functions XMLReader functions XMLWriter Functions XSL functions XSLT Functions YAZ Functions YP/NIS Functions Zip File Functions Zlib Compression Functions |