日期:2014-05-17  浏览次数:20854 次

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 命令即可。
------解决方案--------------------
引用:
Quote: 引用:

我大概明白楼主意思了,用软件1帮助软件2填数据,然后软件2按保存,存数据库


我说你那么复杂干嘛,你直接软件1实现不行吗


对,大概是意思,我也不想这么复杂,因为软件1是我们公司要求要做的软件, 软件2是别人公司软件,就是相当于我自己公司做一款软件1工具,给其他公司 软件2录入数据,(别的公司软件2也可以录入数据,但每次要手动录入数据,而我做好的这款,就可以让他自动填上数据,省去了好多不便之处)这是有客户需求额的,,




思路:
游戏外挂、按键精灵、
使用WINDOWS鼠标键盘消息机制,
Send鼠标键盘消息到软件2的录入界面上,模拟人工操作。
------解决方案--------------------
引用:
Quote: 引用:

楼主的问题属于自动化测试中经常遇到的问题,说白了就是GUI的各种操作罢了,用C#的话很简单,有个库叫UIAutomation,啥都能干了


很感谢,不知道前辈有这方面的代码吗。。可以贴上来吗

首先你先下一个叫UISpy的工具,这个工具可以捕获控件信息,然后根据捕获的控件信息进行操作,一般都是先找到相应元素对象,然后调用对象提供的方法即可,代码就我就不写了,网上一搜一大片