gpt4 book ai didi

c - 如何从终端将字符传递给可执行文件?

转载 作者:行者123 更新时间:2023-11-30 17:11:13 25 4
gpt4 key购买 nike

现在我的可执行文件如下所示:

#include <windows.h>

int main(int argc, char *argv[])
{
return (argc > 1 ? (GetKeyState(*argv[1]) & 0x8000) : 0);
}

我的批处理脚本程序如下所示:

@ECHO OFF

:LOOP
PING 127.0.0.1 -n 2 >NUL 2>&1 || PING ::1 -n 2 >NUL 2>&1
isKeyDown.exe a
echo %errorlevel%
GOTO LOOP

并且批处理脚本可以正确显示可执行文件设置的错误级别。另外,如果我直接在可执行文件中输入一个字符,例如“A”,它将正确确定何时按下该键。因为我已经确认了这两点,所以“*argv[1]”似乎有问题,而且它不是优先级,因为我检查过。

*编辑作为对评论的进一步回应,代码如下:

包括

包括

int main(int argc, char *argv[])
{
if (argc > 1)
std::cout << *argv[1];
return (argc > 1 ? (GetKeyState(*argv[1]) & 0x8000) : 0);
}

将在控制台中生成“A0”,所以这些不是问题,但值得尝试。谢谢。

最佳答案

好吧,首先我必须使用 https://msdn.microsoft.com/en-us/library/windows/desktop/dd375731%28v=vs.85%29.aspx

像这样:

@ECHO OFF

:LOOP
PING 127.0.0.1 -n 2 >NUL 2>&1 || PING ::1 -n 2 >NUL 2>&1
isKeyDown.exe 11
echo %errorlevel%
GOTO LOOP

然后我就可以使用

#include <windows.h>

int main(int argc, char *argv[])
{
int key;
if (argc > 1)
key = 16*(argv[1][0]-'0')+(argv[1][1]-'0');
return (argc > 1 ? (GetKeyState(key) & 0x8000) !=0 ? 1 : 0 : 0);
}

这还不适用于像 $A3 这样的字符输入,但这是一个很大的进步!我将从这里拿走它。

关于c - 如何从终端将字符传递给可执行文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32448140/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com