我是新来的,除了C之外,我对C#和C都不熟悉。我听说C不能多线程,因为它是逐行读取的,POSIX和其他东西,但我想要的是同时从C运行两个输入函数。如果我必须从C到C或其他任何库中挑选很多库,那也没关系。
我试着执行下面这个简单的代码:
#include<stdio.h>
#include<windows.h>
#include<conio.h>
// Display message until key is pressed.
// This structure will be used to create the keyboard and mouse
// input event
int main () {
int x=1;
INPUT ip,ip2,ip3;
ip.type = 0;
ip.mi.mouseData = XBUTTON1;
ip.mi.dwFlags = MOUSEEVENTF_LEFTDOWN;
ip.mi.time = 0;
ip2.type= 0;
ip2.mi.mouseData=XBUTTON1;
ip2.mi.dwFlags=MOUSEEVENTF_LEFTUP;
ip2.mi.time = 0;
ip3.type= INPUT_KEYBOARD;
ip3.ki.wVk= VK_RETURN;
ip3.ki.dwFlags=0;
ip3.ki.time=0;
while(x=1){
Sleep(5000);
SendInput(1,&ip3,sizeof(ip3));
SendInput(1,&ip,sizeof(ip));
SendInput(1,&ip2,sizeof(ip2));
}
}
字符串
我真正想要的是合成一个键盘敲击输入和左键点击按下要读取我的桌面在同一时间.没有必要在所有的这个功能.我如何使这个运行在第一时间?你们能给我一个刷新版本的这个简单的代码,可以实现这一点?
1条答案
按热度按时间6tr1vspr1#
我听说C语言不支持多线程,因为它是逐行读取的
这简直是胡说八道-- C语言可能是第一个使用线程的编程语言,通过线程库的方式。然而,你不一定需要多线程--你可以直接点击从操作系统发送到应用程序的窗口消息。
在Windows中,您可以将程序编译为具有
Wndproc
消息回调函数的Windows应用程序(查看Windows API初学者学习资料),然后听例如WM_LBUTTONDOWN
(按下鼠标左键)和WM_KEYDOWN
(常规键盘按键按下)。您可以在static
变量中记录感兴趣的鼠标按钮/键盘按键的最后状态,然后在任何一个事件发生时都检查它们。通常,您不会在此类应用程序中使用控制台,但Windows特定的
WinMain
不会创建控制台(除非您手动请求)。