C#使用Process打印导致的问题
我现在准备使用默认打印机打印WORD文档,但是在实际环境中使用反映说一旦打印卡死,会导致后面的操作无法进行
这是我自己写的一段测试打印的代码,打印部分大致与实际相同
在本地计算机测试时(默认的是xps打印),Word会正常打开,弹出xps保存的对话框,保存或者取消后才弹出提示框
这说明,pro.Start()确实包含了整个打印过程,等到打印结束才会进行下一步MessageBox.Show("")
由于不知道是什么原因导致打印过程卡死,目前只有结束进程,但是在任务管理器中还是能看到WINWORD(用Process打印过程中打开的),如果卡死N次,就会有N个WINWORD进程。所以现在要想办法把这个问题解决掉这个问题,要把启动的WINWORD给杀掉
操作时先点Button1,再点Button2,但是在 pro.Kill()时,报了一个System.InvalidOperationException{"没有与此对象关联的进程。"}
问:我要怎样才能停止pro,并把pro中启动的WINWORD给关闭(不能用查询WINWORD进程并杀掉,万一用户正在使用的WINWORD被误关)
这是我自己写的一段测试打印的代码,打印部分大致与实际相同
string filename = @"C:\test.docx";
pro = new System.Diagnostics.Process();
pro.StartInfo.CreateNoWindow = true;
pro.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
pro.StartInfo.UseShellExecute = true;
pro.StartInfo.FileName = filename;
pro.StartInfo.Verb = "print";
pro.Start();
MessageBox.Show("");//测试用的提示语句
在本地计算机测试时(默认的是xps打印),Word会正常打开,弹出xps保存的对话框,保存或者取消后才弹出提示框
这说明,pro.Start()确实包含了整个打印过程,等到打印结束才会进行下一步MessageBox.Show("")
由于不知道是什么原因导致打印过程卡死,目前只有结束进程,但是在任务管理器中还是能看到WINWORD(用Process打印过程中打开的),如果卡死N次,就会有N个WINWORD进程。所以现在要想办法把这个问题解决掉这个问题,要把启动的WINWORD给杀掉
public partial class Form1 : Form
{
System.Diagnostics.Process pro;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Print();
}
private void Print()
{
Thread t = new Thread(delegate()
{
string filename = @"C:\test.docx";
pro = new System.Diagnostics.Process();
pro.StartInfo.CreateNoWindow = true;
pro.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
pro.StartInfo.UseShellExecute = true;
pro.StartInfo.FileName = filename;
pro.StartInfo.Verb = "print";
pro.Start();
MessageBox.Show("");
});
t.IsBackground = true;
t.Start();
}
private void button2_Click(object sender, EventArgs e)
{
if (pro != null)
{
pro.Kill();
pro = null;
}
}
}操作时先点Button1,再点Button2,但是在 pro.Kill()时,报了一个System.InvalidOperationException{"没有与此对象关联的进程。"}
问:我要怎样才能停止pro,并把pro中启动的WINWORD给关闭(不能用查询WINWORD进程并杀掉,万一用户正在使用的WINWORD被误关)
...全文
相关推荐
C#关闭指定名字进程的方法
主要介绍了C#关闭指定名字进程的方法,涉及C#进程操作的相关技巧,需要的朋友可以参考下
C#基于socket(IOCP)通信源码(附文件上传下载打印并带进度条及分包格式说明等)
本源码含有文件上传下载并带有相应的进度条,包括分包格式等!便于学习并扩展,更深入的了解socket的使用! 希望对于大家有帮助!非常感谢支持! 软件使用版本:vs2013
csharpjkmemoty.rar_Windows编程_C#_
基于C#的内存使用状态监控,监控物理内存、使用内存和虚拟内存的大小和使用情况
C# 通过进程命令行包含的字符串结束进程
通过进程命令行包含的字符串一次性结束多个进程的完整学习示例。字符串可以是程序名、脚本名、路径等。VS 2015源码。
C#后台html文件转pdf
简单实用在文件里有了,使用说明在此不再赘述,按照步骤下来应该是没有问题,有问题的私聊~


