У меня есть часть (недавно обновленного) программного обеспечения, которое больше не работает с другим программным обеспечением.Новое программное обеспечение - дорогая консольная версия и не лучше чем старая версия, которую мы купили.Разница лишь в параметрах командной строки.Мне нужно манипулировать командной строкой, чтобы она работала.пример: всегда работающее (обновляемое) программное обеспечение запускает процесс, подобный следующему:
"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;
}