200 分求解,高级的简单问题:如何在关闭ie前弹出一个提示(200分)

  • 主题发起人 主题发起人 horseFree
  • 开始时间 开始时间
H

horseFree

Unregistered / Unconfirmed
GUEST, unregistred user!
关闭ie前实现如下功能:
弹出一个提示框或者隐藏右上角的关闭按纽。
 
^_^ 发财了,用javascript实现该功能

第一步:把如下代码加入<head>区域中
<script LANGUAGE="JavaScript">
<!-- Begin
function leave() {
window.open(
'tan1.htm','','toolbar=no,menubar=no,location=no,height=225,width=235');
}
// End -->
</script>

第二步:把<body>区域中内容改为:
<body bgcolor="#fef4d9" onUnload="leave()">

----------------------------------
IT论坛
www.itforum.cc
----------------------------------
 
可能我的提问过于简略,误导了一些朋友。举例说吧,当用户按下IE浏览器的关闭按纽时(也就是右上角的那个X),系统会给出一个对话框,按“是”就关闭,按“否”就不关闭。楼上的朋友给出的代码不能实现这一功能。
 
这个跟IE的版本有关,升到新的IE6,没这问题。
 
高手都睡觉去了?
 
唉,难道就没有会家子?
 
第一步:把如下代码加入<head>区域中
<script language="JavaScript">
function leave() {
return question("确定要退出吗?");
}
</script>

第二步:把<body>区域中内容改为:
<body bgcolor="#fef4d9" onUnload="return leave()">
 
记错了,是confirm或者直接
<body bgcolor="#fef4d9" onUnload="return confirm('确定要退出吗?')">
 
可以用WH_GETMESSAGE类型的钩子解决
这是dll部分的代码
unit Unit1;

interface
uses SysUtils,Classes,Windows,Dialogs,Forms,Messages,Controls;

function hookproc(ncode:integer;wparam:wparam;lparam:lparam):LRESULT;stdcall;
procedure EnableHook;stdcall;export;
procedure DisableHook;stdcall;export;
var hhk:Cardinal;
implementation

function hookproc(ncode:integer;wparam:wparam;lparam:lparam):LRESULT;stdcall;
var p:PMSG;
s:string;
begin
p:=PMSG(lparam);
s:=ExtractFileName(Application.ExeName);
if (s='iexplore.exe') or (s='IEXPLORE.EXE') then
begin
if p^.message=WM_CLOSE then
begin
if MessageDlg('Do you want to exit now?',mtConfirmation, [mbYes, mbNo], 0) = mrNo then
p^.message:=WM_USER+1;
end;
end;
result:=0;
end;

procedure EnableHook;stdcall;export;
begin
if hhk=0 then
begin
hhk:=SetWindowsHookEx(WH_GETMESSAGE,@hookproc,Hinstance,0);
end;
end;

procedure DisableHook;stdcall;export;
begin
if hhk<>0 then
begin
UnHookWindowsHookEx(hhk);
hhk:=0;
end;
end;

end.
 
能不能通过调用系统机制的办法解决?
 
帮你提一提
用系统日志钩子应该可以实现
 
同意akalun!!!
 
后退
顶部