當前位置:首頁 » 編程語言 » c語言檢測按鍵

c語言檢測按鍵

發布時間: 2023-03-04 23:33:41

❶ 我想設計一個c語言 按鍵檢測 如果按下就執行測溫程序 如果沒按下就一直循環直到檢測按下 怎呢弄

#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int

sbit led1 = P2^0;//定義管腳;
sbit led2 = P2^1;
sbit led3 = P2^2;
sbit led4 = P2^3;
sbit led5 = P2^4;
sbit led6 = P2^5;
sbit key = P1^0;

uchar tcount=0,count=0;//定義時間變數和按鍵計數變數;

void Delay(uchar i)//機械延時;
{
while(--i);
}

void LedLight(void)//LED控制函數;
{
switch(count)
{
case 3 : led1 = 0;break;//3下時,LED1亮;
case 5 : led2 = 0;break;//5下時,LED2亮;
case 7 : led3 = 0;break;//7下時,LED3亮;
case 9 : led4 = 0;break;//9下時,LED4亮;
case 11: led5 = 0;break;//11下時,LED5亮;
case 13: led6 = 0;break;//13下時,LED6亮;
default: P2 = 0xff;break;//其餘的都不亮;
}
}

void InitTimer0(void)//定時器0初始化;
{
TMOD = 0x00;
TH0 = (65536-50000)/256;
TL0 = (65536-50000)%256;
TR0 = 1;
}

void main(void)//主函數
{
InitTimer0();
while(1)//無限循環;
{
if(key==0)//檢查按鍵是否按下;
{
Delay(10);//機械延時;
if(key==0){count++;}//按鍵計數;
while(key==0);
}
if(TF0==1)//復位定時器0;
{
TF0=0;
TH0 = (65536-50000)/256;
TL0 = (65536-50000)%256;
tcount++;
if(tcount==20)//1秒的時間;
{
LedLight();
Delay(100);
count=0;//復位按鍵計數變數;
}
}
}
}

❷ C語言如何檢測點擊的按鈕

通常很多情況下,會有這樣的事情,就是:

我們在運行某些程序的時候,發現按鈕置灰了,比如購買版權或者輸入序列號才能夠獲得訪問許可權。某個按鈕才允許點擊。

其實所有的這些東西都是 別的人或者公司利用一些編程語言調用windows的函數,實現的。所以如果我們也能調用windows的函數,那麼我們就能夠執行一些按鈕或者某些東西背後的函數。

自己的mfc還暫時 用不了,不過 可以 試試這個。

調出這個界面,看到有一個置灰的設置按鈕。我們可以試著調用這個後面的函數。

/*如何調出來?【在win7環境下】

打開控制面板

點擊滑鼠。*/

然後利用vs的工具中的spy++ x64。

進入查找窗口。

拖住這個到剛剛滑鼠的那個置灰的按鈕上面。就可以得到一個句柄。

句柄【在我理解,就是一個話把子,怎麼解釋,就是,別人說一件事兒,你得順著往下說才能把話接下來,然後完成你想說的東西。在程序裡面,執行到這里,有這樣一個句柄,允許我們說話了,我們就從這一點開始,順著往下說,往往就能得到我們想要的結果】

所以得到了句柄之後。我們可以新建一個工程。

#include <windows.h>

int main(){

SendMessage(0x001607E6,WM_LBUTTONDOWN,0,0);
SendMessage(0x001607E6,WM_LBUTTONUP,0,0);

return 0;
}

//在HWND的第一個參數裡面輸入剛剛的句柄。

//猜測 第二個參數 是 WindowManager_LeftButtonDown,就是窗口管理器左鍵按鈕點下。

//然後左鍵按鈕彈起。

就強制的往剛剛不能執行的函數裡面發送了一個信息。前面的引文介紹說,這就是調用了windows底層的一些函數,如果按鈕可以點擊,則滑鼠點擊,按鈕按下,當需要注冊的時候,或者需要序列號的時候我們並沒有,就不能點擊。但是當我們給他發送一條消息以後,是不是問題就解決了。

❸ C語言 如何在一段時間內檢測鍵盤是否按下

#include <bios.h>
#include <stdio.h>
main()
{
int key;
for(;;)
{
if (bioskey(1)) /*有鍵按下,讀取鍵值*/
key=bioskey(0);
else /*無鍵按下,返回0*/
key=0;
switch(key)
{case 0: ...../*無按鍵,執行該操作*/
case 0xXXXXH:..../*不同鍵值,做不同處理*/
。。。。。
}
}
}

該程序段功能:
判斷是否有鍵按下,若有進行不同操作,若無進行其他操作。

相關原理:
函數名: bioskey
功 能: 直接使用BIOS服務的鍵盤介面
函數原型:int bioskey (int cmd)
說明:bioskey()的函數原型在bios.h中
bioskey()完成直接鍵盤操作,cmd的值決定執行什麼操作。

cmd = 1:
當cmd是1,bioskey()查詢是否按下一個鍵,若按下一個鍵則返回非零值,否則返回0。

鍵盤有按鍵時,會把鍵值(掃描碼)存入緩沖區,當需要判斷是否有鍵按下時,掃描緩沖區,為空則無鍵按下,不為空則有鍵按下。注意:該功能並不清空緩沖區。

cmd = 0:
當cmd是0,bioskey()返回鍵盤鍵入的值。它返回一個16位的二進制數,包括兩個不同的值。當按下一個普通鍵時,它的低8位數存放該字元的ASCII碼,高8位存放該鍵的掃描碼;對於特殊鍵(如方向鍵、F1~F12等等),低8位為0,高8位位元組存放該鍵的掃描碼。

其操作步驟為:
1.檢測緩沖區是否有數據;
2.沒有則繼續第一步;
3.讀取緩沖區第一個單元中的鍵盤輸入
4.讀取的掃描碼
5.將已讀取的鍵盤輸入從緩沖區刪除

❹ C語言如何檢測是否按下功能鍵

有獨立鍵盤和距陣鍵盤的獨立鍵盤的很簡單我就不寫了距陣的我給你寫一個//鍵盤掃描ucharKeys_Scan(){ucharsCode,kCode,i,k;//低4位置0,放入4行P1=0xf0;//若高4位出現0,則有鍵按下if((P1&0xf0)!=0xf0){DelayMS(2);if((P1&0xf0)!=0xf0){sCode=0xfe;//行掃描碼初值for(k=0;k<4;k++)//對4行分別進行掃描{P1=sCode;if((P1&0xf0)!=0xf0){kCode=~P1;for(i=0;i<16;i++)//查表得到按鍵序號並返回if(kCode==KeyCodeTable[i])return(i);}elsesCode=_crol_(sCode,1);}}}return(-1);

熱點內容
我的世界搭建無正版驗證伺服器 發布:2024-05-05 17:03:48 瀏覽:817
我的世界伺服器地址寶可夢 發布:2024-05-05 17:00:16 瀏覽:254
dede企業源碼 發布:2024-05-05 16:57:53 瀏覽:786
如何查看java版本 發布:2024-05-05 16:45:05 瀏覽:494
轉子繞組電動機控制櫃如何配置 發布:2024-05-05 16:45:04 瀏覽:917
搭建游戲要多大伺服器 發布:2024-05-05 16:44:16 瀏覽:346
雲伺服器ecs網站 發布:2024-05-05 16:35:55 瀏覽:563
c語言列印正方形 發布:2024-05-05 16:09:20 瀏覽:643
編程用箭頭 發布:2024-05-05 15:54:21 瀏覽:794
步驟條源碼 發布:2024-05-05 15:35:55 瀏覽:846