在C#中获取窗口句柄

时间:2009-02-18 19:02:22

标签: c# wpf windows

我声明了以下类:

public partial class MainWindow : Window

一旦窗口有窗口,我需要得到窗口的实际句柄。 我怎么能这样做,我应该把查询功能放在哪里。

到目前为止我尝试的是:

IntPtr hwnd = new WindowInteropHelper(this).Handle;

但我得到的句柄是0,这可能是因为它是在OnInitialized中种植的 - 也许窗口在那个阶段尚未准备好。 并且,是的 - 它通过WPF连接,谢谢你指出来了!

由于

3 个答案:

答案 0 :(得分:26)

OnInitialized方法中,尚未创建句柄。但是你走在正确的轨道上。如果您将来电置于Loaded事件中,则会创建句柄,并且应该返回正确的句柄

答案 1 :(得分:6)

你可以得到句柄的最早的地方是OnSourceInitialized

答案 2 :(得分:0)

 [DllImport("user32.dll", EntryPoint = "FindWindowEx")]
        public static extern int FindWindowEx(int hwndParent, int hwndEnfant, int lpClasse, string lpTitre);


int hwnd = FindWindowEx(0, 0, 0, title);//where title is the windowtitle

                //verification of the window
                if (hwnd == 0)
                {
                    throw new Exception("Window not found");
                }