C# Winform项目中,MainWindowHandle获取不到窗口句柄,返回值为零。请教怎么解决
C# Winform项目中,MainWindowHandle获取不到窗口句柄,返回值为零。请问如何解决。
在C# Winform项目中,通过Process打开了计算器(代码如下)。
Process pro = null;
pro = new Process();
pro.StartInfo.FileName = @"Calc.exe";
pro.Start();
IntPtr hwndCalc = pro.MainWindowHandle; //取不到计算器的窗口句柄,返回值为零。
pro.MainWindowHandle获取不到计算器的窗口句柄,返回值为零。
需要增加一个2秒的延时(代码如下)。
Process pro = null;
pro = new Process();
pro.StartInfo.FileName = @"Calc.exe";
pro.Start();
System.Threading.Thread.Sleep(2000); //新增了延时2秒
IntPtr hwndCalc = pro.MainWindowHandle; //增加了延时2秒,这样就可以获取计算器的窗口句柄
请问为什么一定要增加延时2秒后,才能获取到计算器的窗口句柄。如果不加延时2秒,可以有其它方法获取到计算器的窗口句柄?
------解决思路----------------------
只是告诉系统去Start一个进程,但是不一定已经准备好了各种信息,所以你不一定能访问到
------解决思路----------------------
计算器未必已经创建完毕
------解决思路----------------------
pro.Start();
pro.WaitForInputIdle();
IntPtr hwndCalc = pro.MainWindowHandle;
在C# Winform项目中,通过Process打开了计算器(代码如下)。
Process pro = null;
pro = new Process();
pro.StartInfo.FileName = @"Calc.exe";
pro.Start();
IntPtr hwndCalc = pro.MainWindowHandle; //取不到计算器的窗口句柄,返回值为零。
pro.MainWindowHandle获取不到计算器的窗口句柄,返回值为零。
需要增加一个2秒的延时(代码如下)。
Process pro = null;
pro = new Process();
pro.StartInfo.FileName = @"Calc.exe";
pro.Start();
System.Threading.Thread.Sleep(2000); //新增了延时2秒
IntPtr hwndCalc = pro.MainWindowHandle; //增加了延时2秒,这样就可以获取计算器的窗口句柄
请问为什么一定要增加延时2秒后,才能获取到计算器的窗口句柄。如果不加延时2秒,可以有其它方法获取到计算器的窗口句柄?
------解决思路----------------------
只是告诉系统去Start一个进程,但是不一定已经准备好了各种信息,所以你不一定能访问到
------解决思路----------------------
计算器未必已经创建完毕
------解决思路----------------------
pro.Start();
pro.WaitForInputIdle();
IntPtr hwndCalc = pro.MainWindowHandle;