C 检测用户何时输入
C Detect when user is typing
我想知道 C 中是否有一种方法可以检测用户何时键入。
我实际上读过这个 post 但我找不到在 Windows OS...[= 中将我的控制台从行模式切换到字符模式的方法11=]
“ncurses”库是它所说的唯一方法吗?...
我不能像 java 那样创建一个观察“输入”流的线程吗?
我只需要“事件处理程序”,我的其余代码将通过 Winsock 向客户端发送消息,如“USER_NAME 正在输入”,如 Whatsapp...
有什么办法吗?
如果使用Windows,则可以使用GetAsyncKeyState()。它在 Windows.h
中定义和实现,并使用 User32.lib
和 User32.dll
实现。它不仅检测按键点击,还提供有关按键状态和按键点击顺序的信息:
Determines whether a key is up or down at the time the function is
called, and whether the key was pressed after a previous call to
GetAsyncKeyState.
它还能够处理 序列 击键,包括 virtual keys 的击键序列,如下所示:
一个简短的例子:
short state=0;
short state1=0;
state = GetAsyncKeyState(VK_CONTROL);
if (0x80000000 & state) //check instantaineous state of key
{
state = GetAsyncKeyState(VK_SHIFT);
if (0x80000000 & state) //check instantaneous state of key
{
state = GetAsyncKeyState('h');
state1 = GetAsyncKeyState('H');
if ((0x80000000 & state) ||
(0x80000000 & state1))
此特定示例是捕获修改后的按键点击序列的摘录,但该函数可用于简单地捕获任何按下的键。
听起来像“kbhit”可能适合你。 There is一个例子。
我想知道 C 中是否有一种方法可以检测用户何时键入。
我实际上读过这个 post “ncurses”库是它所说的唯一方法吗?...
我不能像 java 那样创建一个观察“输入”流的线程吗? 我只需要“事件处理程序”,我的其余代码将通过 Winsock 向客户端发送消息,如“USER_NAME 正在输入”,如 Whatsapp... 有什么办法吗?
如果使用Windows,则可以使用GetAsyncKeyState()。它在 Windows.h
中定义和实现,并使用 User32.lib
和 User32.dll
实现。它不仅检测按键点击,还提供有关按键状态和按键点击顺序的信息:
Determines whether a key is up or down at the time the function is called, and whether the key was pressed after a previous call to GetAsyncKeyState.
它还能够处理 序列 击键,包括 virtual keys 的击键序列,如下所示:
一个简短的例子:
short state=0;
short state1=0;
state = GetAsyncKeyState(VK_CONTROL);
if (0x80000000 & state) //check instantaineous state of key
{
state = GetAsyncKeyState(VK_SHIFT);
if (0x80000000 & state) //check instantaneous state of key
{
state = GetAsyncKeyState('h');
state1 = GetAsyncKeyState('H');
if ((0x80000000 & state) ||
(0x80000000 & state1))
此特定示例是捕获修改后的按键点击序列的摘录,但该函数可用于简单地捕获任何按下的键。
听起来像“kbhit”可能适合你。 There is一个例子。