Bagikan melalui


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.

Catatan  

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

Lihat juga

GetProcAddress

ITfThreadMgr

LoadLibrary