亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

請問在哪個控件怎么實現用C#禁用鼠標?

請問在哪個控件怎么實現用C#禁用鼠標?

C#
侃侃無極 2023-03-02 18:14:56
列如;在win窗體拖個控件然后調試過程中一打開控件就讓鍵盤用不了,除非停止調試或者重啟讓鼠標恢復正常,在那個控件中怎么寫代碼?
查看完整描述

1 回答

?
斯蒂芬大帝

TA貢獻1827條經驗 獲得超8個贊

1.要實現鎖定系統不讓別人用,可以調用系統鎖定API函數來實現

//引入API函數
[DllImport("user32 ")]
public static extern bool LockWorkStation();//這個是調用windows的系統鎖定

在需要的時候直接寫LockWorkStation();就可以啦!不信試試看!

2.API函數鎖定鍵盤及鼠標

[DllImport("user32.dll")]
static extern void BlockInput(bool Block); 

需要的時候就直接寫:

BlockInput(true);//鎖定鼠標及鍵盤

BlockInput(false);//解除鍵盤鼠標鎖定

但是這種方式還是不能鎖定ctrl+alt+delete,也就是還可以打開任務管理器,怎么辦呢?

請看下面的方法:

3.屏蔽ctrl+alt+delete

FileStream fs = new FileStream(Environment.ExpandEnvironmentVariables("%windir%\\system32\\taskmgr.exe"), FileMode.Open);
//byte[] Mybyte = new byte[(int)MyFs.Length];
//MyFs.Write(Mybyte, 0, (int)MyFs.Length);
//MyFs.Close(); //用文件流打開任務管理器應用程序而不關閉文件流就會阻止打開任務管理器 

利用windows鎖屏API:LockWorkStation。
如下代碼片段:
public Form1( bool aLock ) { if (aLock) { //鎖屏+關屏LockWorkStation();SendMessage( this.Handle, (uint)0x0112, (IntPtr)0xF170, (IntPtr)2 );} else { //禁止鼠標鍵盤動作+關屏BlockInput( true );System.Threading.Thread.Sleep( 10 );SendMessage( this.Handle, (uint)0x0112, (IntPtr)0xF170, (IntPtr)2 );BlockInput( false );} this.Close(); //Application.Exit();Environment.Exit( 0 );} //關屏[DllImport( "user32.dll", CharSet = CharSet.Auto )] static extern IntPtr SendMessage( IntPtr hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam ); //禁止鼠標鍵盤動作[return: MarshalAs( UnmanagedType.Bool )][DllImport( "user32.dll", CharSet = CharSet.Auto, ExactSpelling = true )] public static extern bool BlockInput( [In, MarshalAs( UnmanagedType.Bool )] bool fBlockIt ); //鎖屏[DllImport( "user32.dll" )] public static extern bool LockWorkStation();需要指出的是,在退出程序時使用Environment.Exit( 0 );而非Application.Exit();否則會出錯哦~~提示類似:“***遇到錯誤,需要關閉”。還有就是修改一下Main:static void Main(string[] args) { //Application.EnableVisualStyles(); //Application.SetCompatibleTextRenderingDefault( false ); if (args == null || args.Length == 0) { //禁止鼠標鍵盤動作+關屏Application.Run( new Form1( false ) );} else { //鎖屏+關屏Application.Run( new Form1( true ) );}}


查看完整回答
反對 回復 2023-03-06
  • 1 回答
  • 0 關注
  • 212 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號