PDA

View Full Version : تشخیص حالت Caps Lock



Keyhan Clever
پنج شنبه 24 اردیبهشت 1388, 20:16 عصر
چجوری میشه که کامپیوتر تشخیص بده کپس لاک کاربر روشنه یا نه ؟
حالا همین جا وقتی تشخیص داد چجوری میشه اگه روشن بود یه متن Eror چاپ کنه ؟

Keyhan Clever
پنج شنبه 24 اردیبهشت 1388, 20:17 عصر
قبلا هم همینو گذاشته بودم
کسی جواب نداد
دوباره پرسیدم
بازم کسی نمیخواد جواب بده ؟

tdkhakpur
جمعه 25 اردیبهشت 1388, 00:19 صبح
سلام:
ببینید هر کسی تو این فروم به یه زبان خاصی آشناست و به خاطر سوال شما در c++ نتونستن بهت جواب بدهند.
کد زیر رو استفاده کن .
موفق باشید.


bool isCapsLock = (((unsigned short) GetKeyState(0x14 /*VK_CAPITAL*/)) & 0xffff) != 0;

if( isCapsLock )
ShowMessage("CapsLock turn on.");

shs_night
جمعه 25 اردیبهشت 1388, 02:42 صبح
با عرض سلام

توضیحات:
تابعی که وضعیت صفحه کلید را تست میکند و تشخیص میدهد که آیا کلید Capslock فعال است یا خیر.
اگر بیت ششم از بایت وضعیت صفحه کلید برابر 1 باشد یعنی Capslock فشار داده شده است
اگر این بیت 1 باشد یعنی مقدار بایت وضعیت برابر 64 است.
به همین دلیل مقدار بایت وضعیت با 64 که نمایش بیتی آن 01000000 است And میشود.
اگر حاصل کار 64 باشد یعنی Capslock فعال است.



#include <dos.h>
#include <stdio.h>
#include <conio.h>


int get_state();

void main()
{
unsigned char state;
state = (unsigned char) get_state();

if ((state &= 64) == 64)
printf("Capslock is on");
else
printf("Capslock is off");

getch();
}

/* -------------------------------- */

int get_state()
{
union REGS in, out;
in.h.ah = 2 ;
int86(0x16, &in, &out);
return(out.h.al);
}

------------------------------------------
بایت وضعیت صفحه کلید:

0:شیفت راست
1:شیفت چپ
2:ctrl
3:alt
4:scrolllock
5:numlock
6:capslock
7:insert

smj_esmaili
پنج شنبه 06 اسفند 1388, 12:20 عصر
برنامه زیر وضعیت کلید های کنترلی کیبرد رو نشون میده
فکر کنم r7 وضعیت capslock باشه
#include<iostream.h>
#include<conio.h>
struct keyboard
{
unsigned r1:1;
unsigned r2:1;
unsigned r3:1;
unsigned r4:1;
unsigned r5:1;
unsigned r6:1;
unsigned r7:1;
unsigned r8:1;
} far *key=(keyboard far *)0x00000417;
void main()
{
getch();
cout<<key->r1<<"\n";
cout<<key->r2<<"\n";
cout<<key->r3<<"\n";
cout<<key->r4<<"\n";
cout<<key->r5<<"\n";
cout<<key->r6<<"\n";
cout<<key->r7<<"\n";
cout<<key->r8<<"\n";
getch();
}