Fehler beim kompilieren!



  • Hallo,
    ich versuche schon seid ein paar stunden den Code hier zum laufen
    zu bringen, aber komischerweise bekomm ich immer einen Error!

    Hier mal der Code:

    #include <stdio.h>
    #include <windows.h>
    #include <iostream> 
    
    using namespace std;
    
    int crypt(char *str)
    {
    int length;
    char chr;
    int ord;
    
        for(length=0; length<strlen(str); length++)
        {
                      ord = (int)str[length];
                      ord = ord + 1;
                      chr = (char)ord;
                      str[length] = chr;                   
        }     
    return 0;
    }
    
    int decrypt(char *str)
    {
      int length;
    char chr;
    int ord;
    
        for(length=0; length<strlen(str); length++)
        {
                      ord = (int)str[length];
                      ord = ord - 1;
                      chr = (char)ord;
                      str[length] = chr;                   
        }     
    return 0;  
    }
    
    int main(int argc, char *argv[])
    {
      char func_crypted[] = "NfttbhfCpyB";
      HMODULE dll;
      FARPROC MyMessageBox;
    
      decrypt(func_crypted);
    
      dll = LoadLibrary("user32.dll");
    
      MyMessageBox = GetProcAddress(dll, func_crypted);
      MyMessageBox(0, "Im working", "YEAAAH", MB_OK);
    
      system("PAUSE");	
      return 0;
    }
    

    Ich bekomme den Error:
    error C2197: 'int (__stdcall *)(void)' : too many actual parameters

    Der fehler soll hier liegen:
    MyMessageBox(0, "Im working", "YEAAAH", MB_OK);

    Hat evtl. jemand eine Idee was das sein könnte ?
    Habe schon Gegooglet aber nix brauchbares gefunden 😞

    Gruß,
    i-Rock

    // Denglish topic "gefixt" :p



  • Woher soll er jetzt wissen, wieviel Parameter MyMessageBox hat?



  • Wie CoderOutOfHell schon angedeutet hat fehlt dir die Konvertierung in einen Funktionszeiger welcher die gleiche Signatur hat wie MessageBoxA oder W je nach dem welche version du laden möchtest.

    // MessageBox Funktionszeigertyp
    typedef int WINAPI (*MyMessageBox_t)(HWND,LPCSTR,LPCSTR,UINT); 
    
    int main(int argc, char *argv[])
    {
      char func_crypted[] = "NfttbhfCpyB";
      HMODULE dll;
      MyMessageBox_t MyMessageBox = 0;
    
      decrypt(func_crypted);
    
      dll = LoadLibrary("user32.dll");
    
      MyMessageBox = reinterpret_cast<MyMessageBox_t>(GetProcAddress(dll, func_crypted));
      if(MyMessageBox)
          MyMessageBox(0, "Im working", "YEAAAH", MB_OK);
    
      system("PAUSE");   
      return 0;
    }
    

Anmelden zum Antworten