C/Visual C - PID ( process identifier )

 
Vista:

PID ( process identifier )

Publicado por Oliver++ (339 intervenciones) el 19/11/2003 17:06:29
Existirá una funcion que me devuelva la ventana principal de un programa como GetMainWnd () pero que tome como parámetro el PID de un programa?

es para escribir un pequeño soft que me esconda todas las ventanas de windows internet explorer.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:PID ( process identifier )

Publicado por INT3 (6 intervenciones) el 19/11/2003 20:21:02
por que no simplemente enumeras la ventanas, verificas si es la del IE por medio de su CLASSNAME y las escondes?
no creo que sea posible ya que un PID puede tener muchas ventanas principales.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:PID ( process identifier )

Publicado por Oliver++ (339 intervenciones) el 20/11/2003 03:22:16
Es posible hacerlo de esa manera pero windows al compactar la memoria puede cambiarla de posicion lo que origina un pontero colgado. No siempre es asì, pero ya he probado y en varias ocaciones el programa me lanza una exepcion.

Al buscar en msdn me encontre que cuando tengo un puntero a una ventana este debe ser usado solo para usos temporales y no para mantenerlo durante la ejecucion de todo el programa.

Lo unico que se me ocurre es usar PID que si se garantizan ser los mismo durante la vida de un proceso.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:PID ( process identifier )

Publicado por INT3 (6 intervenciones) el 20/11/2003 06:26:30
¿a que te refieres con lo de compactar memoria?
¿a cual puntero te refieres?

cuando enumeras las ventanas no necesitas ningun puntero, bueno solo se necesita el puntero que apunta a la funcion callback.
un identificador de proceso (PID) puede tener muchas ventanas, principales o hijas.
lo mas facil es hacer la enumeracion de ventanas, asi muestras todas o las escondes segun su clase.
el nombre de clase que usa el IE es IEFrame y lo puedes agarrar con la funcion GetClassName()
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:PID ( process identifier )

Publicado por Oliver++ (339 intervenciones) el 20/11/2003 13:51:46
Segun Microsoft los punteros a objetos CWnd no son estables y pueden cambiar su valor debido a que windows (el os) cambia su valor al mover objetos durante un proceso que se realiza periodicamente para compactar la memoria en uso.

como es eso de enumerarlas? explicame ese detalle, ahí puede estar la solucion.

Gracias por tu interes.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:PID ( process identifier )

Publicado por INT3 (6 intervenciones) el 20/11/2003 22:11:32
Puedes enumerar las ventanas con la funcion EnumWindows()
necesitas pasar el puntero hacia una funcion de tipo:

BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam);

hwnd contendra el manejador de la ventana y puedes usar eso para agarrar su classname con GetClassName()
Si la classname es igual a IEFrame (IExplorer) la escondes o muestras.
Para que continues enumerando las ventanas retornas TRUE, o FALSE en caso contrario.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar