elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Problema al tomar un PID
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema al tomar un PID  (Leído 2,144 veces)
Mr.Blue


Desconectado Desconectado

Mensajes: 441



Ver Perfil WWW
Problema al tomar un PID
« en: 13 Junio 2010, 01:14 am »

Bueno les comento estuve viendo como tomar el pid de una ventana, pero no logro hacer andar unas funciones de la cabezera windows.h .
Si no me equivoco y por lo que vi en msdn.microsoft.com la sintaxis es la correcta.
no se si sera por el compilador o SO que utilizo pero me parece raro.
por las dudas dejo esos datos
Windows Vista.
Dev-C++ 4.9.9.2

Aca el code

Código
  1. #include <windows.h>
  2.  
  3. main(){
  4. system ("holamundo");
  5. system("title Hola");
  6. system ("pause");
  7. }
  8.  
Eh leido mucho por ahi que no es bueno llamar al sistema, de paso si me explican "el porque" se los agradezco  :P.
a fines de este programa es entender un poco el funcionamiento de las funciones que a continuacion  aparecen como comentario.

Código
  1. #include <windows.h>
  2. #include <stdio.h>
  3.  
  4. main()
  5. {
  6. HWND encontre;
  7. //DWORD pid;
  8. HANDLE proceso;
  9.  
  10.  
  11. encontre = FindWindow(NULL, "Hola");
  12. if (encontre == 0)
  13. printf ("Ventana cerrada\n\a");
  14. else
  15. printf ("Ventana abierta\n\a");
  16. //DWORD pid GetWindowThreadProcessId(encontre,&pid);  /* Estas son las las funciones que no logro.
  17. //proceso =OpenProcess(PROCESS_ALL_ACCESS,0,pid);
  18. //CloseHandle(proceso);*/
  19. system ("pause");
  20. }

El problema surge ahi en el comentario sin eso el programa anda...
a continuacion les muestro que error me tira el dev

 C:\Dev-Cpp\Ejercicios de ejemplos\SinNombre3.cpp In function `int main()':
16 C:\Dev-Cpp\Ejercicios de ejemplos\SinNombre3.cpp expected `;' before "GetWindowThreadProcessId"


« Última modificación: 13 Junio 2010, 01:20 am por eeprom46 » En línea

Littlehorse
All the world's a stage
Moderador
***
Desconectado Desconectado

Mensajes: 2.714


Nie Dam Sie


Ver Perfil WWW
Re: Problema al tomar un PID
« Respuesta #1 en: 13 Junio 2010, 01:55 am »

A simple vista es esto lo que esta mal:

Código
  1. //DWORD pid GetWindowThreadProcessId(encontre,&pid);  /* Estas son las las funciones que no logro.
  2.  

Estas definiendo una especie de prototipo y llamada al mismo tiempo, lo cual es incorrecto.

Código
  1. HWND h = FindWindow(NULL, "hola");
  2. if(h)
  3. {
  4. DWORD pid;
  5. GetWindowThreadProcessId(h,&pid);
  6. cout<<"PID: "<<pid<<endl;
  7. HANDLE proc=OpenProcess(PROCESS_ALL_ACCESS,0,pid);
  8. }
  9. else
  10.  return 1;

Deberia funcionar. Para estos casos ten en cuenta revisar primero la msdn

GetWindowThreadProcessId
FindWindow
OpenProcess

Citar
Eh leido mucho por ahi que no es bueno llamar al sistema, de paso si me explican "el porque" se los agradezco  :P.
a fines de este programa es entender un poco el funcionamiento de las funciones que a continuacion  aparecen como comentario.

Porque utilizarla tiene una sobrecarga bastante grande. Suspender el programa, reservar la memoria para la llamada al sistema, buscar el comando, etc. Tanto C como C++ son lenguajes en los cuales se puede lograr un rendimiento muy importante, por lo tanto ese tipo de practicas no suelen ser recomendables.

Obviamente en mas de una oportunidad te basta con usar system, pero es preferible no hacerlo.

Y por cierto, main debe devolver un entero.

Saludos


En línea

An expert is a man who has made all the mistakes which can be made, in a very narrow field.
Mr.Blue


Desconectado Desconectado

Mensajes: 441



Ver Perfil WWW
Re: Problema al tomar un PID
« Respuesta #2 en: 13 Junio 2010, 02:10 am »

Ahh.. graciass Littlehorse sos groso  ;-)

Funciona ahora
« Última modificación: 13 Junio 2010, 02:15 am por eeprom46 » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
tomar informacion de un webbrowser?
Programación Visual Basic
P4nd3m0n1um 4 2,349 Último mensaje 22 Junio 2011, 04:48 am
por seba123neo
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines