Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » seltsame Dll "direkt" starten

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
17.02.2004, 15:01 Uhr
~Luke1410_
Gast


Ich habe hier eine Datei: game.dll.
Diese lässt sich bei Win2k/XP über "game.dll Param1 Param2 Param3" direkt starten. Unter Win9x/ME geht das leider nicht (keine Exe-Datei).

Normalerweise wird diese über einen Loader gestartet, der aber auf einigen Systemen Probleme macht, weshalb ich den auch bei Win9x/ME übergehen will.

Benenne ich die Datei in .exe um, startet sie zwar, aber die Anwendung wird sofort wieder geschlossen (als würde sie überprüfen, ob der Dateiname noch stimmt und da er geändert wurde, die Anweundung beendet).

Auch Versuche mit ShellExecute wollten nicht wirklich funktionieren (Fehlermeldung: "no associated application", wenn ich es mit dem Verb "open" versuche). Jemand eine Idee, wie ich diese Datei auch unter Win9x/ME starten kann?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
19.02.2004, 10:48 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Hi
probier mal


C++:
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
    hInstance = LoadLibrary(lpCmdLine);
    FreeLibrary(hInstance);
    return 0;
}


Als Parameter der Anwendung übergibst du die DLL (z.b die DLL auf die Anwendung ziehen)

Etwaige Header usw musste selbst inkludieren, hab jetzt grad keine Zeit das zu kompilieren.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
19.02.2004, 13:06 Uhr
~Luke1410_
Gast


K, soweit klar... Aber wie schaffe ich es dann die 3 Parameter, die ich bei XP einfach über "game.dll Para1 Para2 Para3" anhänge, über einen DLL-Aufruf zu übergeben.

Einen Entry-Point um dann mit GetProcAddress weiterzuarbeiten, kann ich auch nicht finden...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
19.02.2004, 15:50 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


hi, wenn du die dll "woanders" einfach mit "doppelklick" starten kannst, dann kommt mind eine DllMain vor, welche beim LoadLibrary-Aufruf ausgeführt wird.
Du musst dem Programm einfach deine Parameter mit übergeben. (Am besten kompiliert man dann die DLL fest, dann gibt es nicht ausversehen den Parameter "Dll-Pfad" in der game.dll
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
20.02.2004, 15:50 Uhr
~Luke1410_
Gast


"dann gibt es nicht ausversehen den Parameter "Dll-Pfad" in der game.dll"

Versteh ich nicht ganz.


Code:
#include <windows.h>
#include "log.h"

int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ){
    if(!LogInit())
        return 1;
    hInstance = LoadLibrary(lpCmdLine);
    if(!hInstance){
        Log("Fehler beim Laden der Library");
        return 2;
    }
    if(!FreeLibrary(hInstance)){
        Log("Fehler beim Schließen der Library");
        return 3;
    }
    Log("Erfolgreich abgeschlossen");
    return 0;
}


So sieht der Code derzeit aus.
Wenn ich das Programm jetzt mit "game-loader game.dll" starte, läuft es problemlos durch (Logdatei: Erfolgreich abgeschlossen). Zeigt jedoch wegen der fehlenden Parameter nichts an.
Starte ich es aber mit "game-loader game.dll Para1 Para2 Para3" bricht er bei hInstance ab (Fehler beim Laden der Library).

Versuche ich es mit "GetProcAddress(hInstance, "DLLMain")" gibt diese Funktion einen NULL-Zeiger zurück (Fehler).

Sorry, aber habe mit DLLMain noch absolut nix gemacht und alleine mit der MSDN komme ich nicht weiter (versuche schon seit gestern meinen Fehler zu finden).
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: