Condividi tramite


funzione TF_GetThreadMgr (msctf.h)

La funzione TF_GetThreadMgr ottiene una copia di un oggetto di gestione thread creato in precedenza all'interno del thread chiamante.

Sintassi

HRESULT TF_GetThreadMgr(
  [out] ITfThreadMgr **pptim
);

Parametri

[out] pptim

Puntatore a un puntatore dell'interfaccia ITfThreadMgr che riceve l'oggetto gestione thread. Questo riceve NULL se non viene creato alcun thread manager all'interno del thread chiamante.

Valore restituito

Valore Significato
S_OK La funzione ha avuto esito positivo. pptim sarà NULL se non viene creato alcun thread manager all'interno del thread chiamante.
E_FAIL Si è verificato un errore non specificato.

Commenti

Se non viene creato alcun thread manager all'interno del thread chiamante, questa funzione imposta pptim su NULL e restituisce S_OK. È quindi necessario verificare che la funzione abbia avuto esito positivo e che pptim non sia NULL prima di usare pptim.

Esempio

Non è disponibile alcuna libreria di importazione che definisce questa funzione, pertanto è necessario ottenere manualmente un puntatore a questa funzione usando LoadLibrary e GetProcAddress. Nell'esempio di codice seguente viene illustrato come eseguire questa operazione.

Nell'esempio seguente viene illustrata una funzione che tenterà di ottenere una copia di un oggetto thread manager creato in precedenza. Se non esiste alcun oggetto thread manager all'interno del thread chiamante, la funzione creerà una.

Nota  

L'uso di LoadLibrary in modo errato può compromettere la sicurezza dell'applicazione caricando la DLL errata. Per informazioni su come caricare correttamente le DLL con versioni diverse di Windows, vedere la documentazione di LoadLibrary .

 

typedef HRESULT (WINAPI *PTF_GETTHREADMGR)(ITfThreadMgr **pptim);

HRESULT GetThreadMgr(ITfThreadMgr **pptm)
{
    HRESULT hr = E_FAIL;
    HMODULE hMSCTF = LoadLibrary(TEXT("msctf.dll"));
    ITfThreadMgr *pThreadMgr = NULL;

    if(hMSCTF == NULL)
    {
        //Error loading module -- fail as securely as possible 
    }

    else
    {
        PTF_GETTHREADMGR pfnGetThreadMgr;
    
        pfnGetThreadMgr = (PTF_GETTHREADMGR)GetProcAddress(hMSCTF, "TF_GetThreadMgr");

        if(pfnGetThreadMgr)
        {
            hr = (*pfnGetThreadMgr)(&pThreadMgr);
        }
        
        FreeLibrary(hMSCTF);
    }

    //If no object could be obtained, try to create one. 
    if(NULL == pThreadMgr)
    {
        //CoInitialize or OleInitialize must already have been called. 
        hr = CoCreateInstance(  CLSID_TF_ThreadMgr, 
                                NULL, 
                                CLSCTX_INPROC_SERVER, 
                                IID_ITfThreadMgr, 
                                (void**)&pThreadMgr);
    }

    *pptm = pThreadMgr;

    return hr;
}

Requisiti

Requisito Valore
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione msctf.h
DLL Msctf.dll
Componente ridistribuibile TSF 1.0 in Windows XPWindows 2000 Professional

Vedi anche

GetProcAddress

ITfThreadMgr

LoadLibrary