Hook JScript functions using IActiveScript using C++

E

Eran

I am trying to hook up or get some kind of a notification event when
the script engine is executing a certain JScript function.

The script engine is not hosted in IE, but in an independent
application.

The Java script functions are declared in the following way:
component.prototype.XXX = function( ... )

I have an instance of IActiveScript and tried to enumerate all the
available DISPIDs, but could not notice any member name that is similar
to the above function name prototype.

The DISPIDs enumeration code:
------------------------------------------------------

IDispatch *pDispatch = 0;
hr = GetScriptDispatch(pstrName, &pDispatch);
if (hr == S_OK)
{
IDispatchEx *pDispatchEx;
hr = pDispatch->QueryInterface(IID_IDispatchEx, (void
**)&pDispatchEx);
if (hr == S_OK)
{
pdex = pDispatchEx;

// Assign to pdex
hr = pdex->GetNextDispID(fdexEnumAll, DISPID_STARTENUM, &dispid);
while (hr == NOERROR)
{
hr = pdex->GetMemberName(dispid, &bstrName);
hr = pdex->GetNextDispID(fdexEnumAll, dispid, &dispid);
}
}
}

Is there any way of getting such an event ?

Thanks,
Eran.
 
V

VK

Eran said:
I am trying to hook up or get some kind of a notification event when
the script engine is executing a certain JScript function.

The script engine is not hosted in IE, but in an independent
application.

The Java script functions are declared in the following way:
component.prototype.XXX = function( ... )

Then you have the only one function "component.prototype.XXX" you
GetDispID directly (methods in the prototype chain are static in Cx
sense).

Also DISPIDs in JScript are not reusable so they are actual only for
this given call. This way your logic seems reversed. You do not study
DISPIDs in search of the matching name, but you study string names and
requesting current DISPID for it if the name is what you want.
From the other side I didn't dance with C++ <> jscript.dll bridging
since last summer plus I had some champagne already :) so my
statements may be disputable.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,744
Messages
2,569,484
Members
44,903
Latest member
orderPeak8CBDGummies

Latest Threads

Top