45fan.com - 路饭网

搜索: 您的位置主页 > 网络频道 > 阅读资讯:如何取金山词霸词库的程序?

如何取金山词霸词库的程序?

2016-09-03 17:57:09 来源:www.45fan.com 【

如何取金山词霸词库的程序?

这是我学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();//关闭剪切板
*/

 

 

本文地址:http://www.45fan.com/a/question/71925.html
Tags: 程序 金山 我学
编辑:路饭网
关于我们 | 联系我们 | 友情链接 | 网站地图 | Sitemap | App | 返回顶部