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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Problemas con WinApi
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problemas con WinApi  (Leído 2,266 veces)
Nobody12

Desconectado Desconectado

Mensajes: 179



Ver Perfil WWW
Problemas con WinApi
« en: 10 Enero 2011, 21:47 pm »

Hola.

Primero de todo aclarar que acabo de empezar con WINAPI y por eso puede ser que mis dos errores sean realmente una tontería.
Hasta ahora sólo me he leído algunas páginas del curso de WinApi de conclase.net.
De C++ sé bastante más, me he leído libros, tutoriales, he creado muchos programas de consola, aunque realmente sé poco y cometo siempre errores parecidos.

Volviendo al tema.
Estoy haciendo un programa que a la vez es un Crackme, ya que has de registrarte para poder desinhibir un POPUP que incialmente está en MF_GRAYED.
Como he dicho antes tengo dos problemas:

1. Cuando se pulsa la función Registrar, se crea un diálogo en el que aparecen 3 Controles Edit (ID, Nombre, Serial).
El ID es un número y para obtener el valor uso la función GetDlgItemInt, y me funciona correctamente.
El problema viene con el nombre y el serial que son caracteres (tanto letras como números), y para ellos utilizo GetDlgItemText.
No sé qué estoy haciendo mal, pero la función no me devuelve ninguna cadena.
Lo que hago es ésto:


Código
  1. LRESULT CALLBACK WindowProcedure(HWND hwnd, UINT msg, WPARAM wParam,
  2. LPARAM lParam)
  3. ...
  4. case WM_COMMAND:
  5. if(LOWORD(wParam) == CM_REGISTRO)
  6. {
  7. DialogBoxParam(hInstance, "Registro", hwnd, DlgProc, (LPARAM)&Datos);
  8. }
  9. ...
  10.  
  11. BOOL CALLBACK DlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
  12. ...
  13. int numero1;
  14. char nombre[26];
  15. ...
  16. case WM_COMMAND:
  17. if(LOWORD(wParam) == IDOK)
  18. {
  19. numero1 = GetDlgItemInt(hDlg, ID_IDENT, &NumeroOk3, FALSE);
  20. GetDlgItemText(hDlg, ID_NOMBRE, nombre, 26);
  21. ...
  22. }
  23. ...
  24.  
  25.  

Simplemente es como si no estuviera la api.
Para comprobar si me retorna valor he probado ésto:

Código
  1. if(nombre=="HOLA")
  2. {
  3.    MessageBox(hDlg, "Hola", "", MB_ICONEXCLAMATION | MB_OK);
  4.           EndDialog(hDlg, FALSE);
  5. }
  6.  
Y cuando escribo HOLA en el Edit Nombre no me sale el cartel.
He pensado que puede ser que no he declarado correctamente la cadena nombre o la comparación se está haciendo mal, pero lo he intentado de otras formas y me salen otros errores.

2. Para volver a habilitar el POPUP Nuevo utilizo EnableMenuItem, pero Nuevo es un POPUP y no un MENUITEM, y no tiene el parámetro uEnable (o al menos eso creo xD).
Estoy pensando en deshabilitar directamente todos los Ítems que resultan de pulsar Nuevo.
Sin embargo sigo teniendo otro problema de una forma u otra, y es que utilizando el EnableMenuItem se necesita el handle del menú, y cuando llamo a la api estoy en el DlgProc y no en la función en la que se crean los menús que es donde se encuentra el handle:

Código
  1. void InsertarMenu(HWND hwnd)
  2. {
  3. HMENU hMenu1, hMenu2, hMenu3, hMenu4;
  4.     hMenu1 = CreateMenu(); /* Manipulador de la barra de menú */
  5.     hMenu2 = CreateMenu();
  6.     hMenu3 = CreateMenu();
  7.     hMenu4 = CreateMenu();
  8.     /* Primer POP-UP */
  9.     AppendMenu(hMenu2, MF_STRING | MF_POPUP | MF_GRAYED, (UINT)hMenu4, "&Nuevo");
  10. ...
  11. AppendMenu(hMenu1, MF_STRING | MF_POPUP, (UINT)hMenu2, "&Archivo");
  12. SetMenu (hwnd, hMenu1);
  13. }
  14.  

Gracias y espero que si leéis el mensaje y podéis aportar algo lo hagáis y no se quede el tema sin respuestas como ya me ha pasado varias veces...   :-(

PD: He subido lo que llevo de programa a 4shared.com.

http://www.4shared.com/file/fRXIfbsk/Programa.html


« Última modificación: 10 Enero 2011, 21:58 pm por valenciano013 » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Pregunta sobre ASM y WinAPI « 1 2 »
ASM
Shrick 15 7,559 Último mensaje 27 Noviembre 2009, 14:16 pm
por dark_hat
Equivalencia de función WINAPI unsigned int WINAPI myRun en Windows con Ubuntu
Programación C/C++
bertamax 2 2,112 Último mensaje 7 Agosto 2010, 16:27 pm
por bertamax
Problema con WINAPI
Programación C/C++
..:ALT3RD:.. 7 2,452 Último mensaje 26 Agosto 2011, 21:35 pm
por Queta
Estilo visual thickframe no redimencionable en C++ 6.0 WinApi
Programación C/C++
xkiz ™ 7 3,048 Último mensaje 3 Octubre 2011, 01:23 am
por xkiz ™
Añadir sockets en winapi
Programación C/C++
d00ze13 2 1,914 Último mensaje 30 Noviembre 2011, 20:00 pm
por d00ze13
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines