2017-08-28 2 views
-2

Ich möchte wissen, wie können wir eine Funktion, die in externen statischen Klasse (DLL-Datei) ohne einen Aufruf an es in main definiert ist.Aufruf einer DLL-Funktion ohne einen Anruf in der Haupt

Um die Dinge klarer zu machen, betrachten Sie eine EXE-Datei, deren Code nicht offengelegt wird und wir können keine Änderungen daran vornehmen, jetzt möchte ich eine EXE-Datei mit bestimmten Testfällen testen, die in meiner DLL-Datei definiert sind was ein Aufruf der Funktion muss ich innerhalb der main() -Funktion der EXE-Datei gemacht. Aber wie gesagt, ich habe keine Berechtigung, den Code der exe-Datei zu ändern. Nun, wie diese DLL-Funktion aufgerufen wird am erforderlichen Punkt der Ausführung ohne einen Aufruf mit Visual Studio.

Ich möchte eine Funktion aufrufen, ohne eine Zeile zur Hauptfunktion hinzuzufügen.

Um die Dinge klarer zu machen, ich möchte nur einige Beispiel

static class DllClass 
{ 
    static void dllFunction() 
    { 
     //some implementation. 
    } 
} 
class ThirdParty 
{ 
    public static void Main() 
    { 
    //Default implementation that i cannot modify. 
    //Invoking my static function at this point without calling.(i.e i cannot call DllClass.dllFunction()) 
    //continuing with default implementation. 
    } 
}  
+0

Es ist wirklich unklar, was Sie fragen. Können Sie einige Codebeispiele oder ein Diagramm anzeigen? –

+0

Also möchten Sie eine DLL von einer Exe aufrufen, ohne den Zugriff auf die exe zu haben? –

+0

@ rory.ap Ich habe ein Beispiel hinzugefügt bitte überprüfen Sie mit –

Antwort

0

Eine Idee hinzuzufügen ist, dass mit der Powershell die DLL-Datei aufrufen, wenn Sie nicht den Code in der Exe ändern könnte.

Zum Beispiel eine einfache Bibliothek mit Methoden.

Namespace Math
{
public class Methoden
{
öffentliche Methoden()
{
}
public static int Compare1 (int a, int b)
{
wenn (a return a;
sonst
zurück b;
}

public int Compare2 (int a, int b)
{
wenn (a return a;
sonst
return b;
}
}
}

Und dann rufen Sie es in der Powershell-Umgebung:

[Lücke] [reflection.assembly] :: Loadfile ("C: /xxx.dll")
02. [Math.methods] :: Compare1 (10,8)
03. $ a = Neu- Objekt Math.Methods
04. $ a.Compare2 (2,6)

Verwandte Themen