2009-01-05 218 views
9

我很可能正在处理几个项目,我需要从文件中获取数据并以编程方式将数据输入到另一个第三方应用程序(而不是我自己的应用程序)。一个问题:我不知道如何做到这一点。我需要输入数据(例如时间表上的时间,例如)任何人都可以引导我以正确的方向获得此技能?如何以编程方式与应用程序进行交互

其他规格:我在深夜写了原文,所以可能没有我应该有的详细。下面是一个例子:我的客户有一个ERP应用程序,用于在线工作人员收集时间戳,因为他们执行工作并在一天中完成项目。这个应用程序没有我可以用来提供数据的API。我听说过一个能够在这个应用的窗口中实际推送数据到屏幕上的人,并以编程的方式进行控制,这样数据就可以被收集到Excel工作表中,然后有效地上传到这个应用中。排序的反向屏幕刮。这不像是一个API,但它的工作原理。

我已经看到应用以类似的方式与其他应用进行交互。我能想到的一个很好的例子是SnagIt,它是截图工具。您可以命令它在特定应用程序中屏幕捕捉窗口,并且当您在该窗口周围移动鼠标时,指针下的控件将以红色勾勒出轮廓,以指示它将为您捕捉哪个控件。我认为这很有意思,并且可能仅仅是距离实际能够将键入这样的控制而已。

感谢您的评论和答复,我一直在追求。

+0

您是否想以编程方式将数据输入到第三方应用程序的GUI中? – Artelius 2009-01-05 08:57:50

+0

@Mike:可能需要澄清你的要求...... – 2009-01-05 08:58:28

回答

8

您可以使用AutoIt脚本将其自动化。这是一种简单的脚本语言,它隐藏了将消息发送到窗口和控件的一些复杂性。

6

不同的应用程序允许你以不同的方式编程控制它们。两种最常见的方法是:

1)某些应用程序暴露命令行参数。例如:

c:\> someapp.exe arg1 arg2 

可以调用从一个C++程序此类应用与这样的呼叫:

System("C:\\>someapp.exe arg1 arg2"); 

2)其他应用可以暴露强大得多,面向对象的API。例如,Microsoft Excel中可以让用户编程它通过使用App本身作为你的C#程序中的对象:

Excel.Application excelApp = new Excel.App() 

一旦你的应用程序对象,你可以调用它的方法来控制其行为。你可以,例如,打开一个新的Excel,像这样的后续调用文件:

excelApp.Workbooks.Open("\\Somefile.xls", ...); 

对于你想控制的任何第三方应用程序,你将不得不读它文件关于它如何让你做到这一点。有关如何编程Excel的信息,例如,可以找到here

0

我曾经做过类似的事情,其中​​一个Windows应用程序是由Web应用程序控制的。我使用了很多Win32 API。如果您的应用程序类似,那么请查找适用于初学者的开源Winamp遥控器。

3

如果应用程序没有设计为与之交互,这可能非常困难。您将需要发送模拟事件(假设鼠标正在做某些事情)。这样做的一种方法是编写一个不连接到真正的鼠标的鼠标驱动程序。但是,正如我所说,这取决于应用程序。具有更大用户基础的应用程序通常具有API以允许程序化交互,或者具有内置脚本功能(因此您可以让应用程序使用您的代码)。

0

或者如果你想要更加“黑客”,开始读取程序存储器并直接注入数据。 :P

但是,这可能非常复杂,而且由于程序如何使用内存,通常不会工作。

0

这不是最好的方法,但我见过一些使用剪贴板来做这种事情的应用程序。不幸的是,这可能还需要手动干预,因为您可能没有办法让应用程序以编程方式从/推送到剪贴板。

相关问题