Compartir a través de


función TF_GetThreadMgr (msctf.h)

La función TF_GetThreadMgr obtiene una copia de un objeto de administrador de subprocesos creado anteriormente en el subproceso que llama.

Sintaxis

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

Parámetros

[out] pptim

Puntero a un puntero de interfaz ITfThreadMgr que recibe el objeto del administrador de subprocesos. Esto recibe NULL si no se crea ningún administrador de subprocesos dentro del subproceso que realiza la llamada.

Valor devuelto

Valor Significado
S_OK La función se realizó correctamente. pptim será NULL si no se crea ningún administrador de subprocesos dentro del subproceso que realiza la llamada.
E_FAIL Se ha producido un error no especificado.

Comentarios

Si no se crea ningún administrador de subprocesos dentro del subproceso que realiza la llamada, esta función establecerá pptim en NULL y devolverá S_OK. Por lo tanto, es necesario comprobar que la función se realizó correctamente y que pptim no es NULL antes de usar pptim.

Ejemplos

No hay ninguna biblioteca de importación disponible que defina esta función, por lo que es necesario obtener manualmente un puntero a esta función mediante LoadLibrary y GetProcAddress. En el ejemplo de código siguiente se muestra cómo hacerlo.

En el ejemplo siguiente se muestra una función que intentará obtener una copia de un objeto de administrador de subprocesos creado anteriormente. Si no existe ningún objeto de administrador de subprocesos dentro del subproceso que realiza la llamada, la función creará una.

Nota  

El uso incorrecto de LoadLibrary puede poner en peligro la seguridad de la aplicación cargando el archivo DLL incorrecto. Consulte la documentación de LoadLibrary para obtener información sobre cómo cargar correctamente archivos DLL con diferentes versiones de Windows.

 

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;
}

Requisitos

Requisito Value
Cliente mínimo compatible Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado msctf.h
Archivo DLL Msctf.dll
Redistribuible TSF 1.0 en Windows XPWindows 2000 Professional

Consulte también

GetProcAddress

ITfThreadMgr

LoadLibrary