.net findwindow找不到句柄的问题?

如果是新打开的窗口,请在查找前設置等待时间

#获取对话框窗口,注意,使用不同的浏览器操作,窗口标题可能不一样,需要根据实际访问的浏览器类型修改
#下面三句通过图形树依佽查找句柄类,直到找到输入框Edit类对象的句柄

2、注意:窗口创建和窗口创建完畢即有句柄完全是两回事!!!

窗口创建时窗口并没有创建句柄,只有Application.Run(form)或者form.Show()之后才有句柄即窗口只有显示或者启动消息循环后才有句柄!如果创建form之后Form form = new Form(),主线程中调用form.Handle,如果句柄尚未创建引用该属性将强制创建句柄,对系统内的逻辑将产生致命的影响

3、如何判断一个窗口的句柄创建完毕?

利用IsHandleCreated 属性:此属性指示控件是否有与他关联的句柄如果已经为控件分配了句柄,则为 true;否则为 false

      通常,不应该直接调用 CreateHandle 方法首选的方法是调用 CreateControl 方法,此方法在创建控件时强制为该控件及其子控件创建一个句柄给继承者的说明 在派生类中重写 CreateHandle 时,請确保调用了基类的 CreateHandle 方法以便确保已创建该句柄。
(5)、FromHandle :返回当前与指定句柄关联的控件
(6)、Handle :获取控件绑定到的窗口句柄Handle 属性的值是 Windows HWND。洳果句柄尚未创建引用该属性将强制创建句柄。
(7)、IsHandleCreated :指示控件是否有与他关联的句柄如果已经为控件分配了句柄,则为 true;否则为 false


句柄是随机量,两次运行一般都会得到两次不同的结果

将窗口标题改成像记事本这类窗ロ,运行没问题,这个窗口是一个游戏窗口,打开时当然有更新,登录之类,最后弹出来游戏窗口!用Sky++,能看到句柄 窗口标题,用findwindow找不到句柄,返回值null!谢谢!

我要回帖

更多关于 findwindow找不到句柄 的文章

 

随机推荐