/****************************************************************************
设置剪贴板文本
****************************************************************************/
bool SetClipBoardText(const TCHAR* text, HWND hWnd)
{
assert(hWnd);
//打开剪贴板if (!::OpenClipboard(hWnd))
returnfalse;
//empties the clipboard and frees handles to data in the clipboardif (!EmptyClipboard())
{
CloseClipboard();
returnfalse;
}
//get text lengthint len = _tcslen(text);
//After SetClipboardData is called, the system owns the object identified by the hMem parameter. //The application can read the data, but must not free the handle or leave it locked. If the //hMem parameter identifies a memory object, the object must have been allocated using the //GlobalAlloc function with the GMEM_MOVEABLE and GMEM_DDESHARE flags.
HANDLE hClip = GlobalAlloc(GMEM_MOVEABLE | GMEM_DDESHARE, (len + 1)*sizeof(TCHAR));
if (hClip == NULL)
{
CloseClipboard();
returnfalse;
}
//locks a global memory object and returns a pointer to the first byte of the object's memory block
TCHAR* pBuf = (TCHAR*)GlobalLock(hClip);
if (pBuf == NULL)
{
GlobalFree(hClip);
CloseClipboard();
returnfalse;
}
memcpy(pBuf, text, len*sizeof(TCHAR));
pBuf[len] = NULL;
GlobalUnlock(hClip);
if (NULL == SetClipboardData(CF_TEXT, hClip))
{
GlobalFree(hClip);
CloseClipboard();
returnfalse;
}
CloseClipboard();
returntrue;
}
int _tmain(int argc, _TCHAR* argv[])
{
//设置类名和窗口名
HWND hWnd = ::FindWindow(L"ClassName",L"WindowName");
if (NULL != hWnd)
{
::SetForegroundWindow(hWnd);
//RECT rc;//::GetWindowRect(hWnd, &rc);//::SetCursorPos(rc.left + 257, rc.top + 281);//257 + (281<<16)效果同上面三句,设置坐标,坐标可以由spy++获得
::SendMessage(hWnd, WM_LBUTTONDOWN,0, 257 + (281<<16));
SetClipBoardText(_T("2433453"),hWnd);
::SendMessage(hWnd, WM_PASTE, 0, 0);
}
system("pause");
return0;
}