Hallo an alle,
ich sitze nun schon seit geraumer Zeit an einem Problem. Ich probiere vergebens die Funktion Start_server aus eine PcHelpWare Dll names 1SCDLL.dll aufzurufen.
Bisher habi ich es so probiert:
[DllImport("1SCDLL.dll",EntryPoint="Start_server", CharSet = CharSet.Auto, SetLastError = true)]
public static extern void Start_server(StringBuilder strID, StringBuilder strRepeaterAddr, StringBuilder intListenPort, int intRepeaterPort, StringBuilder strPasswd, bool blDebug, StringBuilder blProxy);
....
In einem c++ Projekt hab ich gesehen dass die Funktion mit den Parametern
char *ID, char *repeater,char *direct,int port,char *passwd,bool proxy,char *classname
aufgerufen wird.
Wenn die Funktion nun aufgerufen wird, bekomme ich eine Exception mit der Meldung: > Fehlermeldung:
Unzulässiger Zugriff auf einen Speicherbereich. (Ausnahme von HRESULT: 0x800703E6) kann nicht geladen werden.
Alle Dll´s liegen im Anwendungsverzeichnis.
Kann mir bitte jemand weiterhelfen was ich falsch mache?
mfG Ali
Importiere dir GetLastError und schau mal was du für ein Fehler zurückbekommst.
Hi,
[DllImport("coredll.dll", SetLastError = true)]
static extern Int32 GetLastError();
......
.....
try
{
Start_server(new StringBuilder(""), new StringBuilder(""), new StringBuilder(""), 56, new StringBuilder(""), false);
int lastError = Marshal.GetLastWin32Error();
}
catch (Exception ex)
{
int lastError = Marshal.GetLastWin32Error();
}
hab das ganze jetzt so implementiert. Im catch-Block bekomme ich eine 0 zurück.
mfG
Hallo Ali_Spindler,
für Eingabeparameter solltest du String und nicht StringBuilder übergeben.
herbivore
Hallo herbivore,
hab auch schon string probiert, jedoch mit dem gleichen ergebnis. Gibt´s eine andere Möglichkeit um zu schauen ob er eventuell irgendwelche anderen dll´s nicht findet?
Ich bin am verzweifeln, egal was ich probiere, ich erhalte immer oben genannte Exception.
mfG Ali
Zum Nachsehen, ob irgendwelche DLL's nicht gefunden werden, benutze ich ganz gerne den Dependency Walker
Hallo,
das tool sagt dass alle dll´s gefunden wurden.
Kann es daran liegen, dass wenn meine Application als normaler user gestartet wurde, starte ich eine neu Instanz mit Administratorrechten und beende die laufende.
Kann es hier unter Win7 zu Problemen kommen?
mfG
Hallo nochmal,
mein Ziel war es eigentlich mit dieser dll einen VNC Server zu starten um mit einem Client verbinden zu können.
Als Highlight eventuell aus einem Windows Service heraus um vielleicht den UAC-Bildschirm von Win7 übertragen zu können.
Hat von euch schonmal jemand soetwas gemacht, oder irgendwelche erfahrungen dazu?
Ich bin für jeglichr Tipps dankbar.
mfG Ali
H Ali_Spindler,
versuch mal den StringBuilder mit einer festen Größe zu initialisieren.
new StringBuilder("",255)
Wenn das ein C++ dll ist dann erwartet m.W.n einen Puffer mit fester Größe.
Again what learned...
Wenn das eine C++-DLL ist kann man die meines Erachtens gar nicht aufrufen (da braucht man einen Wrapper in C)
Versuch mal ausserdem die genaue Signatur der Methode rauszufinden, sonst kann man nur raten.