这是我学C++的时候写的 当时没贴出来怕影响不好 现在看来是想错了 呵呵 供大家参考参考 有点小问题 忘高手点拨 不明白 为什么 每几十条记录就重复3条2条4条不等 不报错
代码如下:
#include <iostream.h>
#include <windows.h>
#include <winuser.h>
#include <stdio.h>
void main()
{
char name[256] = "金山词霸 2005(暂停取词)(总在最上)";
//GLOBALHANDLE hGlobal; //GLOBALHANDLE型态的变量 <-全局句柄变量
char *pText,*pGlobal;
HGLOBAL hGlobal ;
bool bl=true; //控制循环
FILE *fp;
int i=0;
//int i=0;
//获得金山词霸句柄
HWND h = FindWindow(0,name);
//获得文本框句柄
HWND hEdit = FindWindowEx(h,NULL,"ComboBox",NULL);
HWND OKhEdit=FindWindowEx(h,hEdit,"ComboBox",NULL);
//获得左边树型句柄
HWND viewhEdit=FindWindowEx(h,NULL,"SysListView32",NULL);
SendMessage(OKhEdit,WM_GETTEXT,'a',0);
fp=fopen("data.txt","w+");
while(true)
{
PostMessage(h,WM_COMMAND,32791,0); //发送CTRL+A OK
Sleep(1);
PostMessage(h,WM_COMMAND,32775,0); //发送CTRL+C OK
Sleep(1);
OpenClipboard(h);
#ifdef UNICODE //是否unicode编码
hGlobal = GetClipboardData(CF_UNICODETEXT);
#else
hGlobal = GetClipboardData(CF_TEXT);
#endif
pGlobal=(char *)GlobalLock(hGlobal);
pText=(char *)malloc(GlobalSize(hGlobal));//获得内存块大小的函数
lstrcpy(pText,pGlobal);//为什么用lstrcpy就不出现内存只读的现象
GlobalUnlock(hGlobal);//解除锁定
CloseClipboard();
//输出到文本
fprintf(fp,"%s/n/n/n",pText);
fflush(fp);
//释放内存
free(pText);
pText=NULL;
/*++i;
if(i==100)
break;*/
//Sleep(1);
PostMessage(viewhEdit,WM_KEYDOWN,VK_DOWN,0);
}
fclose(fp);
}
/* 以下代码是获得剪切板的数据
GLOBALHANDLE hGlobal; //GLOBALHANDLE型态的变量 <-全局句柄变量
char *pText,*pGlobal;
OpenClipboard(h); //打开剪切板
//EmptyClipboard(); //清空剪切板
hGlobal=GetClipboardData(CF_TEXT); //获得剪切板句柄
pText=(char *)malloc(GlobalSize(hGlobal)); //配置一块与剪贴簿数据块大小相同的内存块,并配置一个指向该块的指标
pGlobal=(char *)GlobalLock(hGlobal); //此函数将句柄转换为指标
strcpy(pText,pGlobal); //复制到目标
cout<<pText<<endl;
CloseClipboard(); //关闭剪切板
*/