程序最小化后,任务图标也隐藏了,只保留了任务栏左侧的系统栏图标,单击图标可以显示窗口并激活。
想实现快捷键快速显示窗口并激活,就像QQ一样,最小化只有系统栏图标后,只需按下CTRL+ALT+Z组合快捷键就能实现窗口的快速激活。我尝试了好久都没能成功,在Display上的监控貌似只在窗口激活状态时才能生效,求高手解惑。
下面这个是Display层面的监控,在激活状态时生效,但是最小化之后,非激活状态下组合快捷键就不行了,求高手解惑。
shell.getDisplay().addFilter(SWT.KeyDown, new Listener(){
@Override
public void handleEvent(Event e) {
// TODO Auto-generated method stub
if((e.keyCode==SWT.CR) && (e.stateMask==(SWT.CTRL|SWT.ALT))){
toggleDisplay(shell,tray);
}
}
});
8 个解决方案
#1
自己先顶一下。
#2
这么晚了,不晓得有高手指教一二不。
#3
已解决了,谢谢各位。
#4
#5
注册全局组合键的
#6
谢谢各位的回答,但是新的问题又出现了。
我用HOOK来是先全局键盘的监控,已经实现了,但是为什么经常会出现资源管理器异常的情况,通常都是任务栏卡死,甚至桌面都卡死了。一个特别明显的就是 按下“ALT”+“TAB”组合的时候,会显示所有的窗口缩量图,然后不能再他们之间切换。我在想是不是我的代码过于简单,占用太多的资源管理器资源?对win32里面的东西不熟悉,有木有碰到同样问题的人啊,求指点一二。
下面是我的代码:
//窗口隐藏时,按下键盘中“ALT”+“Z”组合键,显示窗口,系统栏图标隐藏
Hook.KEYBOARD.addListener(Main.this,new HookEventListener(){
//@Override
public void acceptHookData(HookData arg0) {
KeyboardHookData KHD = ((KeyboardHookData)arg0);
System.out.println(KHD.getWParam()+" - "+KHD.getTransitionState()); //Print code
if( KHD.getScanCode() == 44 && KHD.getTransitionState() && KHD.isAltPressed()){ //按下ALT+Z执行
Display.getDefault().syncExec(new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
if(!shell.getVisible()){
toggleDisplay(shell,tray);
}
}
});
}
}});
Hook.KEYBOARD.install(Main.this); //注册事件
程序本身能够执行,按下ALT+Z组合键,程序会从任务栏的最小状态下跳出来,就像QQ的Ctrl+Alt+Z那样,效果是实现了。但是反复多次执行任务栏会卡住,资源管理器会无响应。不知道是啥情况,希望动的大牛能指点迷津。谢谢啦。
我用HOOK来是先全局键盘的监控,已经实现了,但是为什么经常会出现资源管理器异常的情况,通常都是任务栏卡死,甚至桌面都卡死了。一个特别明显的就是 按下“ALT”+“TAB”组合的时候,会显示所有的窗口缩量图,然后不能再他们之间切换。我在想是不是我的代码过于简单,占用太多的资源管理器资源?对win32里面的东西不熟悉,有木有碰到同样问题的人啊,求指点一二。
下面是我的代码:
//窗口隐藏时,按下键盘中“ALT”+“Z”组合键,显示窗口,系统栏图标隐藏
Hook.KEYBOARD.addListener(Main.this,new HookEventListener(){
//@Override
public void acceptHookData(HookData arg0) {
KeyboardHookData KHD = ((KeyboardHookData)arg0);
System.out.println(KHD.getWParam()+" - "+KHD.getTransitionState()); //Print code
if( KHD.getScanCode() == 44 && KHD.getTransitionState() && KHD.isAltPressed()){ //按下ALT+Z执行
Display.getDefault().syncExec(new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
if(!shell.getVisible()){
toggleDisplay(shell,tray);
}
}
});
}
}});
Hook.KEYBOARD.install(Main.this); //注册事件
程序本身能够执行,按下ALT+Z组合键,程序会从任务栏的最小状态下跳出来,就像QQ的Ctrl+Alt+Z那样,效果是实现了。但是反复多次执行任务栏会卡住,资源管理器会无响应。不知道是啥情况,希望动的大牛能指点迷津。谢谢啦。
#7
或者有没有其他的不用Hook这种方法的思路吗,真心求教。
#8
有木有人啊
#1
自己先顶一下。
#2
这么晚了,不晓得有高手指教一二不。
#3
已解决了,谢谢各位。
#4
#5
注册全局组合键的
#6
谢谢各位的回答,但是新的问题又出现了。
我用HOOK来是先全局键盘的监控,已经实现了,但是为什么经常会出现资源管理器异常的情况,通常都是任务栏卡死,甚至桌面都卡死了。一个特别明显的就是 按下“ALT”+“TAB”组合的时候,会显示所有的窗口缩量图,然后不能再他们之间切换。我在想是不是我的代码过于简单,占用太多的资源管理器资源?对win32里面的东西不熟悉,有木有碰到同样问题的人啊,求指点一二。
下面是我的代码:
//窗口隐藏时,按下键盘中“ALT”+“Z”组合键,显示窗口,系统栏图标隐藏
Hook.KEYBOARD.addListener(Main.this,new HookEventListener(){
//@Override
public void acceptHookData(HookData arg0) {
KeyboardHookData KHD = ((KeyboardHookData)arg0);
System.out.println(KHD.getWParam()+" - "+KHD.getTransitionState()); //Print code
if( KHD.getScanCode() == 44 && KHD.getTransitionState() && KHD.isAltPressed()){ //按下ALT+Z执行
Display.getDefault().syncExec(new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
if(!shell.getVisible()){
toggleDisplay(shell,tray);
}
}
});
}
}});
Hook.KEYBOARD.install(Main.this); //注册事件
程序本身能够执行,按下ALT+Z组合键,程序会从任务栏的最小状态下跳出来,就像QQ的Ctrl+Alt+Z那样,效果是实现了。但是反复多次执行任务栏会卡住,资源管理器会无响应。不知道是啥情况,希望动的大牛能指点迷津。谢谢啦。
我用HOOK来是先全局键盘的监控,已经实现了,但是为什么经常会出现资源管理器异常的情况,通常都是任务栏卡死,甚至桌面都卡死了。一个特别明显的就是 按下“ALT”+“TAB”组合的时候,会显示所有的窗口缩量图,然后不能再他们之间切换。我在想是不是我的代码过于简单,占用太多的资源管理器资源?对win32里面的东西不熟悉,有木有碰到同样问题的人啊,求指点一二。
下面是我的代码:
//窗口隐藏时,按下键盘中“ALT”+“Z”组合键,显示窗口,系统栏图标隐藏
Hook.KEYBOARD.addListener(Main.this,new HookEventListener(){
//@Override
public void acceptHookData(HookData arg0) {
KeyboardHookData KHD = ((KeyboardHookData)arg0);
System.out.println(KHD.getWParam()+" - "+KHD.getTransitionState()); //Print code
if( KHD.getScanCode() == 44 && KHD.getTransitionState() && KHD.isAltPressed()){ //按下ALT+Z执行
Display.getDefault().syncExec(new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
if(!shell.getVisible()){
toggleDisplay(shell,tray);
}
}
});
}
}});
Hook.KEYBOARD.install(Main.this); //注册事件
程序本身能够执行,按下ALT+Z组合键,程序会从任务栏的最小状态下跳出来,就像QQ的Ctrl+Alt+Z那样,效果是实现了。但是反复多次执行任务栏会卡住,资源管理器会无响应。不知道是啥情况,希望动的大牛能指点迷津。谢谢啦。
#7
或者有没有其他的不用Hook这种方法的思路吗,真心求教。
#8
有木有人啊