using System;
using System.Runtime.InteropServices;
using System.Threading;
namespace LockWindows
{
/// <summary>
/// NativeWIN32 的摘要说明。
/// </summary>
public class NativeWIN32
{
public NativeWIN32()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
[DllImport("user32.dll", CharSet=CharSet.Auto)]
public static extern IntPtr FindWindowEx(IntPtr parent /*HWND*/,
IntPtr next /*HWND*/,
IntPtr sClassName,
string sWindowTitle);
[DllImport("user32.dll", CharSet=CharSet.Auto)]
public static extern void SetForegroundWindow(int hwnd);
[DllImport("user32.dll")]
public static extern bool ShowWindow(int hWnd, nCmdShow nCmdShow);
[DllImport("user32.dll", CharSet=CharSet.Auto)]
public static extern int SendMessage(IntPtr hWnd, int msg, int wParam, int lParam);
[DllImport("user32.dll", CharSet=CharSet.Auto)]
public static extern int CreateMutex(IntPtr hWnd, int msg, int wParam, int lParam);
[DllImport("HK_KeyBoardCtr.dll", CharSet=CharSet.Auto)]
private static extern void hideHotKey();
[DllImport("HK_KeyBoardCtr.dll", CharSet=CharSet.Auto)]
private static extern void showHotKey();
public static bool hideSysKey(bool bHide)
{
try
{
if(bHide)
{
hideHotKey();
}
else
{
showHotKey();
}
return true;
}
catch
{
return false;
}
}
//SendMessage(Handle2, WM_GETTEXT, 1024, Integer(@Buf));
/// <summary>
/// 找窗口
/// </summary>
/// <param name="windowTittle">窗口标题</param>
/// <returns>返回真表示找到了,返回为假表示未找到</returns>
public static bool FindThisWindow(string windowTittle)
{
IntPtr hParent = IntPtr.Zero;
IntPtr hNext=IntPtr.Zero;
hNext=NativeWIN32.FindWindowEx(hParent,hNext,IntPtr.Zero,windowTittle);
if(hNext.ToInt32()>0)
{
NativeWIN32.SetForegroundWindow(hNext.ToInt32());
return true;
}
else
{
return false;
}
}
public static bool isExists(string strMutex)
{
bool createdNew;
System.Threading.Mutex mutex = new System.Threading.Mutex(true,strMutex,out createdNew);
return !createdNew; //createNew为真,则表示mutex创建成功,没有冲突,这样就认为本程序没有启动
}
public static bool CloseTheWindows(string strWindowName)
{
try
{
IntPtr hParent = IntPtr.Zero;
IntPtr hNext=IntPtr.Zero;
hNext=NativeWIN32.FindWindowEx(hParent,hNext,IntPtr.Zero,strWindowName);
if(hNext.ToInt32()>0)
{
//关闭窗口
NativeWIN32.SendMessage(hNext,16,0,0);
return true;
}
else
{
return false;
}
}
catch(Exception err)
{
return false;
}
}
public enum nCmdShow:uint
{
SW_FORCEMINIMIZE=0x0,
SW_HIDE=0x1,
SW_MAXIMIZE=0x2,
SW_MINIMIZE=0x3,
SW_RESTORE=0x4,
SW_SHOW=0x5,
SW_SHOWDEFAULT=0x6,
SW_SHOWMAXIMIZED=0x7,
SW_SHOWMINIMIZED=0x8,
SW_SHOWMINNOACTIVE=0x9,
SW_SHOWNA=0xA,
SW_SHOWNOACTIVATE=0xB,
SW_SHOWNORMAL=0xC,
WM_CLOSE=0x10,
// WM_GETTEXT=0x11,
}
}
}
分享到:
相关推荐
用C#实现的锁屏软件,包括禁用ctrl+alt+del(真正的禁用,不是修改注册表禁用,引用了别人写的DLL,不过在windows7下无效,目前好像还没有有效简单的办法禁用win7的该组合键)、禁用常用的系统组合键(用全局钩子),...
第一个完美解决C# 禁用Ctrl+alt+delete组合键的方案,使用VC++完成,以Dll形式提供
这是我在网上收集了N久的成果,可以屏蔽Ctrl+Alt+Delete组合键(XP下有效),非常实用。
2022年最新实现 键盘按键禁用:ctrl+alt+del,Tab,shift等键盘任意键禁用。 任务管理器禁用。 USB禁用工具。 win10有效。 使用C#实现
但是这个禁用有个缺点,就是禁用CtrlAltDel组合键后,会出现无法登录,无法关机,无法重启等情况。因此必须等到系统起来后再执行禁用这个组合键,在关机之前要先允许组合键后才能关机。 适合做全屏软件的机器应用...
C#屏蔽键盘,利用HOOK钩子屏蔽键盘上的 ctrl+alt+delete组合键按钮,源码可直接编译,编译运行截图如图所示,程序在屏蔽指定按钮后可以解除屏蔽。 运行环境:Visual Studio2010
1. C# winform 捕获快捷键 CTRL + ALT + DEL和Win + L 2. 程序只允许运行一次 可用于监听键盘按键
屏蔽ctrl+alt+del的源代码,是VB6的,可能旧了点,期待高手转换为C#的。
namespace _0000000 ... #region 屏蔽和开启ctrl+alt+del(方法二:静态dll) …… #endregion …… #endregion #region 自定义事件 …… #endregion } } 想做系统屏蔽的亲们绝对得实用……
c# winform对键盘的屏蔽和释放
C#调用键盘钩子锁屏,禁用快捷键!...但是屏蔽ctrl+alt+del 任务管理器则较复杂,这个特例后面讨论。 使用全局钩子应该注意的地方:将代码放到一个独立的类库里面(只有dll才能被注射到其他进程中)。
本方法只得用于正当的系统,若用于搞破坏,请自觉承担法律责任,具体的使用方法: public Form1() { InitializeComponent(); } [DllImport(@"native.dll", EntryPoint = "FuckSysKey")] private extern static ...