这是我用我的程序发送点击的方式:
private voID SendClick(Point location) { resetHandle = true; StringBuilder classname = new StringBuilder(100); while (classname.ToString() != "Internet Explorer_Server") { handle = Getwindow(handle,5); // 5 == child GetClassname(handle,classname,classname.Capacity); //MessageBox.Show(classname.ToString()); } IntPtr lParam = (IntPtr)((location.Y << 16) | location.X); IntPtr wParam = IntPtr.Zero; const uint downCode = 0x201; const uint upCode = 0x202; const uint moveCode = 0x200; PostMessage(handle,moveCode,wParam,lParam); //move mouse PostMessage(handle,downCode,lParam); // mousedown PostMessage(handle,upCode,lParam); // mouseup }
这就是resetHandle的作用:
private voID timer3_Tick(object sender,EventArgs e) { if (resetHandle == true) { handle = webbrowser1.Handle; resetHandle = false; } }
我不确定是否有更好的方法将鼠标事件发送到后台窗口,我对任何想法持开放态度.我真正想问的是,如果它真的仍然是最小化的话,是否有可能让一个窗口相信它是焦点?
任何帮助都将非常感谢!
解决方法 而不是保持窗口最小化,保持正常(恢复),但设置其X或Y坐标,使其位于屏幕外.如果你想给用户一个最小化和恢复它的假象,使用HwndSource.AddHook来监视SC_MINIMIZE.在你的HwndSourceHook处理程序中,根据伪最小化状态在屏幕上或屏幕外移动窗口,并将processed设置为true.
总结以上是内存溢出为你收集整理的c# – 你怎么愚弄窗户让人相信它有焦点?全部内容,希望文章能够帮你解决c# – 你怎么愚弄窗户让人相信它有焦点?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)