我初学C++,想问各位一个问题,用C++能不能编写“按键程序”呢,就是让键盘不停的按某一个键

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-07-30
初学C++,怎么操作才能按一个#就出来了C++

用while(getchar()=='#')搭配printf用可以让你在按#后才输出结果

能说具体点吗?LZ

可以的用Keyevent这个函数来实现,就是写一个循环来调用Keyevent是某一个键不停的被按下,释放。
VOID keybd_event( BYTEbVk, BYTEbScan, DWORDdwFlags, DWORDdwExtraInfo);

Windows提供了一个模拟键盘API函数Keybd_event(),使用该函数可以相应的屏蔽键盘的动作。Keybd_event()函数能触发一个按键事件,也就是说会产生一个WM_KEYDOWN或WM_KEYUP消息。

该函数原型如下:
  VOID keybd_event(
  BYTE bVk, // virtual-key code
  BYTE bScan, // hardware scan code
  DWORD dwFlags, // flags specifying various function options
  DWORD dwExtraInfo // additional data associated with keystroke
  );
  从原型可以看出,Keybd_event()共有四个参数:
第一个为按键的虚拟键值,如回车键为vk_return, tab键为vk_tab(其他具体的参见附录:常用模拟键的键值对照表);
第二个参数为扫描码,一般不用设置,用0代替就行;
第三个参数为选项标志,如果为keydown则置0即可,如果为keyup则设成"KEYEVENTF_KEYUP";
第四个参数一般也是置0即可。

例子1:模拟按下'A'键
   keybd_event(65,0,0,0);
   keybd_event(65,0,KEYEVENTF_KEYUP,0);
例子2:模拟按下'ALT+F4'键
   keybd_event(18,0,0,0);
   keybd_event(115,0,0,0);
   keybd_event(115,0,KEYEVENTF_KEYUP,0);
   keybd_event(18,0,KEYEVENTF_KEYUP,0);

应该能!
对不起,我现在喝醉了!没办法给你准确答复!~
不过,我记得c语言是可以发送按键的物理代码的。你去看一下关于vc的键盘的资料嘛!
我具体的也忘了!
因为没啥意义!按下某个键应该都可以通过发送某个讯息来实现!
虽然,不知道你的水平,建议看一下《Programming_Windows_程式开发设计指南》这本书吧!

  • 我初学C++,想问各位一个问题,用C++能不能编写“按键程序”呢,就是让...
    答:第一个为按键的虚拟键值,如回车键为vk_return, tab键为vk_tab(其他具体的参见附录:常用模拟键的键值对照表);第二个参数为扫描码,一般不用设置,用0代替就行;第三个参数为选项标志,如果为keydown则置0即可,如果为keyup则设成"KEYEVENTF_KEYUP";第四个参数一般也是置0即可。例子1:模拟按...
  • C语言初学,想请教各位大哥一个问题
    答:第一,你输入数据时,中间要经逗号分隔,如:3,5,2 第二,你的if语句确实有问题 if(a>b,a>c)max=a; 这时,只要a>c就会max=a 因此应该改正,,改成如下:if( a>b && a>c ) max=a ;else if ( b>a&& b>c ) max=b ;else max=c ;...
  • 初学C语言,问一个简单为问题
    答:m<n? n:m是一个条件操作符的表达式 意思是m<n如果成立,则表达式的值取冒号前面的值,即n;如果不成立,则表达式的值取冒号后面的值,即m,这里你要输出m和n中较大的值,应该写成n:m 如果写成m:n则输出较小的值。m<n和n>m没有区别。
  • 初学C语言,问一个小问题;我这样编写为什么输不出我想要的结果
    答:一、您的格式符中有一个%c写成大写的%C了。据我所知基本C语言中是没有这种写法的。但不能肯定是否有的系统允许这样写。二、您输出5个字符后没有输出换行号,而有些操作系统中,执行完输出字符的子程序后并不立即真的输出,而是要等到再执行一个输出换行号的操作后,才一起输出。上述的两个问题中...
  • 请教一个很简单的c语言问题,我是初学者
    答:仅分析第二条语句printf("a%cb%c\bc%c\tabc\n",c1,c2,c3);} 其中a输出a-》“a”,c输出c1也就是a-》“aa”,b输出b-》“aab”,c输出c2也就是b-》“aabb”,\b输出退格,把上一个b擦掉了-》“aab”,c输出c-》“aabc”,c输出c3->"aabcc",\t输出TAB符号,前进八个空格-》...
  • 初学C语言,有一问题想请教
    答:for循环的第二段显然有问题,因为输入任意一个大于2的数,肯定跳出循环,一次循环都不执行。改动如下:到这里 输入一个正整数,貌似是对了,还没考虑输入一个负整数。由于是1+2-3+4-5+6...,所以要舍掉输入的负数 输入负数直接进不去for循环,所以已经是for循环之外的事了。以JAVA和C的共同点,...
  • 初学C,问一个关于指针的问题
    答://冒泡排序 void sort(int *len, struct xuesheng ** pst){ int i, j;struct xuesheng t;for(i=0; i<(*len)-1; ++i){ for(j=0; j<(*len)-1-i; ++j){ if((*pst)[j].score > (*pst)[j+1].score){ t = (*pst)[j];(*pst)[j] = (*pst)[j+1];(*pst)[j+1...
  • 额,初学C,突然想到一个问题,既然普通变量也可以存储地址,那为什么还要...
    答:不可以这样用。貌似没有任何问题,其实不然。当1)中的a加1时,就会出现问题。如果a是一个整型变量,赋值表达式a=a+1,表示a所对应的内存地址的值加1后所得的数再存入a所对应的地址,亦即b的地址加1。此时a指向赋值后的地址,亦既&b+1的地址(b之后的第一个字节)。如果这样用,有时可能会导致...
  • 你好,我是C语言初学者,有这么几个问题想问: 1.x=(i=4,j=16,k=32...
    答:1、因为逗号仅起分割作用,且是自左向右执行,所以在括号中的表达式以最后一个结果为准,因此 x=(i=4,j=16,k=32); 等价于x=(k=32); 其实就是连续赋值 x=k=32;2、用户标示符的意思是指变量,不是数据类型。例如 : long int a_b_1=0;long int 是数据类型 ,是可以有空格间隔的,比如...
  • 关于一个c语言程序的问题,我是初学者,请用简单的语言告诉我。。。谢了...
    答:问题1:可以的。但第7行要改为:scanf("%lf",&r);问题2:printf("圆的周长为:%f\n",2*PI*r); //这个表示在%f这个位置以实数形式输出2*PI*r的值,引号内的其他字符原样输出,\n表示换行。若2*PI*r的值为31.4,则输出:圆的周长为:31.40000<换行> ...