[C con Clase] Manipular programa externo

Abel aydabella en yahoo.com.ar
Sab Mayo 22 19:02:11 CEST 2010


Hola,
despues de mucho tiempo vuelvo con la siguiente pregunta.
Uso el LabWindows, en el que puedo programar en C, pero no en C++.
Necesito escribir un programa, el cual me abra otro y desde mi programa poder manipular a ese otro. Un ejemplo mas claro:
Mi programa arranca, abre el NotePad.exe; desde mi programa le indico que vaya a "File" y abra la opción "Abrir". Hice lo siguiente:
HWND wnd;
PROCESS_INFORMATION pi = {0}; 
STARTUPINFO si = {sizeof(si)}; 

CreateProcess(NULL, "notepad.exe", NULL, NULL, FALSE, 0, NULL,NULL, &si, &pi);
wnd = FindWindow (NULL,"Unbenannt - Editor");
PostMessage(wnd, WM_COMMAND,HIWORD(1)+2,0);//Con esto abro la ventana "Abrir"
wnd = FindWindowEx(wnd,0,"Edit",NULL); 
for( i= 1;i<= 10;i++)
SendMessage(wnd, WM_CHAR, 48 , 0);  //escribe en NotePad diez veces "0"

Mi pregunta es, cómo logro abrir la ventana "Abrir" indicandole desde mi programa que se simule apretar las teclas: Strg + 'O', mas o menos había pensado en esto:
PostMessage(wnd, WM_KEYDOWN, VK_CONTROL+'O', 0);
pero no funciona, porque el tercer parámetro de PostMessage solo acepta una constante; intente enviar dos PostMessage:
PostMessage(wnd, WM_KEYDOWN, VK_CONTROL, 0);
PostMessage(wnd, WM_KEYDOWN, VK_O, 0);   // VK_O=0x4F
pero tampoco funciona.
Talvez se preguntan, porque quiero abrir de otra forma la ventana "Abrir", el problema es que desde mi programa tengo que manipular otro programa que no es el NotePad, osea en ese otro programa no funciona el:
PostMessage(wnd, WM_COMMAND,HIWORD(1)+2,0);
espero puedan ayudarme con este problema, porque despues de eso tengo otras preguntas referidos al caso, de por ejemplo: una vez abierto la ventana "Abrir", cómo puedo incluir una ruta en el espacio donde se pone el nombre del archivo a abrirse, por ejemplo quiero poner ahi: C:\TEST\test.txt
Gracias por toda respuesta.
Abel


Más información sobre la lista de distribución Cconclase