也是转贴
如果你不想自己的程序被从Ctrl+Alt+Del弹出的窗口中强行关闭,
介绍一个Windows未公布的API函数给你:RegisterServiceProcess(ProcessID:Long,Type:Long)该函数存在于Kernel32.dll中.Process指向进程的ID,Type表示是否向系统注册该进程,是1,否0./////////////////////////////////////////////////////////////////////////////
function RegisterServiceProcess(a:longint;const b:longint):dword;stdcall;far;external 'Kernel32.dll' name 'RegisterServiceProcess';ddd:=GetCurrentProcessId;
if (RegisterServiceProcess(ddd,1)=0) then
showmessage('error!');////////////////////////////////////////////////////////////////////////////
用未公开函数RegisterServiceProcess
#define RSP_SIMPLE_SERVICE 1
#define RSP_UNREGISTER_SERVICE 0//下面代码为隐藏
DWORD dwID,redserv;
dwID = GetCurrentProcessId();
regserv = RegisterServiceProcess(pid,RSP_SIMPLE_SERVICE);
//恢复隐藏
dwID= GetCurrentProcessId()
regserv = RegisterServiceProcess(pid,RSP_UNREGISTER_SERVICE);
如果你不想自己的程序被从Ctrl+Alt+Del弹出的窗口中强行关闭,
介绍一个Windows未公布的API函数给你:RegisterServiceProcess(ProcessID:Long,Type:Long)该函数存在于Kernel32.dll中.Process指向进程的ID,Type表示是否向系统注册该进程,是1,否0./////////////////////////////////////////////////////////////////////////////
function RegisterServiceProcess(a:longint;const b:longint):dword;stdcall;far;external 'Kernel32.dll' name 'RegisterServiceProcess';ddd:=GetCurrentProcessId;
if (RegisterServiceProcess(ddd,1)=0) then
showmessage('error!');////////////////////////////////////////////////////////////////////////////
用未公开函数RegisterServiceProcess
#define RSP_SIMPLE_SERVICE 1
#define RSP_UNREGISTER_SERVICE 0//下面代码为隐藏
DWORD dwID,redserv;
dwID = GetCurrentProcessId();
regserv = RegisterServiceProcess(pid,RSP_SIMPLE_SERVICE);
//恢复隐藏
dwID= GetCurrentProcessId()
regserv = RegisterServiceProcess(pid,RSP_UNREGISTER_SERVICE);
调用频幕保护
这样在98和2000下都能用
private
procedure AppMessage(var Msg:TMsg;var handled:Boolean);
procedure TForm1.AppMessage(...);
begin
Handled:=False;
case Msg.Message of
WM_SYSKEYDOWN:
begin
if Msg.wParam=vk_tab then
handled:=True;
if Msg.wParam=vk_Control then
handled:=true;
end;
end;
form OnCreate
Application.OnMessage:=AppMessage;
对于第二个问题
在2000下可以用
Application.Title:='';
但是这种方法,在98下显示为空行
在OnKeyDown里面
if ssTab in shift then
begin
//add yourcode here
end;
if ssctrl in shift then
begin
//add yourcode here
end;