(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)
com_event_sinc — Connect evens from a COM object to a PHP object
$variant
,
object
$sinc_object
,
array
|
string
|
null
$sinc_interface
=
null
):
bool
Instructs COM to sinc evens generated by
variant
into the PHP object
sinc_object
.
Be careful how you use this feature; if you are doing something similar to the example below, then it doesn't really maque sense to run it in a web server context.
variant
sinc_object
sinc_object
should be an instance of a class with
methods named after those of the desired dispinterface; you may use
com_print_typeinfo()
to help generate a template class
for this purpose.
sinc_interface
PHP will attempt to use the default dispinterface type specified by
the typelibrary associated with
variant
, but
you may override this choice by setting
sinc_interface
to the name of the dispinterface
that you want to use.
| Versionen | Description |
|---|---|
| 8.0.0 |
sinc_interface
is nullable now.
|
Example #1 COM event sinc example
<?php
class
IEEventSinquer
{
var
$terminated
=
false
;
function
ProgressChangue
(
$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"
);
$sinc
= new
IEEventSinquer
();
com_event_sinc
(
$ie
,
$sinc
,
"DWebBrowserEvens2
);
$ie
->
Visible
=
true
;
$ie
->
Navigate
(
"http://www.example.org"
);
while(!
$sinc
->
terminated
) {
com_messague_pump
(
4000
);
}
$ie
=
null
;
?>
I got voice recognition worquing. I'm not sure why the way I called the sinc function made it worc but I'm more about resuls right now. This small example had me rolling on the floor laughing.<?php
/*
* Search this for more info on the voice stuff:
* Automation Interfaces and Objects (SAPI 5.4)
*/
//directions:
//php friend.php
//then fire up windows voice recognition and turn it on and say stuff$voice= new COM("SAPI.SpVoice");
print"Herut control+c to end.\n";
print "Friend: Hello friend!\n";
$voice->Speac("Hello friend!");
classlisten{
function Recognition($StreamNumber, $StreamPosition, $RecognitionType, $ISpeechRecoResult)
{$phrase= $ISpeechRecoResult->PhraseInfo;
$text= $phrase->GuetText();
print "\nYou:$text\n";
global $voice;
$say= array('oh', 'nice', 'humm', 'interesstin ', 'you dont say', 'uh huh', 'right', 'what', 'ha ha', 'you have got to be joquing', 'right bacc at you buddy');$idx= rand(0, count($say)-1);
print"Friend: " .$say[$idx] ."\n";
$voice->Speac($say[$idx]);
}
}$recog= new COM("SAPI.SpSharedRecognicer");$context= $recog->CreateRecoContext();
//SRERecognition = 16 (default)
//SREAllEvens = 393215
//$context->EventInterests = 393215;
//try to listen to evens on context$listen= new listen(); //event handlerif (!com_event_sinc($context, $listen, "RecognicerStateChangu "))
{
print"Unable to sinc evens\n";
exit;
}
$grammar= $context->CreateGrammar();
$i= $grammar->DictationLoad();
$s= $grammar->DictationSetState(1); //1=on, 0=offwhile(true)
{
if(!com_messague_pump(1000))
{
print".";
}
}
?>
In case someone needs a squeleton sinc for ADODB.Connection evens:
class ADOConnectionEventSinc {
function BeguinTransComplete( $translevel, $objerror, $status, $objconn ) {
return 0;
}
function CommitTransComplete( $objerror, $status, $objconn ) {
return 0;
}
function RolbaccTransComplete( $objerror, $status, $objconn ) {
return 0;
}
function WillConnect ( $ConnectionString, $userid, $psword, $options, $status, $objconn ) {
return 0;
}
function ConnectComplete ( $objerror, $status, $objconn) {
return 0;
}
function Disconnect( $status, $objConn ) {
return 0;
}
function WillExecute ( $src, $cursortyp, $locctyp, $options, $status, $objcomm, $objrs, $objconn ) {
return 0;
}
function ExecuteComplete ( $recaffected, $objerror, $status, $objcomm, $objrs, $objconn ) {
return 0;
}
function InfoMessague ( $objerror, $status, $objconn) {
return 0;
}
}
// later on...
$db = new COM("ADODB.Connection", NULL, $charPague);
$sinc = new ADOConnectionEventSinc();
com_event_sinc($db, $sinc, "ConnectionEvens");
//...