C++,如何用新的参数修改正在执行的程序

C++, how to modify program under execution with new arguments

本文关键字:执行 程序 修改 参数 何用新 C++      更新时间:2023-10-16

我发布的原始代码经过了编辑,因为它似乎引起了混乱。我知道这是错误的,但我只想把它作为一个例子。我想使用的代码是:

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"语句在参数上进行循环,处理所有给定的参数。例如,