Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - BlackZeroX

#1091
Cita de: Hasseds en 28 Agosto 2011, 00:38 AM
PD:  es mas practico guardar el retorno de SetTimer para  luego utilizarlo con KillTimer pero este Por Ej con este hwnd tambien se puede , lo dicho ( voy a investigar que utilidad puede tener)

Es una ventana oculta que resive TODOS los mensajes del sistema operativo... para evitarnos hacer el trato de los mensajes mismos tal y como lo hariamos en C/C++...

P.D.: El hwnd en el SetTimer() y KilTtimer() son solo para relacionar el mensaje WM_TIMER con un CallBack al WinProc() de la ventana X con respecto a su hwnd... de todos modos en todos los codigos ya espuestos aqui se a guardado el uIDEvent generado por SetTimer() para posteriormente usarlo en el KillTimer()...

Cita de: MSDN_Microsoft http://msdn.microsoft.com/en-us/library/ms644906(v=vs.85).aspx

Remarks

An application can process WM_TIMER messages by including a WM_TIMER case statement in the window procedure or by specifying a TimerProc callback function when creating the timer. When you specify a TimerProc callback function, the default window procedure calls the callback function when it processes WM_TIMER. Therefore, you need to dispatch messages in the calling thread, even when you use TimerProc instead of processing WM_TIMER.

The wParam parameter of the WM_TIMER message contains the value of the nIDEvent parameter.

The timer identifier, nIDEvent, is specific to the associated window. Another window can have its own timer which has the same identifier as a timer owned by another window. The timers are distinct.

SetTimer can reuse timer IDs in the case where hWnd is NULL.


Dulces Lunas!¡.
#1092
Cita de: Hasseds en 27 Agosto 2011, 23:16 PM
El tema ya quedó resuelto, pero si alguna vez tenés que obtener el hwnd de un Main podes usar FindWindow. (Acabo de enterarme de esto, ya que también pensaba que este tipo de hwnd era unicamente propio de ventanas).

En efecto solo son de ventanas, los procesos no tienen hwnd.
Por ello El PROCESO MAIN() al igual que los demas, NO tienen hwnd.

Cita de: MSDN Microsoft http://support.microsoft.com/kb/259673/es

Todas las aplicaciones de Visual Basic tienen una ventana de nivel superior invisible que procesa los eventos y mensajes. En el modo de diseño, la ventana es ThunderMain, en el modo de ejecución, la ventana es ThunderRT6Main. El RT6 refleja el versión de Visual Basic que se utiliza. Las dos ventanas tienen el nombre del proyecto o el nombre del archivo ejecutable como el título de ventana. Esto es donde se establece el icono de aplicación.


Dulces Lunas!¡.
#1093
.
Código (vb) [Seleccionar]


Option Explicit

Declare Function SetTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
Declare Function KillTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long) As Long
Declare Function WaitMessage Lib "user32" () As Long

Dim iTmr            As Long

Sub main()
    iTmr = SetTimer(0, 0, 300, AddressOf TimerProc)
    Do While Not (iTmr = 0)
        DoEvents
        WaitMessage
    Loop
End Sub

Sub TimerProc(ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long)
    Debug.Print KillTimer(hwnd, iTmr)
    iTmr = 0
End Sub



Dulces Lunas!¡.
#1095
.
Ponle entonces &H0 o 0, el hwnd es propio de ventanas y solo es asosiativos normalmente...

Dulces Lunas!¡.
#1096
Foro Libre / Re: Pregunta para deportistas ...
27 Agosto 2011, 00:32 AM
.
No se tu pero jugar fronton en una cancha reducida de 3 paredes (por ejemplo el fondo del salon de clases, jejeje), se hace un buen ejercicio, me han dolido las piernas durante 3 dias consecutivos (igual las nalgas y brazos) es el deporte FISICO definitivo en cuando no hay profesor, el MENTAL es la copiadera en examenes como no!¡.

Dulces Lunas!¡.
#1097
.
Puedes usar para generar numeros aleatorios entre A y B este codigo.



#include <stdlib.h>
//#include <time.h>
#define swap( One, Two) One ^= Two; Two ^= One; One ^= Two;

int randNumber(int iMin, int iMax) {
    if (iMin > iMax) {
        swap(iMin, iMax);   //  macro 3 lineas.
    }
    //srand(time(NULL)); // No usado debido a que genera numeros repetidos si se usa la funcion muy seguida en un lapso de tiempo muy corto...
    return (rand() % (iMax - (iMin - 1) ) + iMin);
}



Dulces Lunas!¡.
#1098
Programación C/C++ / Re: Fallo de segmentacion
26 Agosto 2011, 18:58 PM
Cita de: _niu en 26 Agosto 2011, 11:35 AM

Pero al parecer empiezo a pensar que puede ser por estar en linux, tendria que probar en windows (no tengo xddd).


Que extraño: con mi modificacion a mi si me funciono inclusive corrio en codepad... lo probe en windows 7...

Dulces Lunas!¡.
#1099
.
y no hay con sangre?... me quedo con el 2do...

Dulces Lunas!¡.
#1100
Programación C/C++ / Re: Fallo de segmentacion
26 Agosto 2011, 07:31 AM
cuales son estos opcodes en ASM?

        0x55,//0
        0x48,//1
        0x89,//2
        0xe5,//3

lo demas veo que es un

Mov EAX,1
Ret

los que te cite no los Reconozco... y la vdd ando corto de tiempo para revisar http://ref.x86asm.net/geek.html...

Edito:

Ami me funciono asi:

http://codepad.org/h2Jr5zwt



#include <stdio.h>

int main() {
    int (*fncDinamic)();
    char OpCodes[]= {0x55,0x48,0x89,0xe5,0xb8,0x01,0x00,0x00,0x00,0xc9,0xc3};
    fncDinamic = (int(*)())OpCodes;
    printf("Valor retornado por f antes ... f() = %d\n", fncDinamic());
    OpCodes[5] = 0x10;
    printf("Valor retornado por f despues f() = %d\n", fncDinamic());
    return 0;
}



Dulces Lunas!¡.