税控接口 - 模拟录入
当时从其他税控接口里面提取的JSON脚本,根据脚本实现了一份Delphi的源代码。
JSON脚本:
[{"ClassName": "","Title": "开具增值税专用发票","X": 150,"Y": 3,"ConfirmTitle": "","ConfirmClass": "","SI_Mode": 0,"ParentPath": "","InvType": 0,//表示增票"ClickPosition": {"ImportPoint": "-680, 25", //导入按钮的位置"MImportPoint": "-680, 75",//手动导入按钮的位置"BImportPoint": "-680, 95", //自动导入按钮的位置"ListPoint":"-440,25", //清单按钮的位置"InvZKPoint":"-380,25", //发票界面的折扣按钮的位置"PricePoint":"-315,25","AddPoint":"-255,25","DeletePoint":"-195,25","PrintPoint": "-125, 25", //打印按钮的位置"SelectPoint": "590, 29", //选择单据按钮的位置"ListZKPoint":"450,25"},"CtrlPosition": {"InvFirstPoint": { //发票界面的首行位置"PosIndex": 0,"Reference": "2","Position":"120,325","ParentTitle": "","ParentClass": ""},"InvNo": { //发票号码"PosIndex": 16,"Reference": "2","Position":"730,53","ParentTitle": "","ParentClass": ""},"InvCode": { //发票代码"PosIndex": 17,"Reference": "2","Position":"200,53","ParentTitle": "","ParentClass": ""},"PrintDate": { //打印日期"PosIndex": 15,"Reference": "2","Position":"770,100","ParentTitle": "","ParentClass": ""},"GFName": { //购方名称"PosIndex": 38,"Reference": "2","Position":"230,135","ParentTitle": "","ParentClass": ""},"GFTaxNo": { //购方税号"PosIndex": 33,"Reference": "2","Position":"230,157","ParentTitle": "","ParentClass": ""},"GFAddrTel": { //购方地址电话"PosIndex": 35,"Reference": "2","Position":"230,180","ParentTitle": "","ParentClass": ""},"GFBankAccount": { //购方银行账号"PosIndex": 31,"Reference": "2","Position":"230,203","ParentTitle": "","ParentClass": ""},"XFBankAccount": { //销方银行账号"PosIndex": 22,"Reference": "2","Position":"235,553","ParentTitle": "","ParentClass": ""},"Memo": { //备注"PosIndex": 10,"Reference": "2","Position":"590,480","ParentTitle": "","ParentClass": ""},"FHR": { //复核人"PosIndex": 9,"Reference": "2","Position":"380,590","ParentTitle": "","ParentClass": ""},"SKR": { //收款人"PosIndex": 7,"Reference": "2","Position":"170,590","ParentTitle": "","ParentClass": ""}} }]
delphi代码:
function SetWindowCtrlText(aHandle: THandle; aValue: string): Boolean; beginSendMessage(aHandle, WM_SETTEXT, 0, integer(aValue)); end;procedure TFrmMain.btnInputClick(Sender: TObject); vari: integer;HR: THandle;ClassName, Title: string;sl: TSendInputHelper;InvFirstPoint: TPoint;current, BillDetail: TBillDetail;BillDetailList: TList<TBillDetail>;num2, millisecondsTimeout: integer; beginBillDetailList := TList<TBillDetail>.Create;for i := 1 to 6 dobeginBillDetail := TBillDetail.Create;BillDetail.SPMC := '商品名称';BillDetail.SPGGXH := '规格';BillDetail.JLDW := '单位';BillDetail.sl := 1;BillDetail.DJ := 1000;BillDetail.JE := 1000;BillDetailList.Add(BillDetail);end;for i := 0 to JSON.Count - 1 dobeginClassName := JSON.Items[i].ItemByName('ClassName').AsString;Title := JSON.Items[i].ItemByName('Title').AsString;if (ClassName <> '') and (Title <> '') thenbeginHR := FindWindow(PWideChar(ClassName), PWideChar(Title));endelsebeginif ClassName <> '' thenbeginHR := FindWindow(PWideChar(ClassName), nil);endelsebeginHR := FindWindow(nil, PWideChar(Title));end;end;if HR <> 0 thenbeginBreak;end;end;if HR <> 0 thenbeginSetForegroundWindow(HR);SetText(JSON.Items[i], HR, 'GFName', '购方名称');SetText(JSON.Items[i], HR, 'GFTaxNo', '1234567890123456');SetText(JSON.Items[i], HR, 'GFAddrTel', '地址电话');SetText(JSON.Items[i], HR, 'GFBankAccount', '银行账号');SetText(JSON.Items[i], HR, 'Memo', '备注');SetText(JSON.Items[i], HR, 'FHR', '复核人');SetText(JSON.Items[i], HR, 'SKR', '收款人');sl := TSendInputHelper.Create;tryInvFirstPoint := GetPoint(JSON.Items[i], 'InvFirstPoint');MoveAndClick(HR, InvFirstPoint);num2 := 0;millisecondsTimeout := 1000;for current in BillDetailList dobeginApplication.ProcessMessages;if (num2 <= BillDetailList.Count - 1) and (num2 > 0) thenbeginsl.AddDelay(millisecondsTimeout);sl.AddVirtualKey(VK_RETURN);sl.AddDelay(millisecondsTimeout);sl.AddVirtualKey(VK_HOME);sl.Flush;end;sl.AddText(current.SPMC);sl.AddVirtualKey(VK_TAB);sl.AddDelay(millisecondsTimeout);Delay(millisecondsTimeout);sl.AddText(current.SPGGXH);sl.AddVirtualKey(VK_TAB);sl.AddDelay(millisecondsTimeout);sl.AddText(current.JLDW);sl.AddVirtualKey(VK_TAB);sl.AddDelay(millisecondsTimeout);sl.AddText(CurrToStr(current.sl));sl.AddVirtualKey(VK_TAB);sl.AddDelay(millisecondsTimeout);sl.AddText(CurrToStr(current.DJ));sl.AddVirtualKey(VK_TAB);sl.AddDelay(millisecondsTimeout);sl.AddText(CurrToStr(current.JE));sl.AddVirtualKey(VK_RETURN);sl.AddDelay(millisecondsTimeout);sl.AddVirtualKey(VK_RETURN);sl.AddDelay(millisecondsTimeout);sl.AddVirtualKey(VK_RETURN);sl.Flush;inc(num2);end;finallyFreeAndNil(sl);end;end; end;procedure TFrmMain.FormCreate(Sender: TObject); beginJSON := TQJson.Create;JSON.Parse(JsonFile.Text); end;procedure TFrmMain.FormDestroy(Sender: TObject); beginFreeAndNil(JSON); end;function TFrmMain.GetPoint(aJSON: TQJson; aName: string): TPoint; varsPoint: string; beginsPoint := aJSON.ItemByPath('CtrlPosition.' + aName + '.Position').AsString;Result.X := StrToInt(Copy(sPoint, 1, Pos(',', sPoint) - 1));Result.Y := StrToInt(Copy(sPoint, Pos(',', sPoint) + 1, 10)); end;procedure TFrmMain.MoveAndClick(aHandle: THandle; p: TPoint); varrect: TRect;point: TPoint; beginGetWindowRect(aHandle, rect);point.X := rect.Left;point.Y := rect.Top;ClientToScreen(point);SetCursorPos(point.X + p.X, point.Y + p.Y);mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0); end;function TFrmMain.SetText(aJSON: TQJson; aHandle: THandle; aName, aValue: string): Boolean; varp1, p, point: TPoint;sPoint: string;sl: TSendInputHelper;rect: TRect; beginGetWindowRect(aHandle, rect);GetCursorPos(p1);sl := TSendInputHelper.Create;trysPoint := aJSON.ItemByPath('CtrlPosition.' + aName + '.Position').AsString;p.X := StrToInt(Copy(sPoint, 1, Pos(',', sPoint) - 1));p.Y := StrToInt(Copy(sPoint, Pos(',', sPoint) + 1, 10));point.X := rect.Left;point.Y := rect.Top;ClientToScreen(point);SetCursorPos(point.X + p.X, point.Y + p.Y + 75);mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);sl.AddText(aValue);sl.Flush;finallySetCursorPos(p1.X, p1.Y);FreeAndNil(sl);end; end;
转载于:https://www.cnblogs.com/masg/p/9925350.html
税控接口 - 模拟录入相关推荐
- java调用百望税控NISEC_SKSC.dll发送xml报文
1.第一个问题:Java调用dll文件 JNative方式调用dll JNative是一种能够使Java语言使调用DLL的一种技术,对JNI进行了封装,可能有些读者会有这样一个问题,JNative对J ...
- 软件升级|增值税发票税控开票软件(税控盘版)新增改进功能说明(版本号:V2.0.51_ZS_20221031)
增值税发票税控开票软件 (税控盘版) 新增改进功能说明 (版本号:V2.0.51_ZS_20221031) 2022-10 目录 第1章 概述 1.1 新增改进功能 1.1.1 发票管理功能 1.1. ...
- 软件更新|增值税发票税控开票软件(金税盘版_V2.051ZS_20221031)
公开 FWSK(KP)_ V2.0.51_ZS_20221031 综合说明 一.补丁下发说明 版本号 V2.0.51 补丁编号 FWSK(KP)_ V2.0.51_ZS_20221031 系统 名称 ...
- 上海税控器(桑达SED-320)疑难解析
此贴记录安装税控器过程中遇到困惑,系统有同样遭遇朋友能够少走弯路,借此鄙视桑达税控器SED-320,鄙视桑达税控管理系统,鄙视所有相关行政部门办事效率低下和傲慢. 上海桑达(SED-320)税控管理系 ...
- jmeter web服务器协议,【JMeter4.0学习(三)】之SoapUI创建WebService接口模拟服务端以及JMeter测试SOAP协议性能测试脚本开发(示例代码)...
目录: [阐述]:首先应该遇到了一个共同的问题,JMeter3.2之后就没有WebService(SOAP) Request,后来经过查询网上资料得知其实可以用HTTP请求来操作,结果是一样的. [步 ...
- pgadmin连接服务器失败_增值税发票税控软件:连接服务器失败是否使用离线文件进行更新?...
增值税发票税控软件:连接服务器失败是否使用离线文件进行更新? 第一步:确认本地电脑是否可以正常打开网页: 打开电脑,网页查看一下是否可以正常上网,打开百度发现,可以正常上网. 第二步:请先确认网络配置 ...
- java8四大核心函数式接口(模拟实现,全网最通俗易懂)
前言,如果不精通lamda表达式,请观看文章https://blog.csdn.net/wwwwwww31311/article/details/113116327 一.消费者接口 经典案例代码,怎么 ...
- recovery升级是显示进度条_注意!税控系统软件升级了,还有疑问看这里!
开票软件升级后,不少纳税人表示软件升级过程中遇到不少问题.可能各省税控系统软件升级存在功能和界面的少许差异,敬请纳税人咨询当地税务机关或其指定的服务商,按其要求操作.今天,整理了北京.上海等地纳税人在 ...
- 金税盘怎么安装在电脑上_金税盘怎么安装,电脑重装后怎样安装金税盘税控开票软件?...
金税盘是税务部门为了报税方便而进化出来的一个系统.通过金税盘可以开票.抄税.清卡.领购发票.金税盘使用增值税防伪税控系统,可开具增值税专用发票和增值税普通发票,一般的企业或个体商铺纳税人需要用到.第一 ...
- easymock接口模拟_EasyMock部分模拟
easymock接口模拟 EasyMock supports creating partial mock, where we can specify the methods that will be ...
最新文章
- 通过显微镜,人们又看到了一个活生生的但是肉眼看不到的世界。透过成千上万的点击数据,在线世界也就变得更为鲜活,更有意义了。...
- MurmurHash算法:高运算性能,低碰撞率的hash算法
- SDN学习之旅-RYU笔记(2)
- ajax获取网页新闻,基于Ajax的新闻网页动态数据的抓取方法及系统
- ubuntu16.04打开软件或终端的窗口自动在左上角
- 【Ogre-windows】环境配置
- 模块目录下site.php,使用apache配置为每个站点指定PHP包含目录
- codeforce 780C Andryusha and Colored Balloons
- eclipse切换git分支
- HW 基于接口/全局地址池的DHCP
- 计算机网络苏州大学题库,苏州大学计算机网络样卷B[计科大类].doc
- 【数据分析】基于matlab焊缝边缘检测算法对比分析 【含Matlab源码 260期】
- DBPN:Deep Back-Projection Networks For Super-Resolution
- mysql二进制日志管理
- 求任意多边形面积(凹多边形和凸多边形)
- java roundup函数_随手记之Linux 2.6.32内核SYN flooding警告信息
- java/kafka的使用,生产者 ,发布/发送消息,自定义数据/json数据,实战。
- 软件构造LAB1的一些思考
- zabbix 5.0监控客户端
- [k8s集群系列-09]Kubernetes 组件 Dashboard
热门文章
- 智能门锁主流品牌有哪些?选购门锁时要注重产品的哪些特性?
- Linux终端怎么打开root,在linux终端中执行root命令有哪些方法
- java 输入流详解_java输入输出流详解
- matlab小波分析特征提取,基于小波分析的特征信号提取的matlab程序
- 怎么用计算机撩人,如何用你的专业“撩人”?
- 怎么看外文文献的影响因子_怎么看文章的影响因子?
- 四阶龙格库塔法程序c语言,四阶龙格库塔法
- BCH编译码的matlab性能分析
- Java、JSP药品库房管理系统
- B站 汇编语言 视频 教程