Duda con FindWindow, FindWindowEx, SendMessage

Iniciado por .:UND3R:., 1 Junio 2012, 21:44 PM

0 Miembros y 1 Visitante están viendo este tema.

.:UND3R:.

Hola a todos, estoy un poco complicado en cuanto a lo que quiero hacer:
Me gustaría como ejemplo intentar enviar un clic a notepad, exactamente a:

Archivo -> Abrir

Pero tengo muchas duda con respecto a esto, por ejemplo se que en primera instancia tengo que llamar a la función FindWindow, especifico la clase de este ("Notepad"), y me devuelve un manejador, luego investigando en Internet, tengo que obtener el manejador de la ventana secundaria. y ahí ya me pierdo. Ya que al ver las clases Abrir. Nuevo, guardar, tienen la misma clase, por lo que no le encuentro la lógica de seguir ya que no se está especificando de alguna manera el botón a hacer clic con SendMessage, a ver si me pueden orientar con todo esto, soy nuevo por lo que les pido comprensión. Saludos

Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)

_Enko

#1
Es que no solo  tienes que buscar la ventana del Notepad, sino la ID del menu. Con reshack por ejemplo puedes saber la ID de cada item del menu del Notepad.
Entonces:
Consigues el HWND (FindWindows o lo que sea)
Consigues la ID del item del menu, depurando el notepad o reshack
Envias

SendMessage(hwndNotepad, WM_COMMAND, idMenuAbrir, NULL)

El ID del  menu de abrir es el 2.


Saludos.

.:UND3R:.

Gracias _Enko, ya entendí más menos la idea pero con el reshack, no logro obtener los menú. Podrías darme una mano?, saludos

Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)

_Enko

#3
Citar
1 MENU
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
{
POPUP "&File"
{
   MENUITEM "&New\tCtrl+N",  1
   MENUITEM "&Open...\tCtrl+O",  2
   MENUITEM "&Save\tCtrl+S",  3
   MENUITEM "Save &As...",  4
   MENUITEM SEPARATOR
   MENUITEM "Page Set&up...",  5
   MENUITEM "&Print...\tCtrl+P",  6
   MENUITEM SEPARATOR
   MENUITEM "E&xit",  7
}
POPUP "&Edit"
{
   MENUITEM "&Undo\tCtrl+Z",  16
   MENUITEM SEPARATOR
   MENUITEM "Cu&t\tCtrl+X",  768,  GRAYED
   MENUITEM "&Copy\tCtrl+C",  769,  GRAYED
   MENUITEM "&Paste\tCtrl+V",  770,  GRAYED
   MENUITEM "De&lete\tDel",  771,  GRAYED
   MENUITEM SEPARATOR
   MENUITEM "&Find...\tCtrl+F",  21
   MENUITEM "Find &Next\tF3",  22
   MENUITEM "&Replace...\tCtrl+H",  23
   MENUITEM "&Go To...\tCtrl+G",  24
   MENUITEM SEPARATOR
   MENUITEM "Select &All\tCtrl+A",  25
   MENUITEM "Time/&Date\tF5",  26
}
POPUP "F&ormat"
{
   MENUITEM "&Word Wrap",  32
   MENUITEM "&Font...",  33
}
POPUP "&View"
{
   MENUITEM "&Status Bar",  27
}
POPUP "&Help"
{
   MENUITEM "&Help Topics",  64
   MENUITEM SEPARATOR
   MENUITEM "&About Notepad",  65
}
}

el de Abrir, es el nro 2.
o sea

invoke   SendMessage, hwndNotepad, WM_COMMAND, 2, 0

No te  confundas con el handler del menu, lo que necesitas es el ID del item del menu. Simplemente un 0x02 para el caso.

.:UND3R:.

Perfecto, todo entendido, muchísimas gracias por la explicación _Enko, saludos

Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)

_Enko


.:UND3R:.

Vuelvo a molestar, el problema que tengo es que estoy trabajando con un programa que está empaquetado bajo la protección "Enigma" + Winlicence, el cual no logro vencer, pero ese es otro tema. Mi pregunta es: ¿Como puedo capturar el ID de Menu?, si este no puede ser abierto por Reshacker?.

Eso saludos

Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)

_Enko

Hay varias opciones.
Desempaquetando la ejecutable. Si no tiene el recurso del menu, entonces toca depurar. Cuando haces click en el menu, algo tiene que suceder... buscas eso algo y pones te fijas el codigo de la constante

switch (msg)                  /* manipulador del mensaje */
    {
        case WM_COMMAND:
           switch(LOWORD(wParam)) {
              case CM_MENU_BUSCADO:
                        ..... aqui el codigo que se ejecuta en el menu

tienes que obtener el valor de CM_MENU_BUSCADO.

Eso si usa la winapi para los menu. Si es una aplicacion de Delphi, utiliza la vcl, es distinto. Si es VisualBasic por ejemplo, ni idea como trata los menu.