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.
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 |