WF程序

Ann725 2010-12-14 11:20:40
如何让编写的程序不能通过组合键启用任务管理器来结束进程
...全文
117 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
baobaolanoo 2011-02-27
  • 打赏
  • 举报
回复
http://blog.csdn.net/zdming2000/category/789570.aspx
工作流管理平台
朝三慕四 2011-02-26
  • 打赏
  • 举报
回复

//这是一个HOOK类
public class myHook
{
private IntPtr pKeyboardHook = IntPtr.Zero;//键盘钩子句柄
public delegate int HookProc(int nCode, Int32 wParam, IntPtr lParam);// 钩子委托声明
//键盘钩子委托实例不能省略变量
private HookProc KeyboardHookProcedure;
//底层键盘钩子
public const int idHook = 13;
//安装钩子
[DllImport("user32.dll", CallingConvention = CallingConvention.StdCall)]
public static extern IntPtr SetWindowsHookEx(int idHook, HookProc lpfn,
IntPtr pInstance, int threadId);
//卸载钩子
[DllImport("user32.dll", CallingConvention = CallingConvention.StdCall)]
public static extern bool UnhookWindowsHookEx(IntPtr pHookHandle);
//键盘钩子处理函数
private int KeyboardHookProc(int nCode, Int32 wParam, IntPtr lParam)
{
KeyMSG m = (KeyMSG)Marshal.PtrToStructure(lParam, typeof(KeyMSG));
if (pKeyboardHook != IntPtr.Zero)
{
switch (((Keys)m.vkCode))
{
case Keys.LWin:
case Keys.RWin:
case Keys.Delete:
case Keys.Alt:
case Keys.Escape:
case Keys.F4:
case Keys.Control:
case Keys.Tab:
return 1;
}
}
return 0;
}
//安装钩子
public bool InsertHook()
{
IntPtr pIn = (IntPtr)4194304;
if (this.pKeyboardHook == IntPtr.Zero)
{
this.KeyboardHookProcedure = new HookProc(KeyboardHookProc);
this.pKeyboardHook = SetWindowsHookEx(idHook, KeyboardHookProcedure, pIn, 0);
if (this.pKeyboardHook == IntPtr.Zero)
{
this.UnInsertHook();
return false;
}
}

return true;
}
//卸载钩子
public bool UnInsertHook()
{
bool result = true;
if (this.pKeyboardHook != IntPtr.Zero)
{
result = (UnhookWindowsHookEx(this.pKeyboardHook) && result);
this.pKeyboardHook = IntPtr.Zero;
}
return result;
}

[StructLayout(LayoutKind.Sequential)]
public struct KeyMSG
{
public int vkCode;
public int scanCode;
public int flags;
public int time;
public int dwExtraInfo;
}
}



private void timer1_Tick(object sender, EventArgs e)
{
Process[] p = Process.GetProcesses();//获取所有系统运行的进程
foreach (Process p1 in p)//遍历进程
{
try
{
//如果进程中存在名为“taskmgr”,则说明任务管理器已经打开
if (p1.ProcessName.ToLower().Trim() == "taskmgr")
{
p1.Kill();//关掉任务管理器的进程
Cursor.Clip = new Rectangle(x, y, s.Width, s.Height);//重新设置鼠标活动的区域
return;
}
}
catch
{
return;
}
}
}


这样就可以了吧....
朝三慕四 2011-01-09
  • 打赏
  • 举报
回复
C#不能屏蔽CTRL+ALT+DEL,不过用另一种方法...就是用Kill方法在TIMER中若发现taskmgr.exe就Kill掉就好了...
Ann725 2010-12-17
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 lianaiqiong 的回复:]
http://topic.csdn.net/u/20090203/16/1b8c7268-3cfd-473f-83b3-727151abb915.html
http://blog.csdn.net/panpanloveruth/archive/2007/06/20/1659236.aspx
[/Quote]
非常感谢 呵呵
朝三慕四 2010-12-15
  • 打赏
  • 举报
回复
路过帮顶...期待中...

1,979

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 其他语言讨论
社区管理员
  • 其他语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧