欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

vb.net中keys vbnet c#

vb.net 獲取鍵盤輸入的字符

參考方法如下,具體解釋已經(jīng)注解在代碼中;

創(chuàng)新互聯(lián)是專業(yè)的荔城網(wǎng)站建設(shè)公司,荔城接單;提供做網(wǎng)站、網(wǎng)站建設(shè),網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行荔城網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!

/定義變量

public delegate int HookProc(int nCode, Int32 wParam, IntPtr lParam);

static int hKeyboardHook = 0;

HookProc KeyboardHookProcedure;

/*************************

* 聲明API函數(shù)

* ***********************/

// 安裝鉤子 (using System.Runtime.InteropServices;)

[DllImport("user32.dll",CharSet=CharSet.Auto, CallingC.StdCall)]

public static extern int SetWindowsHookEx(int idHook,HookProc lpfn, IntPtr hInstance, int threadId);

// 卸載鉤子

[DllImport("user32.dll",CharSet=CharSet.Auto, CallingC.StdCall)]

public static extern bool UnhookWindowsHookEx(int idHook);

// 繼續(xù)下一個(gè)鉤子

[DllImport("user32.dll",CharSet=CharSet.Auto, CallingC.StdCall)]

public static extern int CallNextHookEx(int idHook, int nCode, Int32 wParam, IntPtr lParam);

// 取得當(dāng)前線程編號(hào)(線程鉤子需要用到)

[DllImport("kernel32.dll")]

static extern int GetCurrentThreadId();

//鉤子子程:就是鉤子所要做的事情

private int KeyboardHookProc(int nCode, Int32 wParam, IntPtr lParam)

{

if (nCode = 0)

{

/****************

//線程鍵盤鉤子判斷是否按下鍵

Keys keyData = (Keys)wParam;

if(lParam.ToInt32() 0)

{

// 鍵盤按下

}

if(lParam.ToInt32() 0)

{

// 鍵盤抬起

}

****************/

/****************

//全局鍵盤鉤子判斷是否按下鍵

wParam = = 0x100 // 鍵盤按下

wParam = = 0x101 // 鍵盤抬起

****************/

KeyMSG m = (KeyMSG) Marshal.PtrToStructure(lParam, typeof(KeyMSG));//鍵盤

// 在這里添加你想要做是事情(比如把鍵盤nCode記錄下來,搞個(gè)郵件發(fā)送程序發(fā)到自己的郵箱去)

return 0;//如果返回1,則結(jié)束消息,這個(gè)消息到此為止,不再傳遞。如果返回0或調(diào)用CallNextHookEx函數(shù)則消息出了這個(gè)鉤子繼續(xù)往下傳遞,也就是傳給消息真正的接受者

}

return CallNextHookEx(hKeyboardHook, nCode, wParam, lParam);

}

//鍵盤結(jié)構(gòu)

public struct KeyMSG

{

public int vkCode; //鍵值

public int scanCode;

public int flags;

public int time;

public int dwExtraInfo;

}

// 安裝鉤子

public void HookStart()

{

if(hKeyboardHook == 0)

{

// 創(chuàng)建HookProc實(shí)例

KeyboardHookProcedure = new HookProc(KeyboardHookProc);

// 設(shè)置線程鉤子

hKeyboardHook = SetWindowsHookEx( 13,KeyboardHookProcedure,Marshal.GetHINSTANCE(Assembly.GetExecutingAssembly().GetModules()[0]),0);

//************************************

//鍵盤線程鉤子

//SetWindowsHookEx( 2,KeyboardHookProcedure, IntPtr.Zero, GetCurrentThreadId()); //GetCurrentThreadId()為要監(jiān)視的線程ID,你完全可以自己寫個(gè)方法獲取QQ的線程哦

//鍵盤全局鉤子,需要引用空間(using System.Reflection;)

//SetWindowsHookEx( 13,KeyboardHookProcedure,Marshal.GetHINSTANCE(Assembly.GetExecutingAssembly().GetModules()[0]),0);

//

//關(guān)于SetWindowsHookEx (int idHook, HookProc lpfn, IntPtr hInstance, int threadId)函數(shù)將鉤子加入到鉤子鏈表中,說明一下四個(gè)參數(shù):

//idHook 鉤子類型,即確定鉤子監(jiān)聽何種消息,上面的代碼中設(shè)為2,即監(jiān)聽鍵盤消息并且是線程鉤子,如果是全局鉤子監(jiān)聽鍵盤消息應(yīng)設(shè)為13,

//線程鉤子監(jiān)聽鼠標(biāo)消息設(shè)為7,全局鉤子監(jiān)聽鼠標(biāo)消息設(shè)為14。

//

//lpfn 鉤子子程的地址指針。如果dwThreadId參數(shù)為0 或是一個(gè)由別的進(jìn)程創(chuàng)建的線程的標(biāo)識(shí),lpfn必須指向DLL中的鉤子子程。 除此以外,lpfn可

//以指向當(dāng)前進(jìn)程的一段鉤子子程代碼。鉤子函數(shù)的入口地址,當(dāng)鉤子鉤到任何消息后便調(diào)用這個(gè)函數(shù)。

//

//hInstance應(yīng)用程序?qū)嵗木浔?biāo)識(shí)包含lpfn所指的子程的DLL。如果threadId 標(biāo)識(shí)當(dāng)前進(jìn)程創(chuàng)建的一個(gè)線程,而且子程代碼位于當(dāng)前

//進(jìn)程,hInstance必須為NULL。可以很簡單的設(shè)定其為本應(yīng)用程序的實(shí)例句柄。

//

//threadedId 與安裝的鉤子子程相關(guān)聯(lián)的線程的標(biāo)識(shí)符。如果為0,鉤子子程與所有的線程關(guān)聯(lián),即為全局鉤子。

//************************************

// 如果設(shè)置鉤子失敗

if(hKeyboardHook == 0 )

{

HookStop();

throw new Exception("SetWindowsHookEx failed.");

}

}

}

// 卸載鉤子

public void HookStop()

{

bool retKeyboard = true;

if(hKeyboardHook != 0)

{

retKeyboard = UnhookWindowsHookEx(hKeyboardHook);

hKeyboardHook = 0;

}

if (!( retKeyboard))

throw new Exception("UnhookWindowsHookEx failed.");

}

vb.net 方向鍵不能觸發(fā) keydown 事件

某些鍵,如 Tab、Return、Esc 和箭頭鍵,由控件自動(dòng)處理。所以當(dāng)你的窗體添加了其它控件如按鈕,checkbox等,form的keydown事件就觸發(fā)不了,為使這些鍵引發(fā)窗體的KeyDown事件,你需要重寫form.ProcessDialogKey函數(shù),這個(gè)函數(shù)可以在消息預(yù)處理期間 處理對(duì)話字符,例如TAB、RETURN、ESCAPE和箭頭鍵等,以下是我重寫了這個(gè)事件來處理方向鍵,你需要把它放到你的代碼里:

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

vb.net的,按鍵連續(xù)觸發(fā)事件,比如,按著鍵不放,音量增大。

1.定義變量記錄鍵是否被按下,按下的累計(jì)時(shí)間

Dim?按下A鍵??As?Boolean

Dim?按下A鍵時(shí)間?As?Integer

2.添加一個(gè)TextBox1用于接收鍵盤事件,或者直接用窗體的鍵盤事件(確保KeyPreview為True)

在KeyDown事件中添加如下代碼:

If?e.Keycode?=?keys.A?Then?按下A鍵?=?True

在KeyUp事件中添加如下代碼:

If?e.Keycode?=?keys.A?Then?按下A鍵?=?False

3.添加一個(gè)Timer1控件,調(diào)整Timer1的Interval來決定按鍵頻率,記得要把Timer1.Enable開啟

在Tick事件中添加如下代碼:

If?按下A鍵?=?True

按下A鍵時(shí)間+=1

Call?音量設(shè)置(按下A鍵時(shí)間?*?10)

End?If

PS:?按下的秒數(shù) =?按下A鍵時(shí)間*Timer1.Interval / 1000

vb.net中如何執(zhí)行鍵盤事件?

執(zhí)行鍵盤事件方法如下:

第一步,點(diǎn)擊VS工具。

第二步,打開后,新建一個(gè)Windows窗體應(yīng)用程序。

第三步,請(qǐng)看右下方Form的屬性欄。

第四步,雙擊KeyDown。

第五步,輸入提示按鍵代碼,如圖所示。

第六步,再次輸入代碼,設(shè)置屬性KeyPreview為true。

第七步,運(yùn)行程序,按下舉例F5,則會(huì)彈出提示,表明已經(jīng)成功獲。

vb.net編寫的程序屏蔽系統(tǒng)熱鍵

使用VB.net編寫屏蔽熱鍵的方法有很多中,比如說使用系統(tǒng)的API函數(shù),也可以使用鉤子來進(jìn)行屏蔽.還有一種就是.net帶的一種方法,首先來判斷所按下去的鍵,然后再執(zhí)行操作等事件.比如說:if (e.keycode==keys.D){e.handle=true}在keydown事件里面處理!這樣就可以屏蔽了D鍵. 實(shí)例:if ((Control.ModifierKeys == Keys.Alt) (e.KeyCode == Keys.F4))

{

e.Handled = true;

}還有一種辦法就是不通過屏蔽熱鍵來實(shí)現(xiàn),就是通過設(shè)置焦點(diǎn).你可以把你程序窗口設(shè)置為主焦點(diǎn),這樣其他程序一般就無法在你的程序前面了.實(shí)現(xiàn)屏蔽的作用.至于任務(wù)管理器的話可以通過殺掉進(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#編寫的,稍微改下就可以了,在,NET里面都差不多!

vb.net中使用sendkeys無效?

vb.net中使用sendkeys無效,是因?yàn)榇翱跊]有處于活動(dòng)狀態(tài)。

VB6的SendKeys有時(shí)有些問題,比如打開任務(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。

網(wǎng)站題目:vb.net中keys vbnet c#
本文URL:http://chinadenli.net/article42/hghehc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)企業(yè)網(wǎng)站制作品牌網(wǎng)站制作定制開發(fā)建站公司網(wǎng)站改版

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運(yùn)營