Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A função TF_GetThreadMgr obtém uma cópia de um objeto do gerenciador de threads criado anteriormente no thread de chamada.
Sintaxe
HRESULT TF_GetThreadMgr(
[out] ITfThreadMgr **pptim
);
Parâmetros
[out] pptim
Ponteiro para um ponteiro de interface ITfThreadMgr que recebe o objeto do gerenciador de threads. Isso receberá NULL se nenhum gerenciador de threads for criado dentro do thread de chamada.
Valor retornado
| Valor | Significado |
|---|---|
| S_OK | A função foi bem-sucedida. pptim será NULL se nenhum gerenciador de threads for criado dentro do thread de chamada. |
| E_FAIL | Ocorreu um erro não especificado. |
Comentários
Se nenhum gerenciador de threads for criado no thread de chamada, essa função definirá pptim como NULL e retornará S_OK. Portanto, é necessário verificar se a função foi bem-sucedida e se pptim não é NULL antes de usar pptim.
Exemplos
Não há nenhuma biblioteca de importação disponível que defina essa função, portanto, é necessário obter manualmente um ponteiro para essa função usando LoadLibrary e GetProcAddress. O exemplo de código a seguir demonstra como fazer isso.
O exemplo a seguir demonstra uma função que tentará obter uma cópia de um objeto gerenciador de threads criado anteriormente. Se nenhum objeto do gerenciador de threads existir dentro do thread de chamada, a função criará um.
Usar LoadLibrary incorretamente pode comprometer a segurança do aplicativo carregando a DLL errada. Consulte a documentação do LoadLibrary para obter informações sobre como carregar corretamente DLLs com diferentes versões do 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 | Valor |
|---|---|
| Cliente mínimo com suporte | Windows 2000 Professional [somente aplicativos da área de trabalho] |
| Servidor mínimo com suporte | Windows 2000 Server [somente aplicativos da área de trabalho] |
| Plataforma de Destino | Windows |
| Cabeçalho | msctf.h |
| DLL | Msctf.dll |
| Redistribuível | TSF 1.0 no Windows XPWindows 2000 Professional |