c#中调用外部EXE,如何知道该外部程序运行错误,并根据运行的结果 再执行其他功能

时间:2022-09-02 23:57:03
比如说我在C#中调用的是一个可以实现复制文件的exe,如果这个exe发现目的路径或者源路径不存在,这时会有错误出现,我该如何在c#中获知呢,困扰好几天了,求大神帮个忙。

9 个解决方案

#1



try
                    {
                        Process.Start(exe路径);
                    }
                    catch (Win32Exception err)
                    {
                           MessageBox.Show(err.Message);
                    }

#2


 这个我写入了,另外一种情况: 向U盘中复制文件,发现U盘不被识别,这时需要电脑重启一下,该怎么办?

#3


引用 2 楼 jinshenxiaomei 的回复:
 这个我写入了,另外一种情况: 向U盘中复制文件,发现U盘不被识别,这时需要电脑重启一下,该怎么办?

那这个逻辑判断是在那个被调用的exe程序里写了啊,当获取不到U盘的时候重启就可以了啊,至于重启有多种方式…

#4


在linux里有个环境变量,可以获知之前一个进程运行的状态,而在win下,应该只能依靠程序的返回值了 

#5


引用 3 楼 happySnow_zhe 的回复:
Quote: 引用 2 楼 jinshenxiaomei 的回复:

 这个我写入了,另外一种情况: 向U盘中复制文件,发现U盘不被识别,这时需要电脑重启一下,该怎么办?

那这个逻辑判断是在那个被调用的exe程序里写了啊,当获取不到U盘的时候重启就可以了啊,至于重启有多种方式…
   外部EXE只负责向U盘中复制文件,检测不到U盘,只会在CMD命令窗口中显示找不到,然后就退出了,而我需要在获知检测U盘不存在,或者U盘可用容量为0时,在C#中实现电脑重启。

#6


引用 4 楼 shawn_yang 的回复:
在linux里有个环境变量,可以获知之前一个进程运行的状态,而在win下,应该只能依靠程序的返回值了 
  我是在windows下做的。

#7


不同的程序不同,有的通过控制台输出错误信息,你可以获取。
有的弹出对话框或者在界面上显示,你需要用api函数去获取对应的界面内容,再判断。

#8


引用 5 楼 jinshenxiaomei 的回复:
Quote: 引用 3 楼 happySnow_zhe 的回复:

Quote: 引用 2 楼 jinshenxiaomei 的回复:

 这个我写入了,另外一种情况: 向U盘中复制文件,发现U盘不被识别,这时需要电脑重启一下,该怎么办?

那这个逻辑判断是在那个被调用的exe程序里写了啊,当获取不到U盘的时候重启就可以了啊,至于重启有多种方式…
   外部EXE只负责向U盘中复制文件,检测不到U盘,只会在CMD命令窗口中显示找不到,然后就退出了,而我需要在获知检测U盘不存在,或者U盘可用容量为0时,在C#中实现电脑重启。

既然你都知道这些逻辑在外部exe中没做,你可以先做好这些逻辑确保正确的情况下再调用外部exe程序。干嘛在绕逻辑圈呢?

#9


引用 8 楼 chuheiqian 的回复:
Quote: 引用 5 楼 jinshenxiaomei 的回复:

Quote: 引用 3 楼 happySnow_zhe 的回复:

Quote: 引用 2 楼 jinshenxiaomei 的回复:

 这个我写入了,另外一种情况: 向U盘中复制文件,发现U盘不被识别,这时需要电脑重启一下,该怎么办?

那这个逻辑判断是在那个被调用的exe程序里写了啊,当获取不到U盘的时候重启就可以了啊,至于重启有多种方式…
   外部EXE只负责向U盘中复制文件,检测不到U盘,只会在CMD命令窗口中显示找不到,然后就退出了,而我需要在获知检测U盘不存在,或者U盘可用容量为0时,在C#中实现电脑重启。

既然你都知道这些逻辑在外部exe中没做,你可以先做好这些逻辑确保正确的情况下再调用外部exe程序。干嘛在绕逻辑圈呢?
 明白了,谢谢你。

#1



try
                    {
                        Process.Start(exe路径);
                    }
                    catch (Win32Exception err)
                    {
                           MessageBox.Show(err.Message);
                    }

#2


 这个我写入了,另外一种情况: 向U盘中复制文件,发现U盘不被识别,这时需要电脑重启一下,该怎么办?

#3


引用 2 楼 jinshenxiaomei 的回复:
 这个我写入了,另外一种情况: 向U盘中复制文件,发现U盘不被识别,这时需要电脑重启一下,该怎么办?

那这个逻辑判断是在那个被调用的exe程序里写了啊,当获取不到U盘的时候重启就可以了啊,至于重启有多种方式…

#4


在linux里有个环境变量,可以获知之前一个进程运行的状态,而在win下,应该只能依靠程序的返回值了 

#5


引用 3 楼 happySnow_zhe 的回复:
Quote: 引用 2 楼 jinshenxiaomei 的回复:

 这个我写入了,另外一种情况: 向U盘中复制文件,发现U盘不被识别,这时需要电脑重启一下,该怎么办?

那这个逻辑判断是在那个被调用的exe程序里写了啊,当获取不到U盘的时候重启就可以了啊,至于重启有多种方式…
   外部EXE只负责向U盘中复制文件,检测不到U盘,只会在CMD命令窗口中显示找不到,然后就退出了,而我需要在获知检测U盘不存在,或者U盘可用容量为0时,在C#中实现电脑重启。

#6


引用 4 楼 shawn_yang 的回复:
在linux里有个环境变量,可以获知之前一个进程运行的状态,而在win下,应该只能依靠程序的返回值了 
  我是在windows下做的。

#7


不同的程序不同,有的通过控制台输出错误信息,你可以获取。
有的弹出对话框或者在界面上显示,你需要用api函数去获取对应的界面内容,再判断。

#8


引用 5 楼 jinshenxiaomei 的回复:
Quote: 引用 3 楼 happySnow_zhe 的回复:

Quote: 引用 2 楼 jinshenxiaomei 的回复:

 这个我写入了,另外一种情况: 向U盘中复制文件,发现U盘不被识别,这时需要电脑重启一下,该怎么办?

那这个逻辑判断是在那个被调用的exe程序里写了啊,当获取不到U盘的时候重启就可以了啊,至于重启有多种方式…
   外部EXE只负责向U盘中复制文件,检测不到U盘,只会在CMD命令窗口中显示找不到,然后就退出了,而我需要在获知检测U盘不存在,或者U盘可用容量为0时,在C#中实现电脑重启。

既然你都知道这些逻辑在外部exe中没做,你可以先做好这些逻辑确保正确的情况下再调用外部exe程序。干嘛在绕逻辑圈呢?

#9


引用 8 楼 chuheiqian 的回复:
Quote: 引用 5 楼 jinshenxiaomei 的回复:

Quote: 引用 3 楼 happySnow_zhe 的回复:

Quote: 引用 2 楼 jinshenxiaomei 的回复:

 这个我写入了,另外一种情况: 向U盘中复制文件,发现U盘不被识别,这时需要电脑重启一下,该怎么办?

那这个逻辑判断是在那个被调用的exe程序里写了啊,当获取不到U盘的时候重启就可以了啊,至于重启有多种方式…
   外部EXE只负责向U盘中复制文件,检测不到U盘,只会在CMD命令窗口中显示找不到,然后就退出了,而我需要在获知检测U盘不存在,或者U盘可用容量为0时,在C#中实现电脑重启。

既然你都知道这些逻辑在外部exe中没做,你可以先做好这些逻辑确保正确的情况下再调用外部exe程序。干嘛在绕逻辑圈呢?
 明白了,谢谢你。