C#如何实现,当窗口失去焦点时,还能响应键盘消息,timer控件也能正常计时?

没有引人的分数,仅学习交流而已。诚望高手出现。... 没有引人的分数,仅学习交流而已。诚望高手出现。 展开
 我来答
xuf19
2012-11-09 · 超过19用户采纳过TA的回答
知道答主
回答量:56
采纳率:0%
帮助的人:41.5万
展开全部
1.当窗口失去焦点时,还能响应键盘消息
这个是做不到的,我的意思是这个窗口没有了焦点,Windows操作系统是不会将键盘消息发送给窗口的,要做的会,也是用"接力"的方式传递给该窗口,具体实现的话 我想全局钩子是可以的实现的但是那是C++,.Net下还没有用过
2.timer控件也能正常计时
这个应该是可以的,定时器控件不需要焦点的,就可以工作,不明包楼主这样问是什么意思

总结一下,不明白楼主要写这样的代码是处于什么样的需求环境下,我觉得楼主的思路有问题,仔细看看需求,重新整理一下思路吧,或者你把需求发出来看看一般做系统是不会有这样的要求的
全局钩子一般也是木马程序使用较多,因为不可能木马还有个窗口放在电脑桌面上……
追问
想想,QQ在最小化到系统托盘时还可以响应热键,为什么我做不到响应键盘消息?我只想做个窗口,在失去焦点十分钟后自动关闭,或在这十分钟内按Esc键关闭窗口。我还想做个窗口,这个窗口完全透明,如何检测鼠标,如果发现鼠标十分钟内无动作,窗口关闭?这些都可以实现不?恳请解答,谢谢!
追答
  1.响应热键
  要设置快捷键必须使用user32.dll下面的两个方法。
  RegisterHotKey //注册系统热键的API函数
  UnregisterHotKey //删除系统热键的API函数
  百度一下 应该有代码的

  2. 窗口在失去焦点十分钟后自动关闭,或在这十分钟内按Esc键关闭窗口
  这个用计时器应该可以办到,因为timer组件是不依靠窗体焦点的
  按Esc键关闭窗口,应该和第一个问题的解决方案是一样的

  3.窗口完全透明,你是指Windows7中的玻璃窗口的效果,还是说窗口隐藏起来,检测鼠标也要用到Windows API 现在想不起来了,你可以查一下Windows API 手册,
  如果是玻璃效果推荐用WPF,
  Winfrom就不知道怎么弄了
  下面是玻璃窗口效果的代码,你可以做成一个类库用在你自己的项目中
  整个类库太大,只贴了一部分
  [DllImport("dwmapi.dll", PreserveSig = false)]
  public static extern bool DwmIsCompositionEnabled();
  [StructLayout(LayoutKind.Sequential)]
  public struct Margins
  {
  public Margins(Thickness t)
  {
  Left = (int)t.Left;
  Right = (int)t.Right;
  Top = (int)t.Top;
  Bottom = (int)t.Bottom;
  }
  public int Left;
  public int Right;
  public int Top;
  public int Bottom;
  }
  public static bool ExtendGlassFrame(Window window, Thickness margin)
  {
  if (window != null)
  {
  if (!DwmIsCompositionEnabled()) // 判断是否启用了玻璃效果
return false;

  IntPtr hwnd = new WindowInteropHelper(window).Handle;
  window.Background = Brushes.Transparent;
HwndSource.FromHwnd(hwnd).CompositionTarget.BackgroundColor = Colors.Transparent;

  Margins margins = new Margins(margin);
  DwmExtendFrameIntoClientArea(hwnd, ref margins);
  return true;
  }
  return false;
}

  在程序里面 还需要有一个清单文件来描述你绑定到最新的Windows程序集里面,文件内容我一贴进来百度就说内容太长了。。。。
  
  

  
leafly0719
2012-11-10 · TA获得超过117个赞
知道答主
回答量:64
采纳率:0%
帮助的人:50.7万
展开全部
我想,可以做一些隐藏窗体或者服务之类的监听,这不是难点。至于LZ下面回复的响应热键,这个失去焦点的窗体好像都能的~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百百mp3
2012-11-10 · TA获得超过855个赞
知道小有建树答主
回答量:901
采纳率:90%
帮助的人:551万
展开全部
当窗口失去焦点时,还能响应键盘消息,可以使用全局监控,用API来执行

timer在窗体失去焦点时还会正常运行的,除非你把它stop了...
追问
如何全局监控?怎么用API来执行?请解答,谢谢!
追答
网上有例子的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式