C#窗体程序只实现一个实例

最近同事需要搞一个键盘监控程序,主要用途是公共查询机器需要禁用像Alt+Ctr+Del这些特殊键,需要用C#写。之前对窗体程序接触的少,他是职位是windows specialists,没做过开发,请我帮他看一下,最近事不多就帮他看写了些。主要代码如下: 

//需要导入的类
using System.Runtime.InteropServices;
using System.Threading;
//查找窗体,类内需要声明的变量
[DllImport(“User32.dll”, EntryPoint = “FindWindow”)]
private static extern int FindWindow(string lpClassName, string lpWindowName);
//[DllImport(“User32.dll”, EntryPoint = “SetActiveWindow”)]
//private static extern int SetActiveWindow(IntPtr hWnd);
[DllImport(“User32.dll”, EntryPoint = “SendMessage”)]
private static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
//窗体状态为前台时激活窗体
[DllImport(“User32.dll”, EntryPoint = “SetForegroundWindow”)]
private static extern int SetForegroundWindow(IntPtr hWnd);
//状态在最小化时恢复窗口显示在最前
[DllImport(“User32.dll”, EntryPoint = “OpenIcon”)]
private static extern long OpenIcon(IntPtr hWnd);
//判断是否最大化
[DllImport(“User32.dll”, EntryPoint = “IsZoomed”)]
private static extern int IsZoomed(IntPtr hWnd);
//判断是否最小化
[DllImport(“User32.dll”, EntryPoint = “IsIconic”)]
private static extern int IsIconic(IntPtr hWnd);
//main 方法
static void Main()
{
bool CreateStatus = false;
Mutex m_Mutex = new Mutex(true, “测试程序”, out CreateStatus);
if (CreateStatus == false)
{
MessageBox.Show(“该程序已启动了,请不要重复启动!”);
//@Form1根据窗体的Text文本值获得窗体
int WINDOW_HANDLER = FindWindow(null, @”KeyboardControl Demo”);
if (WINDOW_HANDLER > 0)
{
int STATE = IsIconic((System.IntPtr)WINDOW_HANDLER);
if (STATE > 0)//是最小化
{
OpenIcon((System.IntPtr)WINDOW_HANDLER);//恢复
}
else
{
//设为系统前台窗体并激活
SetForegroundWindow((System.IntPtr)WINDOW_HANDLER);
}
//SendMessage((System.IntPtr)WINDOW_HANDLER, WM_SYSCOMMAND, WM_ACTIVATEAPP, 0);
return;
}
}
else
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}

发表评论

邮箱地址不会被公开。 必填项已用*标注