C++,如何用新的参数修改正在执行的程序
C++, how to modify program under execution with new arguments
我发布的原始代码经过了编辑,因为它似乎引起了混乱。我知道这是错误的,但我只想把它作为一个例子。我想使用的代码是:
https://github.com/SFML/SFML/wiki/Source:-动画Prite
你可以只关注这一部分:
while (window.isOpen())
{
sf::Event event;
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed)
window.close();
if (event.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::Escape)
window.close();
}
sf::Time frameTime = frameClock.restart();
// if a key was pressed set the correct animation and move correctly
sf::Vector2f movement(0.f, 0.f);
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Up))
{
currentAnimation = &walkingAnimationUp;
movement.y -= speed;
noKeyWasPressed = false;
}
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Down))
{
currentAnimation = &walkingAnimationDown;
movement.y += speed;
noKeyWasPressed = false;
}
让我们假设不是
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Up))
我希望这个程序根据从代码外部接收到的参数进行操作。
这将是我想要遵循的方案:
从我的C++代码(我们称之为Origin(中,我用以下命令调用这个程序(我们称其为AnimatedSprite.exe(:
ShellExecute(NULL,NULL,"C:\AnimatedSprite.exe",NULL ,NULL,SW_SHOWDEFAULT);
这将在不发送任何命令的情况下打开AnimatedSprite.exe。
现在我想保持它打开,并向他发送命令,就像一样
ShellExecute(NULL,NULL,"C:\Try.exe",MyCommandLetter.c_str() ,NULL,SW_SHOWDEFAULT);
因此,当我已经打开的AnimatedSprite.exe接收到"MyCommandLetter"作为argv时(是的,我知道我必须在main中声明argc和argv,我必须修改原始代码(
它的作用类似于:
if (argv[1]=='a')
{
currentAnimation = &walkingAnimationUp;
movement.y -= speed;
noKeyWasPressed = false;
}
希望它变得更清楚。
如果我必须使用其他不是ShellExecute的函数,这并不重要,只要我能理解它是如何工作的(对于这个例子,它是可以的(。
提前谢谢。
好的,正如我理解的问题,您希望被调用的程序对多个参数做出反应。在这种情况下,您不应该将main构建为单个的"if-else"语句,而是使用"switch-case"语句在参数上进行循环,处理所有给定的参数。例如,
相关文章:
- 程序在执行程序的其余部分之前退出
- libprotobuf 检查在 Mac OS 上执行程序时失败
- 是否可以依赖函数范围的静态变量来执行程序关闭期间调用的方法?
- 在另一台 PC 上执行程序时加载 SDL2 共享库时出错
- 从 GUI 文件资源管理器执行程序,并且不生成终端
- 测试操作系统时执行程序集"sti"时虚拟框崩溃
- 重新执行C++程序会加快速度
- 如何用共享库替换可执行C++程序的功能?
- 编译并执行C#程序中的C++代码
- 如果我在 Linux 上更改C++动态共享库,而我的可执行程序在其上使用,会发生什么
- 在C++中,系统如何将这些对象中的每一个与执行程序的窗口相关联?
- 命令行参数执行C 程序
- 按 e 执行程序C++
- 在返回另一个函数的函数中执行程序期间出错
- 如何使用"trusty"映像在本地执行C++程序的Travis CI?
- 当我们说在执行程序时将操作系统的控制权传递给main()函数时,我们的意思是什么
- execve(..) 不执行程序,尽管传入了 PATH 变量
- 在机器异常之后重新执行程序
- 调试和发布库及其可执行程序
- 当访问者进入网站时执行C++程序