sebastiank Geschrieben 4. März 2005 Geschrieben 4. März 2005 Guten Tag, i ch habe mal eine ganz dumme Frage ist es möglich eine .exe Datei einfach in eine .dll um-zuwandeln? Und wie funktioniert das? Benutze den Visual C++. Hintergrund des Problems. Ich habe zwei Programme die jetzt einzeln hintereinander aufge-rufen werden müssen. Wenn das erste beendet ist muß das zweite von Hand aufgerufen werden. Beides .exe Dateien. Ich habe jetzt vor das zweite Programm in eine .dll zu packen die aufgerufen wird wenn das erste Programm (am Ende ist). Ist das Prinzipiell möglich? Und hat jemand sowas schon mal gemacht? gruß sebastian Zitieren
sebastiank Geschrieben 4. März 2005 Autor Geschrieben 4. März 2005 den quellcode habe ich natürlich vorliegen Zitieren
perdian Geschrieben 4. März 2005 Geschrieben 4. März 2005 Ich verstehe nicht, wo der Vorteil sein sollte. Anders gefragt: Warum willst du gerade eine DLL verwenden und keine normales Programm? Zitieren
sebastiank Geschrieben 4. März 2005 Autor Geschrieben 4. März 2005 Das weiß ich leider auch nicht, ich habe es jetzt so gemacht das die Datei einfach über system(./stplus) aufgerufen wird. stplus ist das zweite Programm! Ich kenne mich leider noch nicht wirklich so gut aus dass ich meinem chef jetzt von einer dll abraten kann aber er will unbedingt "einen internen und keine externen zugriff" wie er es so schön genannt hat. Zitieren
Bubble Geschrieben 4. März 2005 Geschrieben 4. März 2005 Eine DLL verwendet man immer dann, wenn es sich um eine Funktionssammlung handelt, die von mehreren Programmen aus verwendet wird oder sonstwie in bestehende Anwendungen oder in das System eingebunden werden soll. Wenn Du ein Programm shcreibst, das direkt vom Benutzer verwenet werden soll, dann nimm immer eine EXE. DLLs und EXE Dateien unterscheiden sich auch in der Implementierung in einigen Details. Zitieren
sebastiank Geschrieben 4. März 2005 Autor Geschrieben 4. März 2005 Ich würde ja auch lieber die .exe Datei verwenden um so weniger arbeit für mich. ist es denn möglich den quelltext einfach in eine dll zu bringen oder muß dabei viel geändert werden? bzw was muß geändert werden? Zitieren
perdian Geschrieben 4. März 2005 Geschrieben 4. März 2005 Ich würde ja auch lieber die .exe Datei verwenden um so weniger arbeit für mich. ist es denn möglich den quelltext einfach in eine dll zu bringen oder muß dabei viel geändert werden? bzw was muß geändert werden? Ein gut gemeinter Tip: Lass es! Informiere dich erst darüber, was eine EXE ist und was eine DLL ist. Wenn du verstanden hast, wann man die eine und wann die andere Form als Ziel beim Compilen angibt wird sich dein Problem (das ich noch immer nicht verstanden habe) wahrscheinlich von alleine erledigen. Zitieren
Manfred.Becker Geschrieben 4. März 2005 Geschrieben 4. März 2005 Hi SebastianK, lass alles beim Alten (keine DLLs). Um deinen Chef zu beruhigen kannst du ja ganz einfach am Ende des ersten Programms ShellExecuteEx() verwenden, um das Zweite automatisch aufzurufen. Zitieren
sebastiank Geschrieben 9. März 2005 Autor Geschrieben 9. März 2005 Danke nochmal für eure Antworten. Also die dll soll erstellt werden weil es hier bisher bei den Systemumstellungen Probleme gab und das Programm nicht lief und dagegen will Chefe vorbeugen. Hab Ihm zwar gesagt dass das "schwachsinn" ist aber er will es nunmal so. Ich hab jetzt noch eine alte CD bekommen auf der das Programm drauf das ich umschreiben sollte und sogar als dll Format. Jetzt muß ich doch eigentlich nur noch die Header Dateinen kennen mir der die dll geschrieben wurde und die in mein Programm einbinden oder? Zitieren
Manfred.Becker Geschrieben 9. März 2005 Geschrieben 9. März 2005 Hi, 'ne dll kannst du entweder im Header (*.h) #import "my.dll" no_namespace oder im Modul (*.cpp) m_hMyLib = LoadLibrary("my.dll"); einbinden. Dann benötigst du die Header-Datei der DLL, in der die ganzen Typ-Definitionen stehen. Weitere Infos findest du über die F1-Hilfe. Zitieren
Bubble Geschrieben 9. März 2005 Geschrieben 9. März 2005 Eine DLL ist kein Programm, Du kannst eine EXE nicht einfach in eine DLL umwandeln. Auch wenn es Dein Chef will, es geht nicht. Wenn er es nicht glaubt, soll er es selbst versuchen. Eine DLL exportiert lediglich Funktionen, die von anderen DLLs, dem System oder EXE-Programmen aufgerufen werden können. Du brauchst also zwingend eine EXE. Diese kann minimalistisch sein und nur eine festgelegte DLL Funktion aufrufen. Du kannst auch rundll32.exe verwenden (gehört zu Windows), um Funktionen in DLLs aufzurufen, aber Du benötigst immer einen Eintrittspunkt für Dein Programm, den Dir eine DLL nicht liefert. Am Anfang der Verarbeitungskette steht immer eine EXE. Falls es Dir gelingt Dein zweites Programm zu umzugestalten, dass es seine gesamte Funktionalität in eine Funktion Packt, dann kannst Du diese Funktion in eine DLLs einfügen und exportieren. Diesen Weg kannst Du beschreiten, aber ob es sinnvoll ist, musst Du entscheiden. Es ist zwar nicht sonderlich schwer, aber mit Header-Dateien einbinden ist es nicht getan. Wenn die Funktionalität Deines zweiten Programms nur von Deinem Ersten genutzt wird, dann wäre es für Dich sicherlich einfacher, beide Programme zu einem zusammenzufassen. Falls doch jemand einen Hack kennt, eine DLL (oder zumindest eine Datei mit dieser Endung) wie eine EXE zu starten, dann mag das zwar gehen, aber es entspricht nicht der Intention und es wird sicher niemand garantieren, dass es auch auf ewig funktionieren wird. Zitieren
sebastiank Geschrieben 22. März 2005 Autor Geschrieben 22. März 2005 Hallo, ich habe mich jetzt in dll´s eingearbeitet. ich möchte jetzt einfach eine alias dll erstellen. Kann ich in dieser dll funktionen wie ShellExecute oder CreateProcess benutzen von denen dann mein zweites Programm gestartet wird? Zitieren
perdian Geschrieben 22. März 2005 Geschrieben 22. März 2005 Kann ich in dieser dll funktionen wie ShellExecute oder CreateProcess benutzen von denen dann mein zweites Programm gestartet wird?Natürlich. Zitieren
sebastiank Geschrieben 24. März 2005 Autor Geschrieben 24. März 2005 Guten morgen, ich habe jetzt meine ausführbare datei in eine dll eingebunden und das läuft auch alles hervorragend. die pfad angaben die ich unter CreateProcess gemacht habe beziehen sich aber nur auf meinen rechner, das heißt wenn ich unter CreateProcess(Null,test.exe,.............) angebe muß test.exe sich im gleichen verzeichnis befinden oder ich gebe den gesamten pfad an. CreateProcess(Null,c:/prog files/test.exe,...........) aber wie bekomme ich es hin das in meinem verzeichnis noch ein weiterer ordner geöffnet wird, der bereits besteht und dann erst test.exe ausgeführt wird? hab mir das so gedacht...klappt leider aber nicht CreateProcess(NULL,versteckter ordner/test.exe..............) Zitieren
Manfred.Becker Geschrieben 24. März 2005 Geschrieben 24. März 2005 Hi, das sagt die F1-Hilfe: CreateProcess The CreateProcess function creates a new process and its primary thread. The new process executes the specified executable file. BOOL CreateProcess( LPCTSTR lpApplicationName, // pointer to name of executable module LPTSTR lpCommandLine, // pointer to command line string LPSECURITY_ATTRIBUTES lpProcessAttributes, // process security attributes LPSECURITY_ATTRIBUTES lpThreadAttributes, // thread security attributes BOOL bInheritHandles, // handle inheritance flag DWORD dwCreationFlags, // creation flags LPVOID lpEnvironment, // pointer to new environment block LPCTSTR lpCurrentDirectory, // pointer to current directory name LPSTARTUPINFO lpStartupInfo, // pointer to STARTUPINFO LPPROCESS_INFORMATION lpProcessInformation // pointer to PROCESS_INFORMATION ); [/PHP] Der Inhalt von lpCommandLine ist typischerweise: "test.exe" "c:\\program files\\test.exe" ".\\weiterer ordner\\test.exe" Zitieren
sebastiank Geschrieben 24. März 2005 Autor Geschrieben 24. März 2005 danke, hab ein / zuwenig gehabt! Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.