//以下是主页面的js代码,转的
<script type="text/javascript">
//页面即将关闭事件
function window.onbeforeunload()
{
//用户点击浏览器右上角关闭按钮或是按alt+F4关闭
if(event.clientX > document.body.clientWidth && event.clientY<0 || event.altKey)
{
location.href="UserInfoServlet?flag=exit";
}
//用户点击任务栏,右键关闭。s或是按alt+F4关闭
else if(event.clientY > document.body.clientHeight || event.altKey)
{
location.href="UserInfoServlet?flag=exit";
}
//其他情况为刷新
else
{
}
}
</script>
//以下是servlet里的代码,自己写的
else if(flag.equals("exit"))
{
if(session.getAttribute("currentUser")!=null)
{
String username=((UserInfo)session.getAttribute("currentUser")).getYhName();
//从全局对象里移除该用户
List<UserInfo> list=(List<UserInfo>)application.getAttribute("allOnLineUsers");
for(int i=0;i<list.size();i++)
{
UserInfo u=list.get(i);
if(username.equals(u.getYhName()))
{
list.remove(i);
break;
}
}
//将改变后的全局集合重新放入全局对象
application.setAttribute("allOnLineUsers",list);
//从session里移除当前用户
session.removeAttribute("currentUser");
}
else
{
//跳转
request.getRequestDispatcher("login/login.jsp").
forward(request,response);
}
}
分享到:
相关推荐
在这个示例中,我们定义了一个快捷键`Ctrl+Alt+A`,当用户按下这个组合键时,窗体会在当前隐藏状态下显示,或者在显示状态下隐藏。`GenerateUniqueKeyId`方法用于生成一个唯一的ID,确保每个快捷键都有一个唯一的...
最后,在应用程序启动时调用`SetGlobalMouseHook`,并在关闭时调用`RemoveGlobalMouseHook`,这样就可以实现在整个系统中的全局鼠标事件监听。 这个VB.NET源码示例展示了如何在.NET环境中利用Windows API实现全局...
在IT领域,HOOK全局组合键显示与隐藏窗体热键实例是一个常见的应用场景,主要用于实现用户自定义的快捷操作。这个实例涉及到几个关键知识点,包括HOOK技术、组合键处理以及窗体的显示与隐藏。 首先,我们需要理解...
在VB6.0编程环境中,开发带历史信息的多文档界面(MDI)窗体是一项常见的任务,尤其适用于创建复杂的用户界面,如办公软件或工程应用。MDI窗体允许在一个父窗口内打开多个子窗口,提供了一种组织和管理多个相关任务...
全局钩子允许你的应用程序接收在系统任何地方发生的鼠标事件,而不仅仅是你的应用程序窗口内的事件。 首先,我们要理解Windows API中的`SetWindowsHookEx`函数,它是设置钩子的关键。这个函数用于安装一个钩子,...
全局鼠标钩子(WH_MOUSE_LL)是低级鼠标钩子的一种,它在用户级别运行,可以捕获所有线程的鼠标消息,包括那些不属于当前应用程序的消息。 创建全局鼠标钩子的主要步骤如下: 1. **设置钩子**:使用`...
全局钩子是由系统级进程创建的,它可以捕获整个系统中的指定事件,无论这些事件发生在哪个线程或进程。在C#中,我们需要使用P/Invoke(Platform Invoke)来调用WinAPI函数,因为这些函数不在.NET Framework的标准库...
4. **在主窗体中使用钩子**:最后,在主窗体中使用刚刚创建的`KeyboardHook`类来启动钩子,并监听特定的按键事件。 ```csharp public partial class MainForm : Form { private KeyboardHook keyboardHook; ...
在JSP(Java Server Pages)中,有时我们需要监听用户按下回车键时触发按钮的事件,但不同浏览器对此事件的处理方式可能会有所不同。本篇文章将详细介绍如何编写兼容火狐和IE的JavaScript代码来实现这一功能。 首先...
【计算机二级等级考试知识点】 1. 关键字与数据库设计:在数据库中,关键字(键或码)是...22. 窗体操作:窗体的Load事件在加载窗体时触发,Enabled属性为False时禁止所有交互,UnloadForm1会导致窗体从内存中移除。
在C#编程中,有时我们需要实现特定的功能,例如在某些应用程序中阻止用户的鼠标操作,比如屏蔽鼠标左键、右键和滚轮。这通常通过创建一个全局鼠标钩子来实现,这种技术允许我们监听和处理系统范围内的鼠标事件。在这...
同时,窗体的`Load`事件中设置钩子,`FormClosing`事件中移除钩子,以确保程序退出时钩子被正确释放。 钩子的实现可能需要用到`DllImport`属性导入相关的Windows API库,例如`user32.dll`,并定义相应的委托类型来...
5. **解除钩子**:最后,当不再需要监听键盘事件时,使用`UnhookWindowsHookEx`函数移除钩子。 在`WindowsFormsApplication4`这个项目中,开发者可能创建了一个名为`Form1`的窗体,包含了实现上述逻辑的代码。`Form...
在`Exer6抓取鼠标在其他程序中的形状`这个示例中,开发者可能会创建一个窗体,然后在窗体的某个事件(如`OnMouseMove`)中调用`GetCursorInfo`获取鼠标的当前状态。然后,他们可能会使用GDI(图形设备接口)来绘制...
在这个模拟输入法中,消息循环监听键盘事件,当用户按下按键时,程序会接收到对应的消息,并执行相应的汉字转换逻辑。 3. **卸载钩子**: 当不再需要监控键盘输入时,程序需要卸载之前安装的钩子。这涉及到调用`...
在 Delphi 中,我们可以使用 `SetWindowsHookEx` 函数来设置全局键盘钩子,这将使我们的程序能够捕获到系统范围内的键盘事件。 以下是实现键盘钩子的基本步骤: 1. 定义钩子回调函数:这个函数将在键盘事件发生时...
在这样的项目中,你可能会看到一个主窗体类,以及用于处理鼠标事件的代码,可能包括设置钩子、注册事件处理器和释放钩子的方法。 总的来说,C#中的鼠标钩子技术涉及到对Windows API的深入理解和使用,它可以用于...
全局HOOK是一种技术,允许程序在系统级别捕获键盘事件,无论焦点在哪个应用程序上。 **全局键盘HOOK简介** 全局键盘HOOK是一种系统级的钩子,它可以在操作系统中设置,以便在任何进程中产生的键盘事件(如按键按下...
总的来说,这个示例项目是一个很好的起点,帮助开发者了解如何在C#中利用Windows API来实现全局的键盘和鼠标钩子,从而捕获和响应用户的输入事件。通过研究这些代码,你可以学习到C#与底层Windows API交互的方式,...
7. **`UnhookWindowsHookEx`**:当不再需要监听鼠标事件时,使用这个函数移除之前设置的钩子,以避免资源泄露。 8. **安全性和性能考虑**:屏蔽鼠标按键可能会对用户体验造成影响,因此在实际应用中需谨慎处理。...