如何从桌面的句柄中获取Form对象?

Dan*_*pez 0 .net c# desktop hwnd visual-studio-2010

我想知道是否有可能获得桌面的表格.我试图从桌面获取hWnd并使用Form.FromHandle来获取表单.但它总是返回null.所以我认为这是不可能的; 如果有可能,有人可以给我看一个示例代码.以下代码不起作用:

 hWnd = GetDesktopWindow();
 desktop = Form.FromHandle(hWnd) as Form;
 System.Diagnostics.Debugger.Break();
Run Code Online (Sandbox Code Playgroud)

PS有人也可以解释我在这里做错了什么.

dle*_*lev 6

您不能这样做,因为桌面窗口不是Form.FromHandle()尝试查找与给定窗口句柄对应的托管Control(在本例中为a Form).由于没有这样的Control存在,它会返回null.

  • 这绝对是一个窗口.但是作为一个窗口并不意味着它是一个"形式".`form`s是围绕非托管窗口的托管抽象.因此,所有`Form`都是(在某种程度上)窗口,但*并非所有窗口都是`Form`s*. (2认同)