Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: while en 9 Noviembre 2010, 13:30 pm



Título: FindWindow con array de strings
Publicado por: while en 9 Noviembre 2010, 13:30 pm
Hola, el objetivo es encontrar una serie de ventanas que guardo en un array:

string MDB[]={
"Firefox",
"Paint",
"Otro"
};

luego pretendo ver si hay alguna abierta mediante un bucle:
for(int i=0; i<=2; i++){
if(FindWindow(NULL,TEXT(MDB)))
...

pero el segundo parametro de FindWindow es const CHAR *, pero tampoco puedo hacer
FindWindow(NULL,TEXT((const CHAR*)MDB)

Alguna solución?
Gracias


Título: Re: FindWindow con array de strings
Publicado por: Littlehorse en 9 Noviembre 2010, 14:54 pm
Si no estas usando UNICODE, podes usar el miembro c_str de string:

Código
  1. string array[]={"name1","name2"};
  2.  
  3. for(i=0;i<2;i++)
  4. cout<<FindWindow(NULL, array[i].c_str());


Si usas UNICODE, el problema con lo anterior es que no podes usar el miembro c_str, pero igual podes usar wstring para hacerlo:

Código
  1. wstring array[]={L"name1",L"name2"};
  2.  
  3. for(i=0;i<2;i++)
  4. cout<<FindWindow(NULL, array[i].c_str());

Igual podes no usar stl strings en absoluto, pero habría que ver el proyecto en general.

Saludos!



Título: Re: FindWindow con array de strings
Publicado por: while en 9 Noviembre 2010, 15:16 pm
muchas gracias, me servió el primero.

una cosa mas, creéis que podria darme problemas tener un thread
while(true){
... comprobación findwindow ...
}
para verificar en todo momento si se ejecuta X aplicación?
podria lagear al proceso original? es muy pesado el findwindow?
(es para que no se ejecuten programas como cheat engine, etc)


Título: Re: FindWindow con array de strings
Publicado por: Littlehorse en 9 Noviembre 2010, 16:39 pm
Como poder, podrias. Y no, no alentaría el proceso original, pero el problema principal es que no va a cumplir con el objetivo correctamente. Es decir, partamos de la base que el titulo de una ventana no es la mejor forma de descubrir si una aplicacion esta siendo ejecutada. Como mínimo, deberías enumerar los procesos para ver si el Cheat Engine se encuentra o no, pero eso tampoco seria suficiente.
Hay muchas formas de verificar si una aplicacion esta o no esta corriendo. En el caso del Cheat Engine, podes verificar si el driver que utiliza esta cargado.

Igualmente si tu idea es proteger tu aplicacion de cualquier modificación, la única forma eficiente y segura de hacerlo es desde modo kernel.

Saludos!




Título: Re: FindWindow con array de strings
Publicado por: while en 9 Noviembre 2010, 21:56 pm
Aham, la idea era crear una extensa base de datos de programas maliciosos, y ver su titulo para saber si esta en ejecución.
Pero hacerlo de otra forma, sería demasiado hacerlo con cada programa distinto no?
Tengo recopilados unos 70 aprox.