Llamar un DialogBox a otro Dialog WINAPI32

Iniciado por [NelSito*], 4 Octubre 2013, 21:14 PM

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

[NelSito*]

No entiendo muy bien el llamado de un dialog a otro dialog, nose si alguno podria darme algun tutorial o una idea de como podria ser, ya que la verdad tengo nula la cabeza y soy aprendiz programando todavia..

////////////////////////////////////////////////////////////////////////////////////////
#include "windows.h"
#include "resource.h"
#include "winuser.h"
#define JMP(frm, to) (int)(((int)to - (int)frm) - 5);
///////////////////////////////////////Prototipos de funcion/////////////////////////////////////////////////
bool GodMode(bool);
////////////////////////////////////////////////////////////////////////////////////////
DWORD charstat;
HWND myWindow;
///////////////////////////////////////Booleamos/////////////////////////////////////////////////
UINT bGodMode;
////////////////////////////////////////////////////////////////////////////////////////
HMODULE GlobalhMod = NULL;
HWND hWnd;
// Hooked API
// Gracias ferris por el VirtualProtectEx
static const FARPROC Vprotect = (FARPROC)((DWORD)GetProcAddress(GetModuleHandleA("kernel32.dll"), "VirtualProtectEx")+5);
_declspec(naked) BOOL WINAPI FixMem(HANDLE hProcess, LPVOID lpAddress, SIZE_T dwSize, DWORD flNewProtect, PDWORD lpflOldProtect)
{
   _asm
   {
      mov edi,edi
      push ebp
      mov ebp,esp
      jmp Vprotect
   }
}
////////////////////////////////////////////ADDRESS///////////////////////////////////////
DWORD GMADDY = 0x00899260; //GodMode
///////////////////////////////////////////////////////////////////////////////////////
HINSTANCE hMod;
DWORD oldp = 0;
PDWORD oldprot = &oldp;

HINSTANCE g_hInstance = NULL;

HWND MSWIN;
HWND gameWindow;

BOOL static CALLBACK DialogProc2 (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);

/////////////////////////////////////////////////////////////////////////////////////////
BOOL static CALLBACK DialogProc(

                         HWND hwndDlg,     // manejador de caja de dialogo
                         UINT uMsg,        // mensaje
                         WPARAM wParam,    // primer parametro mensajes
                         LPARAM lParam     // segundo parametro mensajes
                         )
{
    DWORD OldSpeed = NULL;
    BYTE  szInfo[255];

    char xx[4];


int iPos;
TCHAR tempStr1[0x10];
    switch( uMsg )
    {
case WM_DESTROY:
PostQuitMessage(0);
break;       

case WM_INITDIALOG:
myWindow = hwndDlg;
return false;
            break;

        case WM_CLOSE:
            //UnloadMe();
            return false;
            break;

        case WM_HSCROLL:
            /*
iPos = (int) SendMessage(GetDlgItem(hwndDlg,IDC_SLIDER1), TBM_GETPOS, 0, 0);
            iPos = 100 + iPos*9;
            iSpeed = iPos;
            wsprintf(tempStr1, "%d", iPos);
            if (bGuild) {SetDlgItemText(hwndDlg,IDC_EDIT1, tempStr1 );}
*/
            break;

        case WM_COMMAND:
            if(wParam == IDCLOSE){
//                UnloadMe();
                return false;
            }
            if(wParam == IDC_GODMODE){

                bGodMode       = IsDlgButtonChecked( hwndDlg, IDC_GODMODE );
if (bGodMode == BST_CHECKED)
{
GodMode(true);
}
else if (bGodMode == BST_UNCHECKED) {
GodMode(false);
}
                return false;

            }
if(wParam == IDC_BUTTON1){
CreateDialog(GlobalhMod, MAKEINTRESOURCE(IDD_DIALOG2), hwndDlg, (DLGPROC)DialogProc2);
}


}
    return FALSE;
}

BOOL static CALLBACK DialogProc2 (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
char
texto[25];
switch
(uMsg) /* manipulador del mensaje */{

case WM_INITDIALOG:
break;

case WM_COMMAND:
EndDialog(hwndDlg,FALSE);
return TRUE;
}
return FALSE;
}

DWORD static WINAPI ThreadFunc( LPVOID )
{
    gameWindow = FindWindow(NULL,"MapleStory");
    HRSRC hrsrc = FindResource(GetModuleHandle("GamerzHacking.dll"), MAKEINTRESOURCE(IDD_DIALOG1), RT_DIALOG);
    if( !hrsrc )
    {
        MessageBoxA( NULL, "Error", "Cargando Recurso", NULL );
        ExitThread(0);
    }
//Aqui cargamos el dialogo que se encuentra dentro de este mismo dll
//Como GamerzHacking.dll se ha injectado al proceso maplestory
//Ahora lo busco y lo cargo como si fuera parte de maple
    HGLOBAL hglobal = LoadResource(GetModuleHandle("GamerzHacking.dll"), hrsrc);
    if( !hglobal )
    {
        MessageBoxA( NULL, "Error", "Cargando Recurso", NULL );
        ExitThread(0);
    }
    LPVOID hlock = LockResource( hglobal );
    if( !hlock )
    {
        MessageBoxA( NULL, "Error", "Cargando Recurso", NULL );
        ExitThread(0);
    }

    if( DialogBoxIndirectParam( GetModuleHandle("GamerzHacking.dll"), (LPCDLGTEMPLATE) hglobal, NULL, DialogProc, 0 ) == -1 )
    {
        MessageBoxA( NULL, "NO PUEDO CREAR DIALOGO VENTANA", "NO PUEDO CREAR DIALOGO VENTANA", NULL );
    }
    FreeLibraryAndExitThread( GetModuleHandle( "GamerzHacking.dll" ), 0 );
}

bool GodMode(bool status)
{
if (status == true) {
*(BYTE*)GMADDY = 0xEB;
*(BYTE*)(GMADDY+1) = 0x0B;
}
else if (status == false) {//0F8E
*(BYTE*)GMADDY = 0x85;
*(BYTE*)(GMADDY+1) = 0xC0;
}
return true;
}

BOOL APIENTRY DllMain(HMODULE hModule,DWORD ul_reason_for_call,LPVOID lpReserved)
{
if (ul_reason_for_call == DLL_PROCESS_ATTACH)
{
CreateThread(0, 0, (LPTHREAD_START_ROUTINE)&ThreadFunc, 0, 0, 0); // Main thread
}
return true;
}


Me podrian decir en que parte estoy equivocado o que es lo que me falta o brindarme algun tutorial

PD: Gracias por leer mi tema de ayuda

Enjoy