Metodo IDispatch::Invoke (oaidl.h)
Fornisce l'accesso a proprietà e metodi esposti da un oggetto. La funzione dispatch DispInvoke fornisce un'implementazione standard di Invoke.
Sintassi
HRESULT Invoke(
[in] DISPID dispIdMember,
[in] REFIID riid,
[in] LCID lcid,
[in] WORD wFlags,
[in, out] DISPPARAMS *pDispParams,
[out] VARIANT *pVarResult,
[out] EXCEPINFO *pExcepInfo,
[out] UINT *puArgErr
);
Parametri
[in] dispIdMember
Identifica il membro. Usare GetIDsOfNames o la documentazione dell'oggetto per ottenere l'identificatore dispatch.
[in] riid
Riservato per usi futuri. Deve essere IID_NULL.
[in] lcid
Contesto di impostazioni locali all'interno del quale devono essere interpretati gli argomenti. Lcid viene usato dalla funzione GetIDsOfNames e viene passato anche a Invoke per consentire all'oggetto di interpretare i relativi argomenti specifici di impostazioni locali.
Le applicazioni che non supportano più lingue nazionali possono ignorare questo parametro. Per altre informazioni, vedere Supporto di più lingue nazionali ed esposizione di oggetti ActiveX.
[in] wFlags
Flag che descrivono il contesto della chiamata Invoke .
[in, out] pDispParams
Puntatore a una struttura DISPPARAMS contenente una matrice di argomenti, una matrice di DISPID di argomenti per gli argomenti denominati e conta per il numero di elementi nelle matrici.
[out] pVarResult
Puntatore alla posizione in cui deve essere archiviato il risultato oppure NULL se il chiamante non prevede alcun risultato. Questo argomento viene ignorato se viene specificato DISPATCH_PROPERTYPUT o DISPATCH_PROPERTYPUTREF.
[out] pExcepInfo
Puntatore a una struttura contenente informazioni sull'eccezione. Questa struttura deve essere compilata se viene restituita DISP_E_EXCEPTION. Può essere NULL.
[out] puArgErr
Indice all'interno di rgvarg del primo argomento con un errore. Gli argomenti vengono archiviati in pDispParams-rgvarg> in ordine inverso, quindi il primo argomento è quello con l'indice più alto nella matrice. Questo parametro viene restituito solo quando il valore restituito risultante è DISP_E_TYPEMISMATCH o DISP_E_PARAMNOTFOUND. Questo argomento può essere impostato su Null. Per informazioni dettagliate, vedere Restituzione di errori.
Valore restituito
Questo metodo può restituire uno di questi valori.
Codice restituito | Descrizione |
---|---|
|
Operazione completata. |
|
Il numero di elementi forniti a DISPPARAMS è diverso dal numero di argomenti accettati dal metodo o dalla proprietà . |
|
Uno degli argomenti in DISPPARAMS non è un tipo variant valido. |
|
L'applicazione deve generare un'eccezione. In questo caso, la struttura passata in pexcepinfo deve essere compilata. |
|
Il membro richiesto non esiste. |
|
Questa implementazione di IDispatch non supporta argomenti denominati. |
|
Impossibile forzare uno degli argomenti in DISPPARAMS al tipo specificato. |
|
Uno degli ID parametro non corrisponde a un parametro nel metodo . In questo caso , puArgErr è impostato sul primo argomento che contiene l'errore. |
|
Non è stato possibile forzare uno o più argomenti. L'indice del primo parametro con il tipo non corretto all'interno di rgvarg viene restituito in puArgErr. |
|
L'identificatore di interfaccia passato in riid non è IID_NULL. |
|
Il membro richiamato interpreta gli argomenti stringa in base all'LCID e l'LCID non viene riconosciuto. Se l'identificatore LCID non è necessario per interpretare gli argomenti, questo errore non deve essere restituito |
|
Un parametro obbligatorio è stato omesso. |
Commenti
In genere, non è consigliabile implementare direttamente Invoke . Usare invece l'interfaccia dispatch per creare funzioni CreateStdDispatch e DispInvoke. Per informazioni dettagliate, vedere CreateStdDispatch, DispInvoke, Creating the IDispatch Interface (Creazione dell'interfaccia IDispatch ) ed Esposizione di oggetti ActiveX.
Se è necessario eseguire un'elaborazione specifica dell'applicazione prima di chiamare un membro, il codice deve eseguire le azioni necessarie e quindi chiamare ITypeInfo::Invoke per richiamare il membro. ITypeInfo::Invoke funziona esattamente come Invoke. Le implementazioni standard di Invoke create da CreateStdDispatch e DispInvoke rimandano a ITypeInfo::Invoke.
In un client ActiveX è necessario usare Invoke per ottenere e impostare i valori delle proprietà oppure per chiamare un metodo di un oggetto ActiveX. L'argomento dispIdMember identifica il membro da richiamare. I DISPID che identificano i membri sono definiti dall'implementatore dell'oggetto e possono essere determinati tramite la documentazione dell'oggetto, la funzione IDispatch::GetIDsOfNames o L'interfaccia ITypeInfo .
Quando si usa IDispatch::Invoke() con DISPATCH_PROPERTYPUT o DISPATCH_PROPERTYPUTREF, è necessario inizializzare in modo speciale gli elementi cNamedArgs e rgdispidNamedArgs della struttura DISPPARAMS con quanto segue:
DISPID dispidNamed = DISPID_PROPERTYPUT;
dispparams.cNamedArgs = 1;
dispparams.rgdispidNamedArgs = &dispidNamed;
Le informazioni seguenti indirizzano gli sviluppatori di client ActiveX e altri utenti che usano il codice per esporre oggetti ActiveX. Descrive il comportamento previsto dagli utenti di oggetti esposti.
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Windows |
Intestazione | oaidl.h |