Create a process with `CreateProcess()` and output wide characters

125 Views Asked by At

I use CreateProcess() to open the cmd. It works fine if I use ascii, but when I try to use wide characters it doesnt work

int res;

HANDLE Entrada_Rd = nullptr;
HANDLE Entrada_Wr = nullptr;
HANDLE Saida_Rd = nullptr;
HANDLE Saida_Wr = nullptr;

SECURITY_ATTRIBUTES sa;

wchar_t* ptrRespTerm = Resposta;
unsigned long long alocTam = 0;
DWORD tamRespTerm = 0;

sa.nLength = sizeof sa;
sa.lpSecurityDescriptor = 0;
sa.bInheritHandle = 1;

if (!CreatePipe(&Saida_Rd, &Saida_Wr, &sa, 0))
    // error

if (!SetHandleInformation(Saida_Rd, HANDLE_FLAG_INHERIT, 0))
    // error

if (!CreatePipe(&Entrada_Rd, &Entrada_Wr, &sa, 0))
    // error

if (!SetHandleInformation(Entrada_Wr, HANDLE_FLAG_INHERIT, 0))
    // error

PROCESS_INFORMATION pi;
STARTUPINFOW si;

ZeroMemory(&pi, sizeof pi);
ZeroMemory(&si, sizeof si);

si.cb = sizeof si;
si.hStdError = Saida_Wr;
si.hStdOutput = Saida_Wr;
si.hStdInput = Entrada_Rd;
si.dwFlags |= STARTF_USESTDHANDLES;

res = CreateProcessW(L"C:\\WINDOWS\\system32\\cmd.exe", 0, 0, 0, 1, 0, 0, 0, &si, &pi);

Is there a way to make it work with wchar_t input and also output the text in wchar_t?

0

There are 0 best solutions below