我需要与其他应用程序进行交互,位于托盘中。 我现在以这种方式使用TestStack White:
ProcessStartInfo processStartInfo = new ProcessStartInfo("MyProg.exe");
Application application = Application.AttachOrLaunch(processStartInfo);
_window = application.GetWindows()[0];
如果应用程序在此调用之前未运行,则一切正常,因为启动它,这是可见的。
相反,如果应用程序已经运行,并且在托盘中,White找不到任何窗口,我可以在控制台中看到以下日志:
无法找到此应用程序的任何窗口
...并且,在一些重试之后,它失败并出现异常。 现在,我找到的最佳解决方案是杀死应用程序并重新启动它:
application.Kill();
application = Application.Launch("MyProg.exe");
这是有效的。 但我想有更好的解决方案。
答案 0 :(得分:0)
打开要自动执行的应用程序并打印所有正在运行的进程名称,找到代表该应用程序的名称。
添加以下代码......
Application myApp;
myApp = Application.Attach("ProcessName");
希望它有所帮助...
答案 1 :(得分:0)
您是否尝试附加到explorer.exe进程?由于应用程序的系统托盘图标将驻留在explorer.exe下。 像这样:
您是否尝试附加到explorer.exe进程?由于应用程序的系统托盘图标将驻留在explorer.exe下。 像这样:
Process _explorerProcess = Process.GetProcessesByName("explorer")[0];
application = Application.Attach(_explorerProcess.Id);
Window desktopWindow = application.GetWindows()[0];
然后,您应该能够与系统托盘图标进行交互。