|
| Mehrere .exe Dateien miteinander verbinden | |
kenux
|
Verfasst am: 15.01.2008, 00:24 |
|
|
|
Wie kann man mehrere .exe Dateinen (Programm1.exe und Programm2.exe) zur
einer Haupt.exe Datei verbinden. also auf der Haupt.exe befinden sich 2 Buttons und kann die jeweiligen Programme starten. Natürlich sollen Programm1 und Programm2 in das Hauptprogramm integriert sein und nur beim Ausführen sollen die Unterprogramme sichtbar werden
hier habe ich zwar was gefunden: http://www.murb.com/forum/viewtopic.php?t=117
aber das ist denk ich nur gut wenn man irgendwie vertuschen will, dass das eine Programm mehrere Progs beinhaltet.
Hat jemand ne bessere Lösung wie man es z.B. unter Borland c++Builder oder Visual Studio realisieren kann?
|
|
| | |
PainT Administrator
|
Verfasst am: 15.01.2008, 19:50 |
|
|
|
Eine Möglichkeit wäre z.B. die Programme als Resourcen mitzukompilieren, dann kannst du sie während er Laufzeit auf die Festplatte extrahieren und ausführen.
Hier ein Beispiel:
#include <windows.h>
#include <stdio.h>
#include <sys/stat.h>
#include "resource.h"
bool DirectoryExists(const char* Path)
{
struct stat my_stat;
return (stat(Path, &my_stat) == 0);
}
bool SaveResItemToDisk(int resourceid, LPCTSTR resourcetype, char* filename, char* directory)
{
if (directory != NULL)
{
HRESULT result;
if (!DirectoryExists(directory))
{
result = CreateDirectory(directory, NULL);
if (result == 0) return FALSE;
}
result = SetCurrentDirectory(directory);
if (result == 0) return FALSE;
}
HRSRC hRsrc;
hRsrc = FindResource(NULL, MAKEINTRESOURCE(resourceid), resourcetype);
if (hRsrc == NULL) return FALSE;
HGLOBAL filedata;
filedata = LoadResource(NULL, hRsrc);
if (filedata == NULL)return FALSE;
DWORD size;
size = SizeofResource(NULL, hRsrc);
if (size < 0) return FALSE;
FILE* file;
file = fopen(filename, "wb");
if (file == NULL) return FALSE;
fwrite(filedata, size, 1, file);
fclose(file);
return TRUE;
}
bool StartEXE(char* filename)
{
STARTUPINFO SInfo;
PROCESS_INFORMATION PInfo;
memset(&SInfo, 0, sizeof (STARTUPINFO));
SInfo.cb = sizeof (STARTUPINFO);
GetStartupInfo(&SInfo);
if (!CreateProcess(NULL, filename, NULL, NULL, FALSE, NULL, NULL, NULL, &SInfo, &PInfo))
{
return FALSE;
}
return TRUE;
}
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
SaveResItemToDisk(TEST, "BINARY", "Test.exe", "C:\\Test");
StartEXE("C:\\Test\\Test.exe");
}
|
Resourcen kannst du im Visual Studio z.B. über den Projektmappen-Explorer mit Rechtsklick auf das Projekt über Hinzufügen -> Ressource... hinzufügen. Dort kannst du dann auf Importieren... klicken und eine beliebige Datei wählen. Im Beispiel war der Ressourcentyp BINARY und die ID TEST.
Ein Tutorial für DLLs findest du hier.
|
|
| | |
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1
|
|
|
| |