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秒,可以有其它方法获取到计算器的窗口句柄?
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秒,可以有其它方法获取到计算器的窗口句柄?
...全文
相关推荐
实现WinForm中嵌入外部EXE程序(调用系统api,源码)
实现在自己的winform内嵌入其他人的exe程序,从而可以实现多应用程序的组合,以及对原应用程序的部分功能的附加,但有部分受保护的应用程序则不能被嵌入
C# WinForm嵌入外部EXE:用Win32 API实现跨进程窗口融合
在Windows桌面应用开发中,界面集成与进程管理是系统集成项目中的常见难点。Win32 API作为操作系统提供的底层接口,为开发者提供了直接操作窗口句柄的能力,其中SetParent函数可实现跨进程的窗口父子关系重设,从而将外部程序界面嵌入到自研窗体内部。这种基于P/Invoke的技术方案,不仅解决了多窗口切换带来的操作割裂问题,还能将外部进程生命周期与主程序绑定,实现统一管控与异常感知。在工控上位机、企业内部工具整合、演示录屏等场景中,该方法无需第三方SDK即可完成UI层的深度融合,显著提升操作效率与系
C# WInForm窗体嵌入外部EXE程序.zip
C# WInForm窗体嵌入外部EXE程序
c#调用winapi实现WinForm中嵌入EXE程序
C#中,在WinForm嵌入其他可执行程序
winform把exe程序嵌套在窗体中
winform把将外部exe程序作为窗体的一部分,嵌套在自己定义的窗体中。


