本帖最后由 爱上老公 于 2015-4-21 14:55 编辑
前两天看了一位大神做了一个仿五笔输入的帖子,心里就琢磨着弄个拼音的,说干就干,本来想按照大神的思路,从输入法导出个汉字拼音字库什么的,但实施起来才发现问题,导是导出来了一个叫.bin的文件,打不开,
按照网上的方法改成ISO后缀,再用镜像软件装载,再打开,提示“镜像文件已经破坏,无法打开”,我丢它XX的,换成QQ输入法,导出来几个不知名文件,再次丢它XX,直接放弃,看来只能换个思路了!!!!{:soso_e101:}
一包烟和一包槟榔下去,抽搐半天,要不这样吧,反正高科技咱不行,来点肝胆的:提取要输入的单个字———再找到这个字的拼音————用搜狗输入法输入拼音————识字判断————再按键输出
对于大神们来说,思路出来了,东西出来是分分钟,对于我这种小白来说,思路还只是个念头,还是理想,还差1000008000里。费尽心思做了下面的工作:
1.网上找了一个汉字拼音对照表,换成TXT文件,当做字库
2.把这个汉字拼音对照表TXT文件每隔一行插入一个“/”,做什么用说不清,反正有用
3.用大漠做了一个7000字的汉字宋体字库,搜狗输出栏找字用
下面的工作就是:
遍历(i=1;i<5000;1++)
调试
一支烟
失败
一个槟榔
修改
遍历结束{:soso_e173:}
返回如下:
变量 待输入集合=数组()
变量 j
功能 退出_点击()
退出()
结束
功能 拼音分割()
//这个字库不是大漠字库,是自己网上下载的一个大约6500字的汉字+拼音的表格,再做成TXT的,然后每隔一行加个"/"符号
变量 c
变量 字库="C:\\Documents and Settings\\Administrator\\桌面\\汉字拼音对照表.txt"
变量 字体=字库设置("rc:宋体12号7000.txt",0)//这个字体文件是用大漠工具做一个7000字的字库,用于拼音输入完成后屏幕找字
变量 b = 文件获取行数(字库)//获取行数
变量 file = 文件读取内容(字库)//读文件
变量 待输入内容=编辑框获取文本("编辑框0")//要输入的字符放编辑框0
变量 待输入内容长度=字符串长度(待输入内容)//判断要输入的字符的长度
等待(2000)
遍历( j = 0; j < 待输入内容长度; j++)//从第一个字符开始
等待(20)
待输入集合[j]=字符串截取(待输入内容,j,j+1)//截取第一个字符
变量 字符类型 = 字符串返回字符(待输入集合[j],0)//得到字符的编码值
调试输出(字符类型)
变量 编码长度=字符串长度(字符类型)//得到字符的编码值
调试输出(编码长度)
//如果编码值长度小于等于3,说明是英文和英文符号,我在这里就直接放剪切板粘贴了,没做处理
如果(编码长度<=3)
设置剪切板(待输入集合[j])
键盘按下(17)
等待(20)
键盘按下(86)
等待(20)
键盘弹起(86)
等待(20)
键盘弹起(17)
否则
变量 ret=字符串查找(file,待输入集合[j])//如果编码长度是5位,则说明是汉字和汉字标点
调试输出(ret)
如果(ret==-1)//因为自己做的汉字拼音TXT文件没放中文标点进去,所以尽管编码长度也是5位,但也找不到,
// 我在这里就直接放剪切板粘贴了,没做处理
设置剪切板(待输入集合[j])
键盘按下(17)
等待(20)
键盘按下(86)
等待(20)
键盘弹起(86)
等待(20)
键盘弹起(17)
继续
否则//剩下的编码长度是5位的,全部是汉字了,重点在这,
遍历(变量 i = ret+1; i<ret+13; i++)//ret是前面找到的在汉字拼音对照表中的位置(把整个汉字拼音对照表TXT当做一个字符串)
等待(10)
//因为拼音在汉字的后面,在"/"的前面,截取拼音位置为:ret的后面,在"/"的前面
变量 ret1 = 字符串返回字符(file,i)
如果(ret1==47)//如果返回的编码为47("/"),就截取拼音
c=字符串截取(file,ret+1,i)
跳出
结束
结束
变量 拼音长度=字符串长度(c)//判断拼音的长度,依次输出每个字母
遍历(变量 s = 1; s < 拼音长度+1;s++)
等待(20)
变量 ret2 = 字符串返回字符(c,s)
如果(97<=ret2<=122)
键盘按键(ret2-32)//因为汉字拼音对照表TXT里面是小写,而TC键码是大写,要转成大写的编码值才行
结束
结束
等待(10)
输入判断()//拼音输入完成,进入文字查找
结束
结束
结束
结束
功能 输入判断()
变量 宽,高
变量 图片x,图片y
变量 x,y
变量 次数=5
变量 分辨率=系统获取分辨率(宽,高)
等待(20)
循环(次数)//在全屏找要输入的字,也就是判断搜狗的输出栏里面是否有这个字(本来之前是用通过找搜狗图标来确定找字的坐标,后来发现有时找不到且反应慢)
变量 查找 = 快速找字(0,0,宽,高,待输入集合[j],"0082E5-000000",1.0,x,y)//就改成了直接全屏找(速度还可以,一般每分钟70字左右,考试的话算及格,哈哈)
等待(50)
如果(查找==0)//如果找到这个字,就接着识别这个字前面的数字,再按对应数字的键
变量 选字 = 识字(x-33,y,x-3,y+20,"0082E5-000000",1.0)
如果(选字==1)
键盘按键(49)
结束
如果(选字==2)
键盘按键(50)
结束
如果(选字==3)
键盘按键(51)
结束
如果(选字==4)
键盘按键(52)
结束
如果(选字==5)
键盘按键(53)
结束
如果(选字==6)
键盘按键(54)
结束
如果(选字==7)
键盘按键(55)
结束
如果(选字==8)
键盘按键(56)
结束
如果(选字==9)
键盘按键(57)
结束
跳出
否则
键盘按键(187)//如果没有找到这个字,按"="键翻页再找,循环5次,不管是否找到,重新开始输入下一个字的拼音
等待(20)
结束
次数--
结束
结束
功能 热键0_热键()
线程开启("拼音分割","")
结束
功能 热键0_失去焦点()
热键销毁("热键0")
热键注册("热键0")
结束
|