我声明了以下类:
public partial class MainWindow : Window
一旦窗口有窗口,我需要得到窗口的实际句柄。 我怎么能这样做,我应该把查询功能放在哪里。
到目前为止我尝试的是:
IntPtr hwnd = new WindowInteropHelper(this).Handle;
但我得到的句柄是0,这可能是因为它是在OnInitialized中种植的 - 也许窗口在那个阶段尚未准备好。 并且,是的 - 它通过WPF连接,谢谢你指出来了!
由于
答案 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");
}