模拟键盘的shift和ctrl键一块按下。keybd_event(VK_CONTROL, 0x1d, 0, 0);
keybd_event(VK_SHIFT, 0x2a, 0, 0); 
keybd_event(VK_CONTROL,0x1d, KEYEVENTF_KEYUP, 0);
keybd_event(VK_SHIFT, 0x2a, KEYEVENTF_KEYUP, 0); 

解决方案 »

  1.   

    分太少了,老兄#include <imm.h>
    bool load_ime( char* ime_name )
    {
    UINT cnt;
    HKL FAR *lpKL;
    char szImeName[13];
    HKL hKLReturn = 0;
    cnt = GetKeyboardLayoutList(0, NULL);
    if (!cnt) {
    /* error. */
    }

    lpKL = (HKL FAR *)LocalAlloc(LPTR, sizeof(HKL) * cnt);
    if (!lpKL) {
    /* not enough memory. */
    }

    cnt = GetKeyboardLayoutList(cnt, lpKL);
    if (!cnt) {
    /* error. */
    }

    while (0 < cnt) {
    cnt--;
    if (ImmGetIMEFileName(*(lpKL + cnt),
                szImeName, sizeof(szImeName))
    && !lstrcmpi(ime_name, szImeName))
    {
    hKLReturn = *(lpKL + cnt);
    break;
    }
    // ImmGetIMEFileName(*(lpKL + cnt),
    //            szImeName, sizeof(szImeName));
    // OutputDebugString( szImeName );

    }

    LocalFree(lpKL);
    if( hKLReturn != 0 )
    {
    ActivateKeyboardLayout( hKLReturn, 0 );
    return true;
    }
    else
    return false;

    }
    void CTestcursorDlg::OnButton1() 
    {
    load_ime( "unispim.ime" ); // 紫光
    // load_ime( "PINTLGNT.IME" ); // 微软拼音
    }