У меня возникают проблемы при выполнении внешней программы с параметрами командной строки.Я Noob для Visual Studio - PullRequest
0 голосов
/ 27 сентября 2019

У меня есть часть (недавно обновленного) программного обеспечения, которое больше не работает с другим программным обеспечением.Новое программное обеспечение - дорогая консольная версия и не лучше чем старая версия, которую мы купили.Разница лишь в параметрах командной строки.Мне нужно манипулировать командной строкой, чтобы она работала.пример: всегда работающее (обновляемое) программное обеспечение запускает процесс, подобный следующему:

"convert.exe -option1 -option2"

Мое решение - переименовать convert в go.exe, написать небольшую программную прокладку.Назовите shim convert.exe при запуске нового convert.exe, он вызовет процесс

"go.exe -option2 -option1 -V"

... и дождется его завершения, прежде чем завершить работу.Я сделал это несколько лет назад с VB6, но мои навыки программирования устарели и никогда не были очень хорошими.Любая помощь будет оценена.

Я использую «многобайтовый набор символов» в свойствах

#include <windows.h>
#include <iostream>
#include <sstream>
using namespace std;

int main(int argc,      // Number of strings in array argv
    char* argv[],   // Array of command-line argument strings
    char* envp[])  // Array of environment variable strings

    {
        //std::cout << "  argv[" << 0 << "]   " << argv[0] << "\n"; //path I don't need this
        std::cout << "  argv[" << 1 << "]   " << argv[1] << "\n";
        std::cout << "  argv[" << 2 << "]   " << argv[2] << "\n";


        std::stringstream ss;
        ss << " " << argv[2] << " " << argv[1] << " -V" ;
        std::string s = ss.str();


        LPCSTR argum = s.c_str();

        ShellExecute(NULL, "open", ("c:\\go.exe" ), NULL, argum, SW_SHOWMAXIMIZED);

        return 0;
    }
...