标签: command-line-interface

尝试在 C++/CLI 项目中调用 GetAsyncKeyState() 时出错

我正在开发一个相当复杂的项目,在该项目中我正在使用 C++/CLI 的项目访问用普通旧式 C++ 编写的类。它是一个 Windows 窗体 GUI 项目,使用许多与其(非 CLI)C++ 姐妹项目相同的功能。

在我试图调整以在两种环境中工作的一门课程中,我使用此功能轮询按键:

inline bool IsKeyDown(unsigned char ch) const { 
    return (GetAsyncKeyState(ch) & (1u << 15)) != 0; 
}
Run Code Online (Sandbox Code Playgroud)

我同时收到“无法解析的令牌”和“无法解析的外部符号”错误 "extern "C" short __stdcall GetAsyncKeyState(int)" (?GetAsyncKeyState@@$$J14YGFH@Z) referenced in function "public: bool __clrcall Engine::InputManager::IsKeyDown(unsigned char)const " (?IsKeyDown@InputManager@Engine@@$$FQBM_NE@Z)

显然,这个问题与 CLI 友好的实现有关,GetAsyncKeyState()但我不确定需要做什么不同。谁能指导我如何解决这个问题?该函数在我的非 CLI 环境中正常运行(并且已经运行了几个月)。我对 CLI 东西非常陌生,所以任何帮助都会很棒,而且任何帮助都不会太具体。

如果有帮助,我正在使用 Visual Studio 2010 并使用/clr参数(not:pure:safe)进行编译。

c++ windows command-line-interface visual-studio-2010

2
推荐指数
1
解决办法
3836
查看次数

PHP CLI - 在后台执行操作的同时获取用户输入

我正在开发一款用 PHP 编写并在控制台中运行的游戏。回想一下旧的 MUD 和其他基于文本的游戏,甚至一些 ASCII 艺术!

不管怎样,我想做的是让事情发生的同时也接受用户输入。

例如,假设这是一个两人游戏,玩家 1 正在等待玩家 2 采取行动。只需收听消息即可轻松完成此操作。

但是如果玩家 1 想要更改一些选项怎么办?如果他们想查看游戏状态各方面的详细信息怎么办?输掉比赛又怎样?在等待对手采取行动时,玩家可能想做很多事情。

不幸的是,我现在拥有的最好的结果是 Ctrl+C 完全杀死了程序。然后另一个玩家将被挂起,直到连接断开。哦,比赛彻底失败了。

我通过 获取用户输入fgets(STDIN)。但这会阻止执行,直到收到输入为止(这通常是一件好事)。

像这样的控制台程序是否可以同时处理输入和输出?或者我应该看看其他界面?

php io command-line-interface

2
推荐指数
1
解决办法
4316
查看次数

如何从 CLI 调用 PHP 函数?

假设我有一个私有函数addUser()function.php$username作为输入变量并执行一些操作:

function addUser($username) {

//do some stuff

}
Run Code Online (Sandbox Code Playgroud)

现在我想调用此函数并传递值 $username(如果可能的话)使用 PHP CLI。我想这在外部是行不通的,function.php因为它是私人的,但是我该怎么做呢?

php function call command-line-interface

2
推荐指数
1
解决办法
5575
查看次数

通过 C++ write 语句将文本加粗

我正在通过 telnet 在字典服务器上工作,我希望它以这种格式返回:

  **word** (wordType): wordDef wordDef wordDef wordDef
wordDef wordDef wordDef.
Run Code Online (Sandbox Code Playgroud)

现在我使用以下方式输出代码:

write( my_socket, ("%s", word.data()    ), word.length()    ); // Bold this
write( my_socket, ("%s", theRest.data() ), theRest.length() );
Run Code Online (Sandbox Code Playgroud)

所以我希望第一行加粗。

编辑

抱歉,我忘了提及这是针对命令行的。

c++ sockets formatting networking command-line-interface

2
推荐指数
1
解决办法
2952
查看次数

如何传递“exclusive”作为rabbitmqadmin的参数来声明队列?

在Java中有一个选项:

  • 队列 - 队列的名称
  • Durable: true - 如果我们声明一个持久队列(该队列将在服务器重新启动后继续存在)
  • Exclusive: true - 如果我们声明一个独占队列(仅限于此连接)
  • autoDelete: true - 如果我们声明一个自动删除队列(服务器将在不再使用时删除它)
  • 参数:其他 - 队列的属性(构造参数)

channel.queueDeclare(endPointName, true, false, false, null);

对于rabbitmqadmin,命令行如何使用rabbitmqadmin命令行工具传递exclusive=false参数?

rabbitmqadmin工具的文档没有此用例的示例。

我正在寻找这样的 shell 脚本命令:

rabbitmqadmin declare queue name="endPointName" durable=true exclusive=false arguments={"x-message-ttl":86400000}
Run Code Online (Sandbox Code Playgroud)

command-line-interface rabbitmq

2
推荐指数
1
解决办法
4415
查看次数

是否有记录命令行界面的最佳实践?

我设计了一些具有 CLI 的程序,并希望尽可能标准地记录它们。是否有关于最佳方法的协议?

一个例子:

假设该程序是“sayHello”,它接受一些参数:名称和消息。所以一个标准的调用看起来像这样:

> sayHello "Bob" "You look great" 
Run Code Online (Sandbox Code Playgroud)

好的,我的命令用法如下所示:

sayHello [name] [message]
Run Code Online (Sandbox Code Playgroud)

如果括号在使用命令中具有特定含义,那么这可能已经是一个错误。但让我们更进一步说“消息”是可选的:

sayHello [name] [message (optional)]
Run Code Online (Sandbox Code Playgroud)

然后还有一个问题,如果我们想要表示一个默认值怎么办:

sayHello [name] [message (optional: default 'you look good')]
Run Code Online (Sandbox Code Playgroud)

我意识到这个用法声明在这一点上看起来有点迟钝。我真的想问关于如何编写这些内容是否有一些商定的标准。我偷偷怀疑括号和方括号都有特定的含义。

shell command-line command-line-interface

2
推荐指数
1
解决办法
1691
查看次数

从命令行界面获取系统信息

我正在尝试创建一个脚本,运行时将输出该计算机规格的文本文件。

是否有一个程序可以提供命令行界面来在 Windows 操作系统上生成包含简化计算机规格的文本文件?

只是基本的消费者信息。即:RAM、CPU、HDD 等。我不需要或不想要有关计算机的每一个细节。

据我所知,MSinfo32、DxDiag、Speccy 提供导出功能,但是 Speccy 不通过 CLI 提供自动化,而另外两个只是导出所有系统信息的全局信息。其中大部分是个人的,对于我的需要来说是不必要的。

我能想到的唯一两种解决方法是使用 Windows 中相当于 grep/cat/awk 命令的命令来仅筛选出必要的信息。显然,这可能会非常乏味,因为每个系统都有不同的规格。或者,使用程序(如果存在)来指定要收集哪些规格以及要忽略哪些规格。

windows powershell command-line-interface system-information

2
推荐指数
1
解决办法
5467
查看次数

Slim 3 控制台执行 cron

我正在尝试创建某种导入来移动数据库信息和转换数据。以后这个导入需要每天通过cron来执行。我想使用我编写的部分代码并重用一些模型和控制器。为此,我尝试通过命令行调用 Slim 3,但遇到一些问题。

控制台命令:

 php cli.php import
Run Code Online (Sandbox Code Playgroud)

我不知道如何正确处理argv

cli.php:

require __DIR__ . '/vendor/autoload.php';

if (PHP_SAPI == 'cli') {
    $argv = $GLOBALS['argv'];
    array_shift($argv);

    $pathInfo       = implode('/', $argv);

    $env = \Slim\Http\Environment::mock(['PATH_INFO' => $pathInfo]);

    $settings = require __DIR__ . '/app/config/settings.php'; // here are return ['settings'=>'']

    //I try adding here path_info but this is wrong, I'm sure
    $settings['environment'] = $env; 

    $app = new \Slim\App($settings);

    $container = $app->getContainer();
    $container['errorHandler'] = function ($c) {
        return function ($request, $response, $exception) use ($c) {
             //this is …
Run Code Online (Sandbox Code Playgroud)

php console cron command-line-interface slim

2
推荐指数
1
解决办法
7327
查看次数

如何使用 Amazon AWS CLI 更新 DynamoDB 全局二级索引?

如何使用 AWS 命令​​行界面更新 DynamoDB 表上预先存在的全局二级索引?
我想增加预配置的吞吐量读取和写入容量。

我在 AWS 文档中找不到此信息。嗯,我找到了Java SDK,但我想使用命令行界面来执行此操作。

command-line-interface amazon-dynamodb

2
推荐指数
1
解决办法
4677
查看次数

如何从终端将单引号 (') 和双引号 (") 写入文件?

使用“echo”从终端写入文件时,我可以将除两个引号之外的所有内容一起写入。当尝试将 python 代码行写入/附加到包含单引号和双引号的文件时,例如

echo "url = "http://mydummyurl.xyz" 
names = ['name1', 'name2']" > somefile.txt
Run Code Online (Sandbox Code Playgroud)

或者

echo 'url = "http://mydummyurl.xyz" 
names = ['name1', 'name2']' > somefile.txt
Run Code Online (Sandbox Code Playgroud)

somefile.txt 中写入的内容是

url = http://mydummyurl.xyz
names = ['name1', 'name2']
Run Code Online (Sandbox Code Playgroud)

或者

url = "http://mydummyurl.xyz"
names = [name1, name2]
Run Code Online (Sandbox Code Playgroud)

取决于我在回显后使用什么来包围字符串。观察到文件中写入的字符串缺少用作 python 语法的单引号或双代码。如何写入文件以保持所有必要的语法完整,包括单引号和双引号?

shell terminal file command-line-interface echo

2
推荐指数
1
解决办法
5534
查看次数