如题,
现在我软件1可以确认使用c#的windform写的一个传递数据信息的窗体
软件2是公司给我的一个已经做好可用软件,并且我也不知道软件2是什么语言编写的(注意给我的时候没有该软件的源代码,只有可运行的界面,软件2可以是窗体,可以使网站并不固定)要求:我编写的代码只能在软件1写(因为软件2只是个界面,不能操作软件2源码),怎么把软件1里数据传递到软件2中呢,之间怎么联系(如软件1有一个文本框 里面值是2 ,我怎么把这个2 数据传递到软件2里面某个文本框让他值为 2 呢)编程语言软件
现在我软件1可以确认使用c#的windform写的一个传递数据信息的窗体
软件2是公司给我的一个已经做好可用软件,并且我也不知道软件2是什么语言编写的(注意给我的时候没有该软件的源代码,只有可运行的界面,软件2可以是窗体,可以使网站并不固定)要求:我编写的代码只能在软件1写(因为软件2只是个界面,不能操作软件2源码),怎么把软件1里数据传递到软件2中呢,之间怎么联系(如软件1有一个文本框 里面值是2 ,我怎么把这个2 数据传递到软件2里面某个文本框让他值为 2 呢)编程语言软件
哈哈,同情楼主!
这种情况,以前也碰到过,第三方是一个牛气哄哄的公司,我当时的解决办法是这样:
1 首先通过windows API 找到该程序(exe的名称,exe打开后 窗体 title 的名称),对应好,开始
2 置顶该form,(也就是软件2),将form 移动到指定的坐标点。
3 将各个需要录入字段的 textBox 的位置存储到一个xml 中,(如果分辨率不一致会影响软件2的窗口控件位置,重新计算分辨率),然后读取到一个列表数组中。
4 根据列表数组和位置对应,每个出现的位置发送一个点击命令,然后发送一个 剪贴板的 ctrl +V 命令,顺序录完,在发送一个点击命令在 软件2 的提交按钮。自动录入结束...
楼主先测试一下,点击窗口标题位置后,按 tab 键,看光标焦点是不是顺序切换到不同的 textbox,如果是顺序切换,或有规律切换,也可以不存储各个各个字段位置,直接在在软件2置顶,点击title,依次发送 tab 命令和 ctrl +V 命令即可。
对,大概是意思,我也不想这么复杂,因为软件1是我们公司要求要做的软件, 软件2是别人公司软件,就是相当于我自己公司做一款软件1工具,给其他公司 软件2录入数据,(别的公司软件2也可以录入数据,但每次要手动录入数据,而我做好的这款,就可以让他自动填上数据,省去了好多不便之处)这是有客户需求额的,,思路:
游戏外挂、按键精灵、
使用WINDOWS鼠标键盘消息机制,
Send鼠标键盘消息到软件2的录入界面上,模拟人工操作。
对,大概是意思,我也不想这么复杂,因为软件1是我们公司要求要做的软件, 软件2是别人公司软件,就是相当于我自己公司做一款软件1工具,给其他公司 软件2录入数据,(别的公司软件2也可以录入数据,但每次要手动录入数据,而我做好的这款,就可以让他自动填上数据,省去了好多不便之处)这是有客户需求额的,,思路:
游戏外挂、按键精灵、
使用WINDOWS鼠标键盘消息机制,
Send鼠标键盘消息到软件2的录入界面上,模拟人工操作。
如果软件2是网页,则模拟http 进行 get、post数据。
十分感谢你的回答,我想知道你这个方法对与软件2不是c#windform写的,是其他语言写的,如java,c,c++等,而且有可能不是窗体程序,有可能是网站,也可以的实用吗,你上面说 -- 将各个需要录入字段的 textBox 的位置存储到一个xml 中 --这里的textbox位置怎么去,什么意思呢。非常感谢
你的意思是你的软件用的是http协议的网页吗?
你的意思是你的软件用的是http协议的网页吗?不是我软件1是用windform写的窗体, 软件2可能是窗体,也可能是网站中的网页
excel之间 也得都打开吧。
对,难点就在这里,我想了好多天了,还是不能解决,要疯了!!!!!!!不过目前觉得 用windows api 可以试试 难点在于定位软件2 文本框的位置 需要不断尝试吧 个人观点
这个可以做的
你查下WINDOWS API的对应方法吧
HWND FindWindow(LPCTSTR IpClassName,LPCTSTR IpWindowName)
BOOL SetWindowText(HWND hwnd,LPCTSTR lpStrjng)根据进程名字获取进程的句柄
再根据控件的名字以及窗体的名字获取控件的句柄
将文本赋值给指定句柄的控件
TCP/IP协议是通用的。或者,如果你指的不是传递数据包,,是软件通信的话可以用接口。
不同语言写的网站控件,读不到句柄,,这个想法只能实现一小部分的如果是网站的话 那就模拟http 进行 get、post数据
这个方法是可行的~
当然 具体情况具体分析
这也只是一个思路
对,大概是意思,我也不想这么复杂,因为软件1是我们公司要求要做的软件, 软件2是别人公司软件,就是相当于我自己公司做一款软件1工具,给其他公司 软件2录入数据,(别的公司软件2也可以录入数据,但每次要手动录入数据,而我做好的这款,就可以让他自动填上数据,省去了好多不便之处)这是有客户需求额的,,既然是软件1的功能,是代替手动的录入数据,那你要看平常是用的方式弄入进数据呀,
1、打开软件2,一笔一笔的输入数据,提交;
2、打开软件2,导入TXT文件或EXECL,提交。
具体看你是用的哪一种 ,如果是第一种,那你要可以根据数据库的字段,写一个接口程序,直接用第二种模式或者自动把相关数据写入软件2的数据库内,不就OK了???
如果是网页的话直接post到对方的URL!
很感谢,不知道前辈有这方面的代码吗。。可以贴上来吗
首先你先下一个叫UISpy的工具,这个工具可以捕获控件信息,然后根据捕获的控件信息进行操作,一般都是先找到相应元素对象,然后调用对象提供的方法即可,代码就我就不写了,网上一搜一大片
第二步:所为的参数就是数据,而在不同程序间像你想要的那样传,只有两个东西.一是字符串,二是事件;
解决办法为先找到窗口,再得到控件.设置它的值或者发送按键或者鼠标信息;
FINDWINDOW('EXE2 TITLE'NIL); enumwindows枚举控件;得到你想要的控件;SETTEXT(??)设置值;
SENDMESSAGE(??)发送事件;因为我做过,所以这些名字记得大概,楼主自己去了解清楚就好了.楼主开帖太少了.我开帖都是一百分的.不然谁花时间来回答你的问题呢...
很感谢,不知道前辈有这方面的代码吗。。可以贴上来吗
首先你先下一个叫UISpy的工具,这个工具可以捕获控件信息,然后根据捕获的控件信息进行操作,一般都是先找到相应元素对象,然后调用对象提供的方法即可,代码就我就不写了,网上一搜一大片请问这个方法对网站的网页控件有用吗,还是说只对窗体呢,比如获得给网页的文本框传值等
很感谢,不知道前辈有这方面的代码吗。。可以贴上来吗
首先你先下一个叫UISpy的工具,这个工具可以捕获控件信息,然后根据捕获的控件信息进行操作,一般都是先找到相应元素对象,然后调用对象提供的方法即可,代码就我就不写了,网上一搜一大片请问这个方法对网站的网页控件有用吗,还是说只对窗体呢,比如获得给网页的文本框传值等网页得用另一种方法,其实网页更加容易,不论操作什么,都是先获取HTMLElement对象,然后调用相应方法即可,都在Microsoft.mshtml.dll里面,具体的你网上一搜一大片
不然就模拟鼠标,键盘来实现,