Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Teamspeak 3 SDK verwenden
TBR
myCSharp.de - Member



Dabei seit:
Beiträge: 159

Themenstarter:

Teamspeak 3 SDK verwenden

beantworten | zitieren | melden

Hallo,
ich hab mal eine kurze Frage:

Kann ich in eine C# App irgendwie das Teamspeak 3 SDK einbauen?
Das SDK ist ja nativ kompiliert. Ich vermute das "DllImport"-Verfahren kann man hier nicht anwenden, einen Wrapper gibts leider noch nicht und sonst?

Irgendwie muss man doch auf die Funktionen zugreifen können, oder nicht? Ich hab vor kurzem mal was gelesen, dass es dafür eine Loader-API von Windows gibt oder so, die man verwenden kann um die Funktionen zu suchen und zu Invoken ...


Aber gibts keine einfache Lösung?

Danke
TBR
private Nachricht | Beiträge des Benutzers
Ahrimaan
myCSharp.de - Member



Dabei seit:
Beiträge: 363
Herkunft: Thorn

beantworten | zitieren | melden

Hi,

in der SDK gibt es sogar Beispiele für die Nutzung in C#
Schau doch einfach mal da rein ;-)

Grüße
private Nachricht | Beiträge des Benutzers
TBR
myCSharp.de - Member



Dabei seit:
Beiträge: 159

Themenstarter:

beantworten | zitieren | melden

Ich hab zweimal geschaut, das waren irgendwie nur 4 Enums und ein Haufen vordefinierterer Dinge ... Aber kein Sample wie mans nutzt :O

Ich hab noch nie mit nativen Libs gearbeitet - wie man sie verwendet usw. drum bin ich da jetz auch nich so helle wie das Sample funktioniert ...

Ich schaus mir nochmal an..


EDIT: Ok, ich versuchs mal. Werd schon irgendwie scheitern :D
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von TBR am .
private Nachricht | Beiträge des Benutzers
Ahrimaan
myCSharp.de - Member



Dabei seit:
Beiträge: 363
Herkunft: Thorn

beantworten | zitieren | melden

Hi,

schau dir mal die callbacks.cs an, dort findest du zB die Events für die Serverkommunikation.
Im Ordner Server liegt alles für das hosten eiens Servers.

Solltest du dann noch konkrete Probleme haben, kannst du dich gerne hier melden :-)

Grüße
private Nachricht | Beiträge des Benutzers
TBR
myCSharp.de - Member



Dabei seit:
Beiträge: 159

Themenstarter:

beantworten | zitieren | melden

Ich hab ein Problem. Ich hab das Sample mal übernommen, jedoch kommt beim Aufurf von:

            uint error = ts3client.ts3client_initClientLib(ref cbs, ref cbs_rare, LogTypes.LogType_FILE | LogTypes.LogType_CONSOLE, null);

Ein Fehler:
Fehler
Die DLL "ts3client_win32.dll": Das angegebene Modul wurde nicht gefunden. (Ausnahme von HRESULT: 0x8007007E) kann nicht geladen werden.

Ich hab keinen Plan wieso, im Sample gehts auch ...
private Nachricht | Beiträge des Benutzers
Ahrimaan
myCSharp.de - Member



Dabei seit:
Beiträge: 363
Herkunft: Thorn

beantworten | zitieren | melden

liegt die DLL im Ausgabeverzeichniss der Assembly ?
private Nachricht | Beiträge des Benutzers
TBR
myCSharp.de - Member



Dabei seit:
Beiträge: 159

Themenstarter:

beantworten | zitieren | melden

Ja im Gegensatz zum Sample - was das komische ist ...
private Nachricht | Beiträge des Benutzers
Ayke
myCSharp.de - Member

Avatar #avatar-2293.gif


Dabei seit:
Beiträge: 655
Herkunft: Hamburg

beantworten | zitieren | melden

        [DllImport("kernel32.dll")]
        internal static extern IntPtr LoadLibrary(String dllname);

        [DllImport("kernel32.dll", SetLastError = true)]
        [return: MarshalAs(UnmanagedType.Bool)]
        internal static extern bool FreeLibrary(IntPtr hModule);

        [DllImport("kernel32.dll")]
        internal static extern IntPtr GetProcAddress(IntPtr hModule, String procname);

        internal delegate int MyFuncDelegate(int myParam);

        static void Main(string[] args)
        {
            //Modul laden
            IntPtr hModule = LoadLibrary("TeamSpeakLibraryPfad");
            //Funktions adresse bekommen
            IntPtr proc = GetProcAddress(hModule, "Funktionname");
            //Funktions addresse in delegate
            MyFuncDelegate meineNativeFunction = (MyFuncDelegate)
                Marshal.GetDelegateForFunctionPointer(proc, typeof(MyFuncDelegate));
            //Funktion aufrufen
            int retVal = meineNativeFunction.Invoke(123);
            //Modul entladen wenn nicht mehr gebraucht wird
            FreeLibrary(hModule);
        }
private Nachricht | Beiträge des Benutzers
TBR
myCSharp.de - Member



Dabei seit:
Beiträge: 159

Themenstarter:

beantworten | zitieren | melden

Das sieht mir danach aus, dass es ziemlich einfach ist so mit TS zu arbeiten :)

Ich werds mir mal anschauen, danke dir ;)
private Nachricht | Beiträge des Benutzers