public static bool SetClipboard(string strUserData)
{
if (!Win32ClipboardAPI.OpenClipboard(IntPtr.Zero))
return false;
Win32ClipboardAPI.EmptyClipboard();
byte[] byteUserData = System.Text.ASCIIEncoding.Unicode.GetBytes(strUserData);
IntPtr alloc = Win32MemoryAPI.GlobalAlloc(Win32MemoryAPI.GMEM_MOVEABLE | Win32MemoryAPI.GMEM_DDESHARE, new UIntPtr(Convert.ToUInt32(byteUserData.Length)));
IntPtr gLock = Win32MemoryAPI.GlobalLock(alloc); if ( byteUserData.Length > 0)
{
Marshal.Copy(byteUserData,0,gLock,byteUserData.Length);
} Win32MemoryAPI.GlobalUnlock(alloc);
//CF_Text = 1
Win32ClipboardAPI.SetClipboardData(1, alloc);
Win32ClipboardAPI.CloseClipboard();
return true;
}
{
if (!Win32ClipboardAPI.OpenClipboard(IntPtr.Zero))
return false;
Win32ClipboardAPI.EmptyClipboard();
byte[] byteUserData = System.Text.ASCIIEncoding.Unicode.GetBytes(strUserData);
IntPtr alloc = Win32MemoryAPI.GlobalAlloc(Win32MemoryAPI.GMEM_MOVEABLE | Win32MemoryAPI.GMEM_DDESHARE, new UIntPtr(Convert.ToUInt32(byteUserData.Length)));
IntPtr gLock = Win32MemoryAPI.GlobalLock(alloc); if ( byteUserData.Length > 0)
{
Marshal.Copy(byteUserData,0,gLock,byteUserData.Length);
} Win32MemoryAPI.GlobalUnlock(alloc);
//CF_Text = 1
Win32ClipboardAPI.SetClipboardData(1, alloc);
Win32ClipboardAPI.CloseClipboard();
return true;
}
为什么要用API呢?直接用Clipboard实现不行吗?
我现在只能改用api...
我现在只能改用api...
-------------------------------------------------------
还有这种事情?