当前位置: 代码迷 >> WinCE >> 请教哪有WinCE4上的五笔输入法上载,怎样将它加入到小弟我定制的系统中去,系统运行时怎么切换输入法
  详细解决方案

请教哪有WinCE4上的五笔输入法上载,怎样将它加入到小弟我定制的系统中去,系统运行时怎么切换输入法

热度:107   发布时间:2016-04-28 12:53:08.0
请问哪有WinCE4下的五笔输入法下载,怎样将它加入到我定制的系统中去,系统运行时如何切换输入法?
客户要求系统中加入五笔输入法,而PB中只带有拼音,要怎样才能添加第三方的输入法。

另外,在哪里可以下载到WinCE4。2上运行的五笔输入法软件。

还有就是系统运行时怎样切换输入法,如果有多种输入法存在,好像只能在中英文之间切换。

------解决方案--------------------
如果能加入五笔输入法那是相当不错了.
------解决方案--------------------
这种软件应该找专业公司定制吧
------解决方案--------------------
你要自己写输入法?!

只要按照wince的格式写,然后在注册进去就可以.

如果不自己写的话,就得去找别人做好的.然后再注册进去.
C/C++ code
// HandWriting.cpp : Implementation of DLL Exports.// Note: Proxy/Stub Information//        To build a separate proxy/stub DLL, //        run nmake -f HandWritingps.mk in the project directory.#include "stdafx.h"#include "resource.h"#include "initguid.h"#include <commctrl.h>#include <aygshell.h>#include <sipapi.h>#include "dllmain.h"#include "HandWriting.h"#include "HandWriting_classfactory.h"#include "HandWriting_i.c"// constant strings that we use for registering the server#define PENINPUT        TEXT("xx输入法")#define STRING_ONE        TEXT("1")#define ICON_NAME        TEXT("\\windows\\HandWriting.dll,0")#define EXEPATH            TEXT("\\windows\\HandWriting.dll")DWORD        g_dwObjectCount;HINSTANCE    g_hInstDll;CComModule    _Module;BEGIN_OBJECT_MAP(ObjectMap)END_OBJECT_MAP()/////////////////////////////////////////////////////////////////////////////// DLL Entry Pointextern "C" BOOL WINAPI DllMain(HANDLE hInstance, DWORD dwReason, LPVOID){    if (dwReason == DLL_PROCESS_ATTACH)    {        g_hInstDll = (HINSTANCE)hInstance;        _Module.Init(ObjectMap, (HINSTANCE)hInstance);    }    else if (dwReason == DLL_PROCESS_DETACH)    {        _Module.Term();    }    return TRUE;    }/////////////////////////////////////////////////////////////////////////////// Used to determine whether the DLL can be unloaded by OLESTDAPI DllCanUnloadNow(void){    if( !g_dwObjectCount )    {        return NOERROR;    }    return S_FALSE;}/////////////////////////////////////////////////////////////////////////////// Returns a class factory to create an object of the requested typeSTDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv){    HRESULT hr;        CClassFactory *pClassFactory = new CClassFactory( rclsid );        if( pClassFactory )     {        hr = pClassFactory->QueryInterface( riid, ppv );        RELEASE( pClassFactory );        return hr;    }    return E_OUTOFMEMORY;}// add all the registry entries needed to make this CLSID into a SIPHRESULT RegisterAClsid(LPTSTR pszClsid){    LONG        lRC;    HKEY        hClsidKey;    HKEY        hGuidKey;    HKEY        hRegKey;    DWORD        dwDisposition;     lRC = RegOpenKey(HKEY_CLASSES_ROOT, TEXT("CLSID"), &hClsidKey);    if (ERROR_SUCCESS != lRC)    {        OutputDebugString(TEXT("Failed to create the CLSID key"));        return E_FAIL;    }    // create the base key for the OLE object under clsid    lRC = RegCreateKeyEx(hClsidKey, pszClsid,                         0, TEXT("REG_SZ"), 0, KEY_WRITE, NULL, &hGuidKey, &dwDisposition);    if (ERROR_SUCCESS != lRC)    {        RegCloseKey(hClsidKey);        return E_FAIL;    }    // now set the named value under this key    lRC = RegSetValueEx(hGuidKey, NULL, 0, REG_SZ, (BYTE*) PENINPUT,                         sizeof(TCHAR)*(1+_tcslen(PENINPUT)));    if (ERROR_SUCCESS != lRC)    {        RegCloseKey(hGuidKey);        RegCloseKey(hClsidKey);        return E_FAIL;    }    // now, create the standard OLE server key    lRC = RegCreateKeyEx(hGuidKey, TEXT("InprocServer32"),                         0, TEXT("REG_SZ"), 0, KEY_WRITE, NULL, &hRegKey, &dwDisposition);    if (ERROR_SUCCESS != lRC)    {        RegCloseKey(hGuidKey);        RegCloseKey(hClsidKey);        return E_FAIL;    }    // now set the named value under this key    lRC = RegSetValueEx(hRegKey, NULL, 0, REG_SZ,  (BYTE*) EXEPATH,                         sizeof(TCHAR)*(1+_tcslen(EXEPATH)));    if (ERROR_SUCCESS != lRC)    {        RegCloseKey(hRegKey);        RegCloseKey(hGuidKey);        RegCloseKey(hClsidKey);        return E_FAIL;    }    RegCloseKey(hRegKey);    // this is the *only* thing which marks this as a sip    lRC = RegCreateKeyEx(hGuidKey, TEXT("IsSIPInputMethod"),                         0, TEXT("REG_SZ"), 0, KEY_WRITE, NULL, &hRegKey, &dwDisposition);    if (ERROR_SUCCESS != lRC)    {        RegCloseKey(hGuidKey);        RegCloseKey(hClsidKey);        return E_FAIL;    }    // now set the named value under this key    lRC = RegSetValueEx(hRegKey, NULL, 0, REG_SZ,  (BYTE*) STRING_ONE,                         sizeof(TCHAR)*(1+_tcslen(STRING_ONE)));    if (ERROR_SUCCESS != lRC)    {        RegCloseKey(hRegKey);        RegCloseKey(hGuidKey);        RegCloseKey(hClsidKey);        return E_FAIL;    }    RegCloseKey(hRegKey);    // this controls the icon we see in the sip menu    lRC = RegCreateKeyEx(hGuidKey, TEXT("DefaultIcon"),                         0, TEXT("REG_SZ"), 0, KEY_WRITE, NULL, &hRegKey, &dwDisposition);    if (ERROR_SUCCESS != lRC)    {        RegCloseKey(hGuidKey);        RegCloseKey(hClsidKey);        return E_FAIL;    }    // now set the named value under this key    lRC = RegSetValueEx(hRegKey, NULL, 0, REG_SZ,  (BYTE*) ICON_NAME,                         sizeof(TCHAR)*(1+_tcslen(ICON_NAME)));    if (ERROR_SUCCESS != lRC)    {        RegCloseKey(hRegKey);        RegCloseKey(hGuidKey);        RegCloseKey(hClsidKey);        return E_FAIL;    }    RegCloseKey(hRegKey);    RegCloseKey(hGuidKey);    RegCloseKey(hClsidKey);    return S_OK;}/////////////////////////////////////////////////////////////////////////////// DllRegisterServer - Adds entries to the system registrySTDAPI DllRegisterServer(void){    HRESULT    hr = S_OK;        hr = RegisterAClsid(TEXT("{42429695-AE04-11D0-A4F8-00AA00A749B9}"));    return hr;}/////////////////////////////////////////////////////////////////////////////// DllUnregisterServer - Removes entries from the system registrySTDAPI DllUnregisterServer(void){    _Module.UnregisterServer();    return S_OK;}