我的节目是胜利形式(c#)。它应该打开一个外部程序,对它的主窗口进行打印,并关闭它。 通过使用Process.Start()我可以打开程序,但然后所有的焦点都在它上面,我的代码停止了。只有当我自己关闭它时,我的表单才会继续 - 但对于屏幕截图来说已经太晚了。 那么如何强制我的代码继续运行呢?
public void Runttk(string maromnum)
{
Process runttk = new Process();
runttk.StartInfo.UseShellExecute = true;
runttk.StartInfo.FileName = @"C:\\program.exe";
runttk.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
runttk.Start();
this.Focus();
try
{
if (runttk.WaitForInputIdle()==true)
{
PringJpg(maromnum);
Killttk();
}
}
catch (Exception e)
{
}
}
谢谢
更新: eventuanlly我用过Thread.Sleep(3000)。抓住了但是做了伎俩。 我没有使用背景工作,因为最终程序和我的代码的最终结果之间的同步不够明确。
答案 0 :(得分:1)
也许你的程序从不闲置 - 意味着runttk.WaitForInputIdle()==true
让你的应用等到关闭它。
添加限制(例如runttk.WaitForInputIdle(500)==true
)以满足您的需求。
答案 1 :(得分:1)
尝试使用代码,但使用其他程序(如notepad.exe),记事本运行然后控制下降到您调用PringJpg的位置。
所以我认为问题在于if(runttk.WaitForInputIdle()== true)阻塞,请尝试在此操作中添加超时。