使用VB.net編寫(xiě)屏蔽熱鍵的方法有很多中,比如說(shuō)使用系統(tǒng)的API函數(shù),也可以使用鉤子來(lái)進(jìn)行屏蔽.還有一種就是.net帶的一種方法,首先來(lái)判斷所按下去的鍵,然后再執(zhí)行操作等事件.比如說(shuō):if (e.keycode==keys.D){e.handle=true}在keydown事件里面處理!這樣就可以屏蔽了D鍵. 實(shí)例:if ((Control.ModifierKeys == Keys.Alt) (e.KeyCode == Keys.F4))
為企業(yè)提供網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、網(wǎng)站優(yōu)化、全網(wǎng)營(yíng)銷(xiāo)推廣、競(jìng)價(jià)托管、品牌運(yùn)營(yíng)等營(yíng)銷(xiāo)獲客服務(wù)。創(chuàng)新互聯(lián)擁有網(wǎng)絡(luò)營(yíng)銷(xiāo)運(yùn)營(yíng)團(tuán)隊(duì),以豐富的互聯(lián)網(wǎng)營(yíng)銷(xiāo)經(jīng)驗(yàn)助力企業(yè)精準(zhǔn)獲客,真正落地解決中小企業(yè)營(yíng)銷(xiāo)獲客難題,做到“讓獲客更簡(jiǎn)單”。自創(chuàng)立至今,成功用技術(shù)實(shí)力解決了企業(yè)“網(wǎng)站建設(shè)、網(wǎng)絡(luò)品牌塑造、網(wǎng)絡(luò)營(yíng)銷(xiāo)”三大難題,同時(shí)降低了營(yíng)銷(xiāo)成本,提高了有效客戶(hù)轉(zhuǎn)化率,獲得了眾多企業(yè)客戶(hù)的高度認(rèn)可!
{
e.Handled = true;
}還有一種辦法就是不通過(guò)屏蔽熱鍵來(lái)實(shí)現(xiàn),就是通過(guò)設(shè)置焦點(diǎn).你可以把你程序窗口設(shè)置為主焦點(diǎn),這樣其他程序一般就無(wú)法在你的程序前面了.實(shí)現(xiàn)屏蔽的作用.至于任務(wù)管理器的話可以通過(guò)殺掉進(jìn)程的辦法做到.如下: Process[] p = Process.GetProcesses(); foreach (Process p1 in p)
{
try
{
if (p1.ProcessName.ToLower().Trim() == "taskmgr")//這里判斷是任務(wù)管理器
{
p1.Kill();
return;
}
}
catch
{
return;
}
}}以上是使用C#編寫(xiě)的,稍微改下就可以了,在,NET里面都差不多!
新建一個(gè)Form1把Form1的KeyPreview改成True
拖入一個(gè)Button1到Form1上面
然后加入以下代碼
Private Sub Form1_KeyDown(sender As Object, e As KeyEventArgs) Handles Me.KeyDown
If e.KeyData = (Keys.Alt Or Keys.G) Then
Button1.PerformClick() '或者用Button1_Click(Nothing, New EventArgs)
'快捷鍵Alt+G觸發(fā)Button1_Click()事件。
End If
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Button1.Size = New Size(180, 23)
Button1.Text = "我被局部快捷鍵給召喚了~"
End Sub
vb.net中使用sendkeys無(wú)效,是因?yàn)榇翱跊](méi)有處于活動(dòng)狀態(tài)。
VB6的SendKeys有時(shí)有些問(wèn)題,比如打開(kāi)任務(wù)管理器,以下代碼可以:
Sub main()
Dim WshShell As Object
Set WshShell = CreateObject("WScript.Shell")
WshShell.SendKeys "^+{ESC}"
End Sub
以下代碼卻不可以:
Sub main()
SendKeys "^+{ESC}"
End Sub
所以最好使用WScript.Shell中的SendKeys。
某些鍵,如 Tab、Return、Esc 和箭頭鍵,由控件自動(dòng)處理。所以當(dāng)你的窗體添加了其它控件如按鈕,checkbox等,form的keydown事件就觸發(fā)不了,為使這些鍵引發(fā)窗體的KeyDown事件,你需要重寫(xiě)form.ProcessDialogKey函數(shù),這個(gè)函數(shù)可以在消息預(yù)處理期間 處理對(duì)話字符,例如TAB、RETURN、ESCAPE和箭頭鍵等,以下是我重寫(xiě)了這個(gè)事件來(lái)處理方向鍵,你需要把它放到你的代碼里:
Protected Overrides Function ProcessDialogKey(ByVal keyData As Keys) As Boolean
If keyData = Keys.Left Or keyData = Keys.Right Or keyData = Keys.Up Or keyData = Keys.Down Then
Return False'如果是方向鍵返回FALSE,意思是繼續(xù)執(zhí)行form的keydown事件.
Else
Return MyBase.ProcessDialogKey(keyData)
End If
End Function