在C#中获取窗口的句柄

我宣布了以下类:

public partial class MainWindow : Window 

一旦窗口有一个,我需要得到窗口的实际句柄。 我怎么做,我应该把查询function。

我到目前为止所尝试的是:

 IntPtr hwnd = new WindowInteropHelper(this).Handle; 

但是我得到的句柄是0,这可能是因为它是在OnInitialized中植入的 – 也许窗口在这个阶段还没有准备好。 而且,是的 – 它通过WPF连接,谢谢你指出!

谢谢

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

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

  [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"); }