本文介绍了如何在WINCE600设备驱动程序中使用剪贴板。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好,

我有一个问题。

我在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设备驱动程序中使用剪贴板。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-26 17:46