问题描述
大家好,
我有一个问题。
我在WINCE500的流驱动程序中使用了剪贴板。
I used clipboard in stream driver of WINCE500.
剪贴板运行良好。
我从WINCE500将平台更改为WINCE600,但驱动程序代码几乎没有更改。
I change my platform to WINCE600 from WINCE500, but driver code are almost not changed.
此时,剪贴板不起作用。
At this time, clipboard doesn't work.
我在WINCE500和WINCE600中使用了相同的代码。
I used same code in WINCE500 and WINCE600.
代码如下所示。
{
TCHAR szTemp[MAX_PATH] = _T("1234567890");
TCHAR *str;
if(OpenClipboard(NULL))
{
EmptyClipboard();
clipbuffer = GlobalAlloc(GHND, MAX_PATH);
str = (TCHAR *) GlobalLock(clipbuffer);
wcscpy(str, szTemp);
GlobalUnlock(clipbuffer);
if(SetClipboardData(CF_UNICODETEXT, clipbuffer))
RETAILMSG(DBGZ, (_T("[BCD0] SetClipboardData(SUCCESS)\r\n")));
else
RETAILMSG(DBGZ, (_T("[BCD0] SetClipboardData(FAIL : %#X)\r\n"), GetLastError()));
CloseClipboard();
keybd_event(VK_CONTROL, MapVirtualKey(VK_CONTROL, 0), KEYEVENTF_SILENT, 0);
keybd_event('V', MapVirtualKey('V', 0), KEYEVENTF_SILENT, 0);
keybd_event(VK_CONTROL, MapVirtualKey(VK_CONTROL, 0), KEYEVENTF_KEYUP, 0);
}
}
当我调用SetClipboardData函数时,函数返回FAIL(GetLastError是ERROR_OUTOFMEMORY)。
When I called SetClipboardData function, the function return FAIL(GetLastError is ERROR_OUTOFMEMORY).
我猜WINCE600有用户和内核模式,所以它是错误原因。
I guess WINCE600 have user and kernel mode so it's cause of error.
当然,相同的代码在应用程序级别上运行良好。(我通过VS2005测试)。
Of course, same code work well in application level.(I tested via VS2005).
我不知道WINCE500和WINCE600有什么区别。
I don't know what are difference of WINCE500 and WINCE600.
我没有如何在WINCE600的设备驱动程序中使用剪贴板的idia。
I have no idia of how to use clipboard in device driver of WINCE600.
谢谢。
问候/ Jin。
推荐答案
这篇关于如何在WINCE600设备驱动程序中使用剪贴板。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!