3个回答
展开全部
1.当窗口失去焦点时,还能响应键盘消息
这个是做不到的,我的意思是这个窗口没有了焦点,Windows操作系统是不会将键盘消息发送给窗口的,要做的会,也是用"接力"的方式传递给该窗口,具体实现的话 我想全局钩子是可以的实现的但是那是C++,.Net下还没有用过
2.timer控件也能正常计时
这个应该是可以的,定时器控件不需要焦点的,就可以工作,不明包楼主这样问是什么意思
总结一下,不明白楼主要写这样的代码是处于什么样的需求环境下,我觉得楼主的思路有问题,仔细看看需求,重新整理一下思路吧,或者你把需求发出来看看一般做系统是不会有这样的要求的
全局钩子一般也是木马程序使用较多,因为不可能木马还有个窗口放在电脑桌面上……
这个是做不到的,我的意思是这个窗口没有了焦点,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程序集里面,文件内容我一贴进来百度就说内容太长了。。。。
展开全部
我想,可以做一些隐藏窗体或者服务之类的监听,这不是难点。至于LZ下面回复的响应热键,这个失去焦点的窗体好像都能的~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
当窗口失去焦点时,还能响应键盘消息,可以使用全局监控,用API来执行
timer在窗体失去焦点时还会正常运行的,除非你把它stop了...
timer在窗体失去焦点时还会正常运行的,除非你把它stop了...
追问
如何全局监控?怎么用API来执行?请解答,谢谢!
追答
网上有例子的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询