Qt 4.8
Public Types | Public Functions | Protected Functions | Properties | List of all members
QAxScriptEngine Class Reference

The QAxScriptEngine class provides a wrapper around a script engine. More...

#include <qaxscript.h>

Inheritance diagram for QAxScriptEngine:
QAxObject QObject QAxBase

Public Types

enum  State {
  Uninitialized = 0, Initialized = 5, Started = 1, Connected = 2,
  Disconnected = 3, Closed = 4
}
 The State enumeration defines the different states a script engine can be in. More...
 
- Public Types inherited from QAxBase
typedef QMap< QString, QVariantPropertyBag
 A QMap<QString,QVariant> that can store properties as name:value pairs. More...
 

Public Functions

void addItem (const QString &name)
 Registers an item with the script engine. More...
 
bool hasIntrospection () const
 Returns true if the script engine supports introspection; otherwise returns false. More...
 
bool isValid () const
 Returns true if the script engine has been initialized correctly; otherwise returns false. More...
 
 QAxScriptEngine (const QString &language, QAxScript *script)
 Constructs a QAxScriptEngine object interpreting script code in language provided by the code in script. More...
 
long queryInterface (const QUuid &, void **) const
 Requests the interface uuid from the script engine object and sets the value of iface to the provided interface, or to 0 if the requested interface could not be provided. More...
 
QString scriptLanguage () const
 Returns the scripting language, for example "VBScript", or "JScript". More...
 
void setState (State st)
 Sets the state of the script engine to st. More...
 
State state () const
 Returns the state of the script engine. More...
 
 ~QAxScriptEngine ()
 Destroys the QAxScriptEngine object, releasing all allocated resources. More...
 
- Public Functions inherited from QAxObject
const char * className () const
 
bool doVerb (const QString &verb)
 Requests the COM object to perform the action verb. More...
 
const QMetaObjectmetaObject () const
 
 QAxObject (QObject *parent=0)
 Creates an empty COM object and propagates parent to the QObject constructor. More...
 
 QAxObject (const QString &c, QObject *parent=0)
 Creates a QAxObject that wraps the COM object c. More...
 
 QAxObject (IUnknown *iface, QObject *parent=0)
 Creates a QAxObject that wraps the COM object referenced by iface. More...
 
QObjectqObject () const
 
int qt_metacall (QMetaObject::Call, int, void **)
 
void * qt_metacast (const char *)
 
 ~QAxObject ()
 Releases the COM object and destroys the QAxObject, cleaning up all allocated resources. More...
 
- Public Functions inherited from QObject
bool blockSignals (bool b)
 If block is true, signals emitted by this object are blocked (i.e., emitting a signal will not invoke anything connected to it). More...
 
const QObjectListchildren () const
 Returns a list of child objects. More...
 
bool connect (const QObject *sender, const char *signal, const char *member, Qt::ConnectionType type=Qt::AutoConnection) const
 
bool disconnect (const char *signal=0, const QObject *receiver=0, const char *member=0)
 
bool disconnect (const QObject *receiver, const char *member=0)
 
void dumpObjectInfo ()
 Dumps information about signal connections, etc. More...
 
void dumpObjectTree ()
 Dumps a tree of children to the debug output. More...
 
QList< QByteArraydynamicPropertyNames () const
 Returns the names of all properties that were dynamically added to the object using setProperty(). More...
 
virtual bool event (QEvent *)
 This virtual function receives events to an object and should return true if the event e was recognized and processed. More...
 
virtual bool eventFilter (QObject *, QEvent *)
 Filters events if this object has been installed as an event filter for the watched object. More...
 
template<typename T >
findChild (const QString &aName=QString()) const
 Returns the child of this object that can be cast into type T and that is called name, or 0 if there is no such object. More...
 
template<typename T >
QList< T > findChildren (const QString &aName=QString()) const
 Returns all children of this object with the given name that can be cast to type T, or an empty list if there are no such objects. More...
 
template<typename T >
QList< T > findChildren (const QRegExp &re) const
 
bool inherits (const char *classname) const
 Returns true if this object is an instance of a class that inherits className or a QObject subclass that inherits className; otherwise returns false. More...
 
void installEventFilter (QObject *)
 Installs an event filter filterObj on this object. More...
 
bool isWidgetType () const
 Returns true if the object is a widget; otherwise returns false. More...
 
void killTimer (int id)
 Kills the timer with timer identifier, id. More...
 
void moveToThread (QThread *thread)
 Changes the thread affinity for this object and its children. More...
 
QString objectName () const
 
QObjectparent () const
 Returns a pointer to the parent object. More...
 
QVariant property (const char *name) const
 Returns the value of the object's name property. More...
 
Q_INVOKABLE QObject (QObject *parent=0)
 Constructs an object with parent object parent. More...
 
void removeEventFilter (QObject *)
 Removes an event filter object obj from this object. More...
 
void setObjectName (const QString &name)
 
void setParent (QObject *)
 Makes the object a child of parent. More...
 
bool setProperty (const char *name, const QVariant &value)
 Sets the value of the object's name property to value. More...
 
void setUserData (uint id, QObjectUserData *data)
 
bool signalsBlocked () const
 Returns true if signals are blocked; otherwise returns false. More...
 
int startTimer (int interval)
 Starts a timer and returns a timer identifier, or returns zero if it could not start a timer. More...
 
QThreadthread () const
 Returns the thread in which the object lives. More...
 
QObjectUserDatauserData (uint id) const
 
virtual ~QObject ()
 Destroys the object, deleting all its child objects. More...
 
- Public Functions inherited from QAxBase
QVariant asVariant () const
 Returns a QVariant that wraps the COM object. More...
 
virtual void clear ()
 Disconnects and destroys the COM object. More...
 
QString control () const
 the name of the COM object wrapped by this QAxBase object. More...
 
void disableClassInfo ()
 Disables the class info generation for this ActiveX container. More...
 
void disableEventSink ()
 Disables the event sink implementation for this ActiveX container. More...
 
void disableMetaObject ()
 Disables the meta object generation for this ActiveX container. More...
 
QVariant dynamicCall (const char *name, const QVariant &v1=QVariant(), const QVariant &v2=QVariant(), const QVariant &v3=QVariant(), const QVariant &v4=QVariant(), const QVariant &v5=QVariant(), const QVariant &v6=QVariant(), const QVariant &v7=QVariant(), const QVariant &v8=QVariant())
 Calls the COM object's method function, passing the parameters var1, var1, var2, var3, var4, var5, var6, var7 and var8, and returns the value returned by the method, or an invalid QVariant if the method does not return a value or when the function call failed. More...
 
QVariant dynamicCall (const char *name, QList< QVariant > &vars)
 Calls the COM object's method function, passing the parameters in vars, and returns the value returned by the method. More...
 
QString generateDocumentation ()
 Returns a rich text string with documentation for the wrapped COM object. More...
 
bool isNull () const
 Returns true if there is no COM object loaded by this wrapper; otherwise return false. More...
 
PropertyBag propertyBag () const
 Returns a name:value map of all the properties exposed by the COM object. More...
 
virtual bool propertyWritable (const char *) const
 Returns true if the property prop is writable; otherwise returns false. More...
 
 QAxBase (IUnknown *iface=0)
 Creates a QAxBase object that wraps the COM object iface. More...
 
long queryInterface (const QUuid &, void **) const
 Requests the interface uuid from the COM object and sets the value of iface to the provided interface, or to 0 if the requested interface could not be provided. More...
 
QAxObjectquerySubObject (const char *name, const QVariant &v1=QVariant(), const QVariant &v2=QVariant(), const QVariant &v3=QVariant(), const QVariant &v4=QVariant(), const QVariant &v5=QVariant(), const QVariant &v6=QVariant(), const QVariant &v7=QVariant(), const QVariant &v8=QVariant())
 Returns a pointer to a QAxObject wrapping the COM object provided by the method or property name, passing passing the parameters var1, var1, var2, var3, var4, var5, var6, var7 and var8. More...
 
QAxObjectquerySubObject (const char *name, QList< QVariant > &vars)
 The QVariant objects in vars are updated when the method has out-parameters. More...
 
bool setControl (const QString &)
 
void setPropertyBag (const PropertyBag &)
 Sets the properties of the COM object to the corresponding values in bag. More...
 
virtual void setPropertyWritable (const char *, bool)
 Sets the property prop to writable if ok is true, otherwise sets prop to be read-only. More...
 
QStringList verbs () const
 Returns the list of verbs that the COM object can execute. More...
 
virtual ~QAxBase ()
 Shuts down the COM object and destroys the QAxBase object. More...
 

Protected Functions

bool initialize (IUnknown **ptr)
 Reimplemented Function More...
 
- Protected Functions inherited from QAxObject
void connectNotify (const char *signal)
 Reimplemented Function More...
 
- Protected Functions inherited from QObject
virtual void childEvent (QChildEvent *)
 This event handler can be reimplemented in a subclass to receive child events. More...
 
virtual void customEvent (QEvent *)
 This event handler can be reimplemented in a subclass to receive custom events. More...
 
virtual void disconnectNotify (const char *signal)
 This virtual function is called when something has been disconnected from signal in this object. More...
 
 QObject (QObjectPrivate &dd, QObject *parent=0)
 
int receivers (const char *signal) const
 Returns the number of receivers connected to the signal. More...
 
QObjectsender () const
 Returns a pointer to the object that sent the signal, if called in a slot activated by a signal; otherwise it returns 0. More...
 
int senderSignalIndex () const
 
virtual void timerEvent (QTimerEvent *)
 This event handler can be reimplemented in a subclass to receive timer events for the object. More...
 
- Protected Functions inherited from QAxBase
void connectNotify ()
 Connects to all event interfaces of the object. More...
 
long indexOfVerb (const QString &verb) const
 
bool initializeActive (IUnknown **ptr)
 Connects to an active instance running on the current machine, and returns the IUnknown interface to the running object in ptr. More...
 
void initializeFrom (QAxBase *that)
 Used by subclasses generated with dumpcpp to implement cast-operators. More...
 
bool initializeFromFile (IUnknown **ptr)
 Creates the COM object handling the filename in the control property, and returns the IUnknown interface to the object in ptr. More...
 
bool initializeLicensed (IUnknown **ptr)
 Creates an instance of a licensed control, and returns the IUnknown interface to the object in ptr. More...
 
bool initializeRemote (IUnknown **ptr)
 Creates the instance on a remote server, and returns the IUnknown interface to the object in ptr. More...
 
void internalRelease ()
 Used by subclasses generated with dumpcpp to balance reference count. More...
 

Properties

IActiveScript * engine
 
QAxScriptscript_code
 
QString script_language
 

Additional Inherited Members

- Public Slots inherited from QObject
void deleteLater ()
 Schedules this object for deletion. More...
 
- Signals inherited from QObject
void destroyed (QObject *=0)
 This signal is emitted immediately before the object obj is destroyed, and can not be blocked. More...
 
- Signals inherited from QAxBase
void exception (int, const QString &, const QString &, const QString &)
 This signal is emitted when the COM object throws an exception while called using the OLE automation interface IDispatch. More...
 
void propertyChanged (const QString &)
 If the COM object supports property notification, this signal gets emitted when the property called name is changed. More...
 
void signal (const QString &, int, void *)
 This generic signal gets emitted when the COM object issues the event name. More...
 
- Static Public Functions inherited from QObject
static bool connect (const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType=Qt::AutoConnection)
 Creates a connection of the given type from the signal in the sender object to the method in the receiver object. More...
 
static bool connect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type=Qt::AutoConnection)
 
static bool disconnect (const QObject *sender, const char *signal, const QObject *receiver, const char *member)
 Disconnects signal in object sender from method in object receiver. More...
 
static bool disconnect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &member)
 
static uint registerUserData ()
 
static QString tr (const char *sourceText, const char *comment=0, int n=-1)
 
static QString trUtf8 (const char *sourceText, const char *comment=0, int n=-1)
 
- Static Public Variables inherited from QObject
static const QMetaObject staticMetaObject
 This variable stores the meta-object for the class. More...
 
- Protected Variables inherited from QObject
QScopedPointer< QObjectDatad_ptr
 
- Static Protected Variables inherited from QObject
static const QMetaObject staticQtMetaObject
 

Detailed Description

The QAxScriptEngine class provides a wrapper around a script engine.

Attention
Module: QAxContainer

Every instance of the QAxScriptEngine class represents an interpreter for script code in a particular scripting language. The class is usually not used directly. The QAxScript and QAxScriptManager classes provide convenient functions to handle and call script code.

Direct access to the script engine is provided through queryInterface().

Warning
This class is not available with the bcc5.5 and MingW compilers.
See also
QAxScript, QAxScriptManager, QAxBase, {ActiveQt Framework}

Definition at line 63 of file qaxscript.h.

Enumerations

◆ State

The State enumeration defines the different states a script engine can be in.

  • Uninitialized The script has been created, but not yet initialized
  • Initialized The script has been initialized, but is not running
  • Started The script can execute code, but does not yet handle events
  • Connected The script can execute code and is connected so that it can handle events
  • Disconnected The script is loaded, but is not connected to event sources
  • Closed The script has been closed.
Enumerator
Uninitialized 
Initialized 
Started 
Connected 
Disconnected 
Closed 

Definition at line 66 of file qaxscript.h.

Constructors and Destructors

◆ QAxScriptEngine()

QAxScriptEngine::QAxScriptEngine ( const QString language,
QAxScript script 
)

Constructs a QAxScriptEngine object interpreting script code in language provided by the code in script.

This is usually done by the QAxScript class when loading a script.

Instances of QAxScriptEngine should always have both a language and a script.

Definition at line 421 of file qaxscript.cpp.

422 : QAxObject(script), script_code(script), engine(0), script_language(language)
423 {
424 #ifdef QT_CHECK_STATE
425  if (language.isEmpty())
426  qWarning("QAxScriptEngine: created without language");
427 
428  if (!script_code)
429  qWarning("QAxScriptEngine: created without script");
430 #endif
431  setObjectName(QLatin1String("QAxScriptEngine_") + language);
434 }
QAxObject(QObject *parent=0)
Creates an empty COM object and propagates parent to the QObject constructor.
Definition: qaxobject.cpp:93
QString script_language
Definition: qaxscript.h:97
void disableClassInfo()
Disables the class info generation for this ActiveX container.
Definition: qaxbase.cpp:1083
QLatin1String(DBUS_INTERFACE_DBUS))) Q_GLOBAL_STATIC_WITH_ARGS(QString
QAxScript * script_code
Definition: qaxscript.h:94
void setObjectName(const QString &name)
Definition: qobject.cpp:1112
bool isEmpty() const
Returns true if the string has no characters; otherwise returns false.
Definition: qstring.h:704
IActiveScript * engine
Definition: qaxscript.h:95
Q_CORE_EXPORT void qWarning(const char *,...)
void disableEventSink()
Disables the event sink implementation for this ActiveX container.
Definition: qaxbase.cpp:1047

◆ ~QAxScriptEngine()

QAxScriptEngine::~QAxScriptEngine ( )

Destroys the QAxScriptEngine object, releasing all allocated resources.

Definition at line 440 of file qaxscript.cpp.

441 {
442 #ifndef QT_NO_QAXSCRIPT
443  if (engine) {
444  engine->SetScriptState(SCRIPTSTATE_DISCONNECTED);
445  engine->Close();
446  engine->Release();
447  }
448 #endif
449 }
IActiveScript * engine
Definition: qaxscript.h:95

Functions

◆ addItem()

void QAxScriptEngine::addItem ( const QString name)

Registers an item with the script engine.

Script code can refer to this item using name.

Definition at line 618 of file qaxscript.cpp.

Referenced by QAxScriptManager::updateScript().

619 {
620 #ifndef QT_NO_QAXSCRIPT
621  if (!engine)
622  return;
623 
624  engine->AddNamedItem((wchar_t*)name.utf16(), SCRIPTITEM_ISSOURCE|SCRIPTITEM_ISVISIBLE);
625 #else
626  Q_UNUSED(name)
627 #endif
628 }
IActiveScript * engine
Definition: qaxscript.h:95
#define Q_UNUSED(x)
Indicates to the compiler that the parameter with the specified name is not used in the body of a fun...
Definition: qglobal.h:1729
const ushort * utf16() const
Returns the QString as a &#39;\0\&#39;-terminated array of unsigned shorts.
Definition: qstring.cpp:5290

◆ hasIntrospection()

bool QAxScriptEngine::hasIntrospection ( ) const

Returns true if the script engine supports introspection; otherwise returns false.

Definition at line 543 of file qaxscript.cpp.

544 {
545  if (!isValid())
546  return false;
547 
548  IDispatch *scriptDispatch = 0;
549  QAxBase::queryInterface(IID_IDispatch, (void**)&scriptDispatch);
550  if (!scriptDispatch)
551  return false;
552 
553  UINT tic = 0;
554  HRESULT hres = scriptDispatch->GetTypeInfoCount(&tic);
555  scriptDispatch->Release();
556  return hres == S_OK && tic > 0;
557 }
bool isValid() const
Returns true if the script engine has been initialized correctly; otherwise returns false...
Definition: qaxscript.h:219
long HRESULT
long queryInterface(const QUuid &, void **) const
Requests the interface uuid from the COM object and sets the value of iface to the provided interface...
Definition: qaxbase.cpp:1479

◆ initialize()

bool QAxScriptEngine::initialize ( IUnknown **  ptr)
protectedvirtual

Reimplemented Function

Reimplemented from QAxBase.

Definition at line 463 of file qaxscript.cpp.

464 {
465  *ptr = 0;
466 
467 #ifndef QT_NO_QAXSCRIPT
469  return false;
470 
471  CLSID clsid;
472  HRESULT hres = CLSIDFromProgID((wchar_t*)script_language.utf16(), &clsid);
473  if(FAILED(hres))
474  return false;
475 
476  CoCreateInstance(clsid, 0, CLSCTX_INPROC_SERVER, IID_IActiveScript, (void**)&engine);
477  if (!engine)
478  return false;
479 
480  IActiveScriptParse *parser = 0;
481  engine->QueryInterface(IID_IActiveScriptParse, (void**)&parser);
482  if (!parser) {
483  engine->Release();
484  engine = 0;
485  return false;
486  }
487 
488  if (engine->SetScriptSite(script_code->script_site) != S_OK) {
489  engine->Release();
490  engine = 0;
491  return false;
492  }
493  if (parser->InitNew() != S_OK) {
494  parser->Release();
495  engine->Release();
496  engine = 0;
497  return false;
498  }
499 
500  BSTR bstrCode = QStringToBSTR(script_code->scriptCode());
501 #ifdef Q_OS_WIN64
502  hres = parser->ParseScriptText(bstrCode, 0, 0, 0, DWORDLONG(this), 0, SCRIPTTEXT_ISVISIBLE, 0, 0);
503 #else
504  hres = parser->ParseScriptText(bstrCode, 0, 0, 0, DWORD(this), 0, SCRIPTTEXT_ISVISIBLE, 0, 0);
505 #endif
506  SysFreeString(bstrCode);
507 
508  parser->Release();
509  parser = 0;
510 
512 
513  if (engine->SetScriptState(SCRIPTSTATE_CONNECTED) != S_OK) {
514  engine = 0;
515  return false;
516  }
517 
518  IDispatch *scriptDispatch = 0;
519  engine->GetScriptDispatch(0, &scriptDispatch);
520  if (scriptDispatch) {
521  scriptDispatch->QueryInterface(IID_IUnknown, (void**)ptr);
522  scriptDispatch->Release();
523  }
524 #endif
525 
526  return *ptr != 0;
527 }
QString script_language
Definition: qaxscript.h:97
QAxScript * script_code
Definition: qaxscript.h:94
bool isEmpty() const
Returns true if the string has no characters; otherwise returns false.
Definition: qstring.h:704
IActiveScript * engine
Definition: qaxscript.h:95
const T * ptr(const T &t)
QAxScriptSite * script_site
Definition: qaxscript.h:150
long HRESULT
static BSTR QStringToBSTR(const QString &str)
Definition: qaxtypes.h:76
void updateObjects()
Registers all objects in the manager with the script engine.
Definition: qaxscript.cpp:834
const ushort * utf16() const
Returns the QString as a &#39;\0\&#39;-terminated array of unsigned shorts.
Definition: qstring.cpp:5290
QString scriptCode() const
Returns the script&#39;s code, or the null-string if no code has been loaded yet.
Definition: qaxscript.h:202

◆ isValid()

bool QAxScriptEngine::isValid ( ) const
inline

Returns true if the script engine has been initialized correctly; otherwise returns false.

Definition at line 219 of file qaxscript.h.

Referenced by hasIntrospection(), and QAxScript::load().

220 {
221  return engine != 0;
222 }
IActiveScript * engine
Definition: qaxscript.h:95

◆ queryInterface()

long QAxScriptEngine::queryInterface ( const QUuid uuid,
void **  iface 
) const

Requests the interface uuid from the script engine object and sets the value of iface to the provided interface, or to 0 if the requested interface could not be provided.

Returns the result of the QueryInterface implementation of the COM object.

Definition at line 567 of file qaxscript.cpp.

568 {
569  *iface = 0;
570  if (!engine)
571  return E_NOTIMPL;
572 
573 #ifndef QT_NO_QAXSCRIPT
574  return engine->QueryInterface(uuid, iface);
575 #else
576  Q_UNUSED(uuid)
577  return E_NOTIMPL;
578 #endif
579 }
IActiveScript * engine
Definition: qaxscript.h:95
#define Q_UNUSED(x)
Indicates to the compiler that the parameter with the specified name is not used in the body of a fun...
Definition: qglobal.h:1729

◆ scriptLanguage()

QString QAxScriptEngine::scriptLanguage ( ) const
inline

Returns the scripting language, for example "VBScript", or "JScript".

Definition at line 224 of file qaxscript.h.

225 {
226  return script_language;
227 }
QString script_language
Definition: qaxscript.h:97

◆ setState()

void QAxScriptEngine::setState ( State  st)

Sets the state of the script engine to st.

Calling this function is usually not necessary.

Definition at line 602 of file qaxscript.cpp.

603 {
604 #ifndef QT_NO_QAXSCRIPT
605  if (!engine)
606  return;
607 
608  engine->SetScriptState((SCRIPTSTATE)st);
609 #else
610  Q_UNUSED(st)
611 #endif
612 }
IActiveScript * engine
Definition: qaxscript.h:95
#define Q_UNUSED(x)
Indicates to the compiler that the parameter with the specified name is not used in the body of a fun...
Definition: qglobal.h:1729

◆ state()

QAxScriptEngine::State QAxScriptEngine::state ( ) const

Returns the state of the script engine.

Definition at line 584 of file qaxscript.cpp.

585 {
586  if (!engine)
587  return Uninitialized;
588 
589 #ifndef QT_NO_QAXSCRIPT
590  SCRIPTSTATE state;
591  engine->GetScriptState(&state);
592  return (State)state;
593 #else
594  return Uninitialized;
595 #endif
596 }
IActiveScript * engine
Definition: qaxscript.h:95
The State element defines configurations of objects and properties.
State state() const
Returns the state of the script engine.
Definition: qaxscript.cpp:584

Properties

◆ engine

IActiveScript* QAxScriptEngine::engine
private

Definition at line 95 of file qaxscript.h.

Referenced by addItem(), initialize(), isValid(), queryInterface(), setState(), state(), and ~QAxScriptEngine().

◆ script_code

QAxScript* QAxScriptEngine::script_code
private

Definition at line 94 of file qaxscript.h.

Referenced by initialize(), QAxScriptEngine(), and QAxScript::scriptCode().

◆ script_language

QString QAxScriptEngine::script_language
private

Definition at line 97 of file qaxscript.h.

Referenced by initialize(), and scriptLanguage().


The documentation for this class was generated from the following files: