有學員提出要求,上位機程式啟動之後,可以禁用win組合,防止操作人員無操作或者退出程式。
首先我們要了解一下鍵盤在pc上的工作原理,windows系統所有的操作都是基於訊息機制的,也就是說我們鍵盤上的每個按鍵其實都是往windows底層傳送乙個訊息,所以如果想要遮蔽掉某個按鍵或者功能,最直接的辦法就是訊息攔截。
再說一下實現思路,就是使用鉤子hook,這個我們之前講掃碼槍的時候也講過一點。
鉤子是作業系統訊息處理的一種機制。通過鉤子,應用程式可以安裝乙個鉤子**過程讓系統呼叫,從而監視系統中的訊息佇列。在這些訊息到達目標視窗之前對這些訊息進行處理。
下面就直接貼**了,主要是在鍵盤鉤子處理那裡加了一些需要截獲的訊息。
public class hook : idisposable
[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 intptr getmodulehandle(string name);
public void start()}}
public void close()
registrykey key = registry.currentuser.opensubkey(@"software\microsoft\windows\currentversion\policies\system", true);
if (key != null)
}public static int keyboardhookproc(int ncode, int wparam, intptr lparam)
return callnexthookex(hhook, ncode, wparam, lparam);
}public void dispose()
}使用方法也很簡單,在窗體初始化的時候,採用無邊框並最大化窗體,然後啟動鉤子。
在窗體關閉事件裡關閉鉤子,鉤子使用一定要及時關閉。
另外新一期的訓練營很快就要開始了,先提前透漏一下內容
讓你的程式飛起來
本方法可以讓c語言指令進一步接近彙編指令的執行效率,提高微控制器 嵌入式系統的速度和穩定性,但程式設計時應採取函式化的程式設計法 例如使用swap 函式時,必要時加注釋。0.位運算心法 1.如果乘上乙個2的倍數數值,可以改用左移運算 left shift 加速 300 x x 2 x x 64 改為...
讓你的SilverLight程式部署在任意伺服器上
315次 是的,即使是免費的只支援html的空間,同樣可以部署silverlight應用。眾所周知,silverlight的部署問題其實就是.xap檔名是否能被伺服器支援的問題。解決的方法無非就是新增mime型別。但是大多數時候我們並沒有操作iis的許可權 比如剛剛申請的免費空間 好了,下面開始進入...
讓你的SilverLight程式部署在任意伺服器上
是的,即使是免費的只支援html的空間,同樣可以部署silverlight應用。眾所周知,silverlight的部署問題其實就是.xap檔名是否能被伺服器支援的問題。解決的方法無非就是新增mime型別。但是大多數時候我們並沒有操作iis的許可權 比如剛剛申請的免費空間 好了,下面開始進入正題吧。我...