Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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

Geschrieben

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.

Geschrieben

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.

Geschrieben

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?

Geschrieben
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.

Geschrieben

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?

Geschrieben

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.

Geschrieben

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.

  • 2 Wochen später...
Geschrieben

Hallo,

ich habe mich jetzt in dll´s eingearbeitet.

ich möchte jetzt einfach eine alias dll erstellen. :D

Kann ich in dieser dll funktionen wie ShellExecute oder CreateProcess benutzen von denen dann mein zweites Programm gestartet wird?

Geschrieben

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..............)

Geschrieben

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"

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...