diff options
author | Wez Furlong <wez@php.net> | 2002-05-21 18:58:11 +0000 |
---|---|---|
committer | Wez Furlong <wez@php.net> | 2002-05-21 18:58:11 +0000 |
commit | e04d6ca9f7b0e553b1e978b31f0325ed048d5ea2 (patch) | |
tree | 91c56c40f0888392d45ecb52fd7b01b875fb80ea /ext/com/php_COM.h | |
parent | 8a6f6fca1d63eb15ba73b9a70fdb94938aa515e3 (diff) | |
download | php-git-e04d6ca9f7b0e553b1e978b31f0325ed048d5ea2.tar.gz |
- Make sure that COM and VARIANT resources are returned as resources
rather than longs.
- Make the IDispatch implementation a bit more generic (and
fix my mess of pointers).
- Add new com_message_pump() function that acts like an interruptible
usleep() that processes COM calls/events.
- Add new com_print_typeinfo() function for "decompiling" the typeinfo
for an interface into PHP script. This is useful for generating a
skeleton for use as an event sink.
- Add new com_event_sink() function for sinking events from COM
objects. Usage is like this:
<?php
class IEEventSinker {
var $terminated = false;
function ProgressChange($progress, $progressmax) {
echo "Download progress: $progress / $progressmax\n";
}
function DocumentComplete(&$dom, $url) {
echo "Document $url complete\n";
}
function OnQuit() {
echo "Quit!\n";
$this->terminated = true;
}
}
$ie = new COM("InternetExplorer.Application");
$sink =& new IEEventSinker();
com_event_sink($ie, $sink, "DWebBrowserEvents2");
$ie->Visible = true;
$ie->Navigate("http://www.php.net");
while(!$sink->terminated) {
com_message_pump(4000);
}
$ie = null;
?>
Diffstat (limited to 'ext/com/php_COM.h')
-rw-r--r-- | ext/com/php_COM.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/ext/com/php_COM.h b/ext/com/php_COM.h index 396df9c93c..d26441f6a3 100644 --- a/ext/com/php_COM.h +++ b/ext/com/php_COM.h @@ -18,6 +18,9 @@ PHP_FUNCTION(com_propget); PHP_FUNCTION(com_propput); PHP_FUNCTION(com_load_typelib); PHP_FUNCTION(com_isenum); +PHP_FUNCTION(com_event_sink); +PHP_FUNCTION(com_message_pump); +PHP_FUNCTION(com_print_typeinfo); PHPAPI HRESULT php_COM_invoke(comval *obj, DISPID dispIdMember, WORD wFlags, DISPPARAMS FAR* pDispParams, VARIANT FAR* pVarResult, char **ErrString TSRMLS_DC); PHPAPI HRESULT php_COM_get_ids_of_names(comval *obj, OLECHAR FAR* FAR* rgszNames, DISPID FAR* rgDispId TSRMLS_DC); @@ -36,6 +39,7 @@ PHPAPI int php_COM_load_typelib(ITypeLib *TypeLib, int mode TSRMLS_DC); /* dispatch.c */ PHPAPI IDispatch *php_COM_export_object(zval *val TSRMLS_DC); +PHPAPI IDispatch *php_COM_export_as_sink(zval *val, GUID *sinkid, HashTable *id_to_name TSRMLS_DC); int php_COM_dispatch_init(int module_number TSRMLS_DC); zend_module_entry COM_module_entry; |