using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;
using System.Net;
using System.IO;
using System.Security.Cryptography;
using System.Drawing.Drawing2D;
using System.Management;
using System.Management.Instrumentation;
namespace UI
{
public partial class Form1 : Form
{
Hook h = new Hook();
public Form1()
{
InitializeComponent();
}
string password;
private void Form1_Load(object sender, EventArgs e)
{
FullScreen();
Locations();
txt_pwd.Focus();
lb_name.Text = this.HostName;
showhead();
h.Hook_Start();
tm_kill.Start();
WritePwd();
}
public void showhead()//头像显示
{
if (File.Exists(@"C:\Windows\System32\Face.bmp"))
{
pic_head.ImageLocation = @"C:\Windows\System32\Face.bmp";
}
else
{
pic_head.Image = UI.Properties.Resources.WIN8Head;
}
}
string pwd2 = null;
protected override bool ProcessKeyEventArgs(ref Message m)//禁用任务管理器
{
KillTaskmgr();
return base.ProcessKeyEventArgs(ref m);
}
protected override void WndProc(ref Message m)//禁用鼠标右键
{
if (m.Msg == 0x205)
{
}
base.WndProc(ref m);
}
public void WritePwd()//写配置文件
{
if (File.Exists(@"C:\Windows\System32\lock.pwd"))
{
password = File.ReadAllText(@"C:\Windows\System32\lock.pwd", Encoding.Default);
if (File.Exists(@"C:\Windows\System32\unlock.ID"))
{
pwd2 = File.ReadAllText(@"C:\Windows\System32\unlock.ID", Encoding.Default);
}
else
pwd2 = null;
}
else
{
password = MD5(UI.frmLogin.PWD);
}
}
public string HostName//本机名
{
get
{
// string hostname = Dns.GetHostName();
string hostname = Convert.ToString( UI.frmLogin.CardID);
return hostname;
}
}
public void Locations()//控件相对于屏幕位置
{
Rectangle ScreenArea = System.Windows.Forms.Screen.GetBounds(this);
int width = ScreenArea.Width; //屏幕宽度
int height = ScreenArea.Height;
pl_login.Location = new Point((width - 480) / 2, (height - 200) / 2);
bt_about1.Location = new Point(bt_about1.Location.X, height - 50);
pl_about.Location = new Point(pl_about.Location.X, height - 140);
}
private void KillTaskmgr()//禁用任务管理器
{
Process[] sum = Process.GetProcesses();
foreach (Process p in sum)
{
if (p.ProcessName == "taskmgr" || p.ProcessName == "cmd")
try
{
p.Kill();
}
catch
{
;
}
}
}
private void FullScreen()//全屏
{
this.SetVisibleCore(true);
}
//根据自己的需要添加需要实现的功能
private void bt_login_Click(object sender, EventArgs e)//登录解锁
{
if (pwd2 != null)
{
if (txt_pwd.Text.Trim() == Convert.ToString(UnlockID(), 16).ToUpper())
{
pwd2 = null;
MessageBox.Show("PIN码解锁成功!密码重置为123", "提示");
return;
}
}
if (txt_pwd.Text != "")
{
if (MD5(txt_pwd.Text) == password)
{
pwd2 = null;
h.Hook_Clear();
// Application.Exit(); //关闭程序
bool status = false;
bool flag = new Facade.ConsumerFacade().ModifyLineLog(UI.frmLogin.CardID, status);//设置挂机状态
this.Hide();
}
else
{
pl_info.Visible = true;
tm_info.Start();
txt_pwd.Text = "";
}
}
}
private void timer1_Tick(object sender, EventArgs e)//开始置顶
{
KillTaskmgr();
}
public static string MD5(string word)//MD5加密
{
MD5 md5 = new MD5CryptoServiceProvider();
byte[] result = md5.ComputeHash(System.Text.Encoding.Default.GetBytes(word));
return System.Text.Encoding.Default.GetString(result);
}
#region//鼠标点击空白部分设置消失
private void Form1_Click(object sender, EventArgs e)
{
this.AcceptButton = bt_login;
}
#endregion
private void tm_info_Tick(object sender, EventArgs e)//提示信息消失
{
pl_info.Visible = false;
tm_info.Stop();
}
private void bt_about1_Click(object sender, EventArgs e)
{
if (pl_about.Visible == false)
pl_about.Visible = true;
else
pl_about.Visible = false;
}
public string GetMoAddress()// 获取网卡硬件地址
{
return null;
}
private void bt_about_Click(object sender, EventArgs e)//关于
{
MessageBox.Show("软件名称:天天见网咖收费系统\n\n作者:杜小鱼\n\n版本:1.0\n\n锁屏密码与登录密码一致\n\n有BUG请发BUG出现的详细情况至\n邮箱18731680163@163.com以便改进", "关于", MessageBoxButtons.OK);
}
public long UnlockID()//返回PIN码
{
long a = 123;
return a;
}
private void bt_shutdown_Click(object sender, EventArgs e)//关机
{
DialogResult dr = MessageBox.Show("确定要关机?", "提示", MessageBoxButtons.OKCancel);
if (dr == DialogResult.OK)
ApiCalls.ShutDown();
}
}
}
新建一个HOOK的类,设置钩子
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Reflection;
using System.Diagnostics;
namespace UI
{
public class Hook
{
public delegate int HookProc(int nCode, int wParam, IntPtr lParam);
static int hHook = 0;
public const int WH_KEYBOARD_LL = 13;
//LowLevel键盘截获,如果是WH_KEYBOARD=2,并不能对系统键盘截取,Acrobat Reader会在你截取之前获得键盘。
HookProc KeyBoardHookProcedure;
//键盘Hook结构函数
[StructLayout(LayoutKind.Sequential)]
public class KeyBoardHookStruct
{
public int vkCode;
public int scanCode;
public int flags;
public int time;
public int dwExtraInfo;
}
#region DllImport
//设置钩子
[DllImport("user32.dll")]
public static extern int SetWindowsHookEx(int idHook, HookProc lpfn, IntPtr hInstance, int threadId);
[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
//抽掉钩子
public static extern bool UnhookWindowsHookEx(int idHook);
[DllImport("user32.dll")]
//调用下一个钩子
public static extern int CallNextHookEx(int idHook, int nCode, int wParam, IntPtr lParam);
[DllImport("kernel32.dll")]
public static extern int GetCurrentThreadId();
[DllImport("kernel32.dll")]
public static extern IntPtr GetModuleHandle(string name);
#endregion
#region 自定义事件
public void Hook_Start()
{
// 安装键盘钩子
if (hHook == 0)
{
KeyBoardHookProcedure = new HookProc(KeyBoardHookProc);
hHook = SetWindowsHookEx(WH_KEYBOARD_LL,
KeyBoardHookProcedure,
GetModuleHandle(Process.GetCurrentProcess().MainModule.ModuleName), 0);
//如果设置钩子失败.
if (hHook == 0)
{
Hook_Clear();
throw new Exception();
}
else
{
}
}
}
//取消钩子事件
public void Hook_Clear()
{
bool retKeyboard = true;
if (hHook != 0)
{
retKeyboard = UnhookWindowsHookEx(hHook);
hHook = 0;
}
//如果去掉钩子失败.
if (!retKeyboard) throw new Exception("UnhookWindowsHookEx failed.");
}
//这里可以添加自己想要的信息处理
public static int KeyBoardHookProc(int nCode, int wParam, IntPtr lParam)
{
if (nCode >= 0)
{
KeyBoardHookStruct kbh = (KeyBoardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyBoardHookStruct));
int v = kbh.vkCode;
switch (v)
{
case 27://ESC键
case 91://左徽标键
case 92://右徽标键
case 93://鼠标右键快捷键
case 164://
case 9://TAB键
case 10://Shift键
case 17://Ctrl键
case 18://Alt键
case 162://
case 110://.键
case 46://Delete键
case 115://F4键
case 241://F1键
return 1;
}
}
return CallNextHookEx(hHook, nCode, wParam, lParam);
}
#endregion
}
}
因篇幅问题不能全部显示,请点此查看更多更全内容