RAPI的应用
RAPI:Remote Application Programming Interface
RAPI是基于ActiveSync的.所以在Device要加ActiveSync的组件,同时PC端要装ActiveSync。这样Device是server端,PC是Client端。
我是用VC6.0作为工具编写PC端APP来控制Device的。当然我们原来的VC中并没有包含RAPI的相关API实现,所以要添加RAPI的相关lib文件和头文件:RAPI.lib和RAPI.h。同时要在project\settings里面设置连接RAPI.lib。
相关编程环境建立后就可以开始编程了。
1) 初始化RAPI。
开始编写的时候忘了这一点,结果总是不行。后来在网上狂搜,搜到了微软日本的一篇相关文章,才搞明白。日语里面有很多汉字,大体还知道他在说什么,看来武大郎的故事有可能是真的哦!
HRESULT hr = CeRapiInit(); //must initilize RAPI first before performing other operation.
if ( hr != ERROR_SUCCESS )
{ return; }
2) 下面以修改蓝牙注册表为例:
打开注册表:
wcscpy((wchar_t *)Name, L"Software\\Microsoft\\Bluetooth\\HCI\\psKey");
if ((lRet = CeRegOpenKeyEx(HKEY_LOCAL_MACHINE, (wchar_t *)Name, 0, 0, &hChildKey)) == ERROR_SUCCESS)
{.......}
RAPI的函数都使用unicode,所以所有字符串都必须是unicode形式。这一点要注意。
查询注册表的值:
if (ERROR_SUCCESS == (lRet = CeRegQueryValueEx(hChildKey,
L"Pskey2", NULL, &dwType, (LPBYTE)Data,
&dwSize)))
修改注册表的值:
if(ERROR_SUCCESS == (lRet = CeRegSetValueEx(hChildKey,
L"Pskey2", NULL, NULL, (LPBYTE)&wData,
sizeof(wData))))
然后关闭注册表项:
CeRegCloseKey(hChildKey);
3) 关闭RAPI
CeRapiUninit();
我对RAPI的了解只是皮毛。随着了解的深入,我们可以用它写出强大的应用程序,比如完美的通过ActiveSync的升级程序。