目前正在运行此代码以打开Business Vision(由其他人编写的应用程序,我无权访问该代码):
ProcessStartInfo myProcessStartInfo = new ProcessStartInfo(BusinessVisionPath);
myProcessStartInfo.UseShellExecute = false;
myProcessStartInfo.RedirectStandardOutput = true;
myProcess.StartInfo = myProcessStartInfo;
myProcess.Start();
StreamReader myStreamReader = myProcess.StandardOutput;
Boolean done = false;
while (done == false)
{
int s = myStreamReader.Read();
Console.WriteLine(s);
if (s == -1)
{
done = true;
Process IProcess = new Process();
ProcessStartInfo IProcessStartInfo = new ProcessStartInfo(QuickPrinterPath);
IProcessStartInfo.WindowStyle = ProcessWindowStyle.Maximized;
IProcess.StartInfo = IProcessStartInfo;
IProcess.Start();
}
}
myProcess.Close();
Console.ReadLine();
反正,
当BusinessVision关闭时,此代码当前打开我的打印机程序。
问题:
答案 0 :(得分:1)
您可能希望了解Microsoft的UI自动化。它允许您从其他应用程序的窗口读取数据,并以编程方式与其他应用程序的UI交互。几年前我用这个来自动化我们拥有的旧VB6应用程序上的一堆测试。我的代码将找到应用程序的主窗口,然后深入查看我感兴趣的菜单/控件/等。从那里我可以自动执行点击和击键,然后从各种标签中抓取我想要的文本/数据视窗。然后,我可以将数据拉入我的.NET应用程序并使用它做我想做的事。
在您的情况下,您需要一些始终运行的应用程序(例如Windows服务)来持续监控BV程序并检测消息框何时出现,然后通过启动您的程序做出相应的反应。
理解并开始工作需要相当多的工作,但它非常强大。有免费的应用程序可以更容易地浏览窗口的可视化层次结构,并查看可用的信息类型。看看微软的UISpy:
http://msdn.microsoft.com/en-us/library/ms727247.aspx
以下是一些其他可以帮助您入门的链接:
答案 1 :(得分:1)
您可以尝试使用其中一种获批准的方式来访问数据。
在Sage BusinessVision的案例中,有:
1是最简单的方法,没有什么是自动的 2更具挑战性,但可以让您直接访问基础数据 3要求您支付并且您满足Sage的要求。
如果你结合使用2.和一些UI自动化,你可以在某些UI事件上构建一些触发器,并带来充满数据库数据的新窗口。
请注意,UI自动化对于新版本的应用程序来说极其脆弱,并且每次都需要重新设计。
答案 2 :(得分:0)
答案 3 :(得分:0)
如果目标是.NET exe,那么开发人员可能会草率地公开他们的类和方法。在这种情况下,加载exe就好像它是应用程序的DLL依赖项并直接调用它们的方法。
答案 4 :(得分:0)
你总是可以试试反编译器:) dotPeek