EXE in EXE einbinden?



  • Ist es möglich eine andere EXE in eine eigene einzubetten, sodass man nurnoch eine hat?

    Ich möchte nämlich ein Programm ca 20mal starten. Dafür wollte ich ein neues schreiben. bis dahin klappt ja alles, allerdings habe ich nun 2 Dateien. Von dahher wollte ich gerne das erste Programm in mein Programm einbinden und dass es sich dann dort selbst 20 mal starten...
    Kann ich das eine Programm in meins einbinden?



  • du kannst die exe als ressource vom typ RT_RCDATA in deine Application einbinden, zur Laufzeit in eine temporäre Datei schreiben und dann ausführen.

    So oder so ähnlich sieht dann das speichern der ressource in eine datei aus:

    const char* filename="irgendEinDatainame.exe";
      HRSRC hResource;
      HGLOBAL hResourceLoaded;
      LPBYTE lpBuffer;
    
      hResource = FindResource(NULL, MAKEINTRESOURCE(IDR_ID_DEINER_RESSOURCE), RT_RCDATA);
      if (NULL != hResource)
      {
          hResourceLoaded = LoadResource(NULL, hResource);
          if (NULL != hResourceLoaded)        
          {
              lpBuffer = (LPBYTE) LockResource(hResourceLoaded);            
              if (NULL != lpBuffer)            
              {                
                  DWORD dwFileSize,
                        dwBytesWritten;
                  HANDLE hFile;
    
                  dwFileSize = SizeofResource(NULL, hResource);
    
                  hFile = CreateFile(filename,
                                     GENERIC_WRITE,
                                     0,
                                     NULL,
                                     CREATE_ALWAYS,
                                     FILE_ATTRIBUTE_NORMAL,
                                     NULL);
    
                  if (INVALID_HANDLE_VALUE != hFile)
                  {
                      WriteFile(hFile, lpBuffer, dwFileSize, &dwBytesWritten, NULL);
                      CloseHandle(hFile);
                  }
               }
           }
      }
    

    einen Dateinamen kannst du mit GetTempFileName erzeugen.

    Ob man die auch direkt vom Speicher ausführen kann weiß ich nicht, ich denke dass geht nicht so einfach.



  • Danke schonmal, allerdings kenne ich mich nich so gut aus, der Code funktioniert nicht...



  • der Code funktioniert nicht...

    Huch... überschwemm uns nicht mit allzuviel nützlicher information...
    Simon



  • Wenn ich auf meine EXE klicke, dann wird nichts ausgeführt. Ressource etc sind eingebunden.



  • Mit welcher IDE arbeitest du? Microsoft Visual Studio C++? Falls ja, probier doch mal ob du die exe als Resource einbinden kannst. Dann kannst du sie ganz easy aufrufen.



  • Ja, mit MC VC++ EE.
    Kannst Du mir das genauer Erklären? Ich hab die Exe als Ressource vom typ RT_RCDATA. Wie führ ich die dann aus?



  • 1. Falsches Forum. Gehört nach WinAPI
    2. Hat Dir vlad_tepesch bereits Code gegeben um die Resource zu extrahieren.
    3. Ausführen dann einfach mit ShellExcute(Ex) oder CreateProcess



  • Ja, aber es passiert einfach nichts, wenn ich es ausführe.



  • GetLastError sagt Dir was?


Anmelden zum Antworten