1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
|
int main()
{
STARTUPINFO si;
PROCESS_INFORMATION p;
//
// dica: muitas estruturas no Windows têm uma variável membro chamada
// cb ou cbSize. Esse membro deve ser preenchido com o sizeof()
// da estrutura ANTES de chamar a função. Se você não fizer isso a função
// retornará um erro. Esse é um erro comum de iniciantes (eu apanhei muito...)
//
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
si.wShowWindow = ShowWindow(GetWindow(NULL, SW_HIDE), SW_HIDE);
ZeroMemory(&p, sizeof(p));
//
// Abrindo o Bloco de Notas
//
if( ! CreateProcess( NULL, // Sem módulo
"java -jar C:\\ComRead.jar", // linha de comando para o executável
NULL,
NULL,
FALSE, // O processo criado não herdará os handles
0,
NULL,
NULL,
&si, // Ponteiro para STARTUPINFO
&p ) // Ponteiro para PROCESS_INFORMATION
)
{
printf( "Erro em CreateProcess: 0x%X", GetLastError() );
return 0;;
}
// O CreateProcess preencheu as estruturas e colocou handles nelas
// como não vamos usar os handles, precisamos fechá-los...
CloseHandle(p.hProcess);
CloseHandle(p.hThread);
return 0;
}
|