fungsi TF_GetThreadMgr (msctf.h)
Fungsi TF_GetThreadMgr mendapatkan salinan objek manajer utas yang sebelumnya dibuat dalam utas panggilan.
Sintaks
HRESULT TF_GetThreadMgr(
[out] ITfThreadMgr **pptim
);
Parameter
[out] pptim
Penunjuk ke penunjuk antarmuka ITfThreadMgr yang menerima objek manajer utas. Ini menerima NULL jika tidak ada manajer utas yang dibuat dalam utas panggilan.
Nilai kembali
Nilai | Makna |
---|---|
S_OK | Fungsi berhasil. pptim akan menjadi NULL jika tidak ada manajer utas yang dibuat dalam utas panggilan. |
E_FAIL | Terjadi kesalahan yang tidak ditentukan. |
Keterangan
Jika tidak ada manajer utas yang dibuat dalam utas panggilan, fungsi ini akan mengatur pptim ke NULL dan mengembalikan S_OK. Oleh karena itu, perlu untuk memverifikasi bahwa fungsi berhasil dan bahwa pptim bukan NULL sebelum menggunakan pptim.
Contoh
Tidak ada pustaka impor yang tersedia yang menentukan fungsi ini, jadi perlu untuk mendapatkan pointer secara manual ke fungsi ini menggunakan LoadLibrary dan GetProcAddress. Contoh kode berikut menunjukkan cara mencapai hal ini.
Contoh berikut menunjukkan fungsi yang akan mencoba mendapatkan salinan objek manajer utas yang dibuat sebelumnya. Jika tidak ada objek manajer utas dalam utas panggilan, fungsi akan membuatnya.
Menggunakan LoadLibrary salah dapat membahayakan keamanan aplikasi Anda dengan memuat DLL yang salah. Lihat dokumentasi LoadLibrary untuk informasi tentang cara memuat DLL dengan benar dengan versi Windows yang berbeda.
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;
}
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows 2000 Professional [hanya aplikasi desktop] |
Server minimum yang didukung | Windows 2000 Server [hanya aplikasi desktop] |
Target Platform | Windows |
Header | msctf.h |
DLL | Msctf.dll |
Redistribusi | TSF 1.0 di Windows XPWindows 2000 Professional |