Winsock-Multiplayer, Standalone-Exe, Richtext-Formatierung & diverses

Da Hacker

Erfahrenes Mitglied
Sehr geehrte Mitglieder,

ich hab mal wieder einige Fragen.

Mein aktuelles Projekt ist ein Messenger. Den momentanen Fortschritt könnt ihr euch hier ansehen: Bitte hier klicken!

Ich habe die Fragen der Wichtigkeit nach sortiert, die wichtigste Frage kommt zu anfangs(ich würde mich wirklich sehr freuen, wenn diese eine noch bis 22:00 Uhr beantwortet wird).

Frage1:
Heute wollte ich meinen Messenger mit meinem Kumpel im Praktikum testen. Allerdings wurden die OCX-Dateien nicht von Windows erkannt. Diese konnte ich auch nicht ins Windowsverzeichnis kopieren, da dort die Meldung "Zugriff verweigert" kam. Nichtsdestotrotz wollte ich sowieso wissen, wie man das ganze umgehen kann. Wahrscheinlich könnte ich das auch per API und Registry lösen, allerdings wäre mir das etwas zu aufwendig.
Gibt es eine Möglichkeit in eine ausführbare .Exe-Datei andere Bibliotheken bzw. Steuerelemente zu implementieren, sodass auf diese direkt beim Start zugegriffen wird?
Ich bitte hier nicht nur um einen Verweis zu einer Seite, sondern - wenn es nicht zuviel verlangt ist - um ein kleines Tutorial(also eine Beschreibung). Ich habe noch nie intensiv mit dem Ressourceneditor gearbeitet, sollte dies verlangt werden.

Frage2:
Außerdem habe ich ein Problem mit dem "Rich Textbox"-Steuerelement. Ich hätte gerne eine farbliche Hervorhebung von Texten bzw. Usernames.
Wie kann ich einen bestimmten Text im RTB-Steuerelement farblich hervorheben?

Frage3:
Beim Chatten sind Smilies natürlich eine unverzichtbare Addition. Am liebsten würde ich das mit der "Replace()"-Funktion lösen, allerdings kenne ich keine Möglichkeit einen Text mit einem Bild zu 'replacen'.
Besteht die Möglichkeit innerhalb des Rich-Textbox-Steuerelements Grafiken - in Form von Smilies - einzufügen?

Frage4:
Der Messenger war eigentlich nur privat, als zusätzliches Übungsprogramm, gedacht. Da ich es auch eher privat teste, möchte ich gerne realisieren, dass mit mehreren Personen gechattet werden kann. So wie ich bisher das Winsock-Steuerelement kennen gelernt habe, gibt es hier nur die Möglichkeit mit maximal einer anderen Person zu chatten bzw. Daten nur an eine Person zu übertragen.
Wie kann ich die Anzahl der Chatpartner erhöhen?
Müsste ich diese Aufgabe wirklich bewältigen, würde ich wahrscheinlich Aber-Tausende ( ;) ) an Winsock-Steuerelementen erstellen und diese dann so konfigurieren, dass jedes seinen Port hat und so irgendwie die Übertragung steuern - wie bereits erwähnt: irgendwie! Aber das kann es doch wohl nicht sein, oder? Bin ich wirklich in meiner Anzahl an Verbindungen beschränkt?

Frage5:
Als ich meinen Bruder nach Verbesserungsvorschlägen bzw. einschlägigen Features gefragt habe, warf er die Technologie des "Voice over IP" ein. Für mich ein noch sehr neues Terrain und daher vielleicht nicht so einfach realisierbar.
Könntet ihr mich mit Informationen zu VoIP mit VB versorgen?
Es reichen also auch Links und nicht eine komplette Erklärung - was natürlich auch sehr fein wäre! ;)

Ein weiteres Mal danke ich im Voraus:
Adam, alias Da' Hacker

Keywords:
Winsock, Multiplayer, LAN, zocken, Internet, Standalone, einbinden, Richtext, formatieren, einfärben, Voice-over-IP.
 
Zu Frage 1: Du kannst die OCX-Dateien auch in das Programmverzeichnis kopieren, also zur Exe-Datei hin, wenn du auf das System32-Verzeichnis nicht zugreifen kannst. Windows sollte diese Dateien dann automatisch erkennen.

Zu Frage 4: Im Prinzip liegst du schon richtig. Man muss tatsächlich für jeden Client, der zum Server verbinden will, beim Server ein extra Winsock-Control haben (wenn du TCP verwendest, beim UDP-Protokoll ist das nicht nötig. Ich würde aber davon abraten, das UDP-Protokoll zu verwenden).
Der Server hat ein Winsock-Control, das eingehende Verbindungsanfragen von den Clients registriert. (Winsock-Ereignis "ConnectionRequest"). Wenn nun ein Client zum Server verbinden will erstellt der Server ein neues Winsock-Control und stellt die Verbindung mit dem Client über das soeben neu erstellte Winsock-Control her.
In der Forumssuche findest du mit dem Suchwort "Chat" viele Threads zu dem Thema. Hier habe ich übrigens Quellcode für ein Chatprogramm zum Download bereitgestellt. Vielleicht hilft dir das was.
Google liefert auch reichlich Tutorials zu dem Thema, beispielsweise hier.
 
Zuletzt bearbeitet:
Hi Shakie,

so, das wäre dann schon mal erledigt, vielen Dank!

Wirklich wichtig ist jetzt aber die Frage1. Wäre echt cool, wenn mir jemand da die Antwort nennen könnte.

Shakie, in deinem geposteten Thread ist die Rede von einer .manifest-Datei, die für den XP-Style zuständig sein soll. Ist das jetzt schon die Antwort auf Frage1?

//EDIT: @Frage1-Lösung: Das habe ich gemacht. Die OCX-Dateien wurden trotzdem nicht erkannt, danach habe ich versucht sie ins Windowsverzeichnis zu verschieben.

Ciao:
Da' Hacker
 
Zuletzt bearbeitet:
An die Manifest-Datei hatte ich beim Schreiben des Posts gar nicht gedacht....Die Manifestdatei ist aber lediglich als String-Konstante im Programm gespeichert und nicht als Ressource.
Dein Problem ist doch, dass Windows die OCX-Dateien, die du in deinem Programm verwendet hast, nicht erkennen will. Probiere da mal folgendes: es gibt das Programm "regsvr32.exe", das man über die Windows-Eingabeaufforedrung, über Start-->Ausführen oder mit dem Shell-Befehl aus einem VB-Programm heraus starten kann. Dieses Programm kann DLLs und OCX-Dateien im Windows registrieren, so dass dein Programm ganz wirklich funktionieren sollte.
(Wenn du einfach nur "regsvr32.exe" startest dann kommt ein Fenster, dass dir die möglichen Parameter für das Programm ausgibt).
Wenn deine OCX-Datei also beispielsweise den Pfad "C:\MeinProgramm\MeinOCX.ocx" hat, dann probiere mal regsvr32.exe folgendermaßen zu starten:
Code:
regsvr32 /s "C:\MeinProgramm\MeinOCX.ocx"
 
oder als VB-Code für den Shell-Befehl:
 
Shell "regsvr32 /s ""C:\MeinProgramm\MeinOCX.ocx"""
Nun sollte dein Programm die OCX-Datei namens "MeinOCX.ocx" finden und das Programm sollte (theoretisch) ohne Fehler laufen können.

Wenn du Dateien in der Exe-Datei abspeichern möchtest, dann kannst du das mit Ressourcen machen. Hier ist ein Tutorial, in dem du alles wichtige zum Thema Ressourcen allgemein und zur Ressourcenverwendung in VB finden kannst.
Wenn du beispielsweise OCX-Dateien als Ressource in deinem Programm mitgeben willst, dann musst du die Datei aber trotzdem noch aus der Ressource laden und in eine Datei auf der Festplatte schreiben und diese dann mit regsvr32 registrieren. Es sei denn, du hast die OCX-Komponente selbst programmiert bzw. hast den Quellcode dazu, dann kannst du sie auch so in dein Projekt einbinden, dass keine weitere Datei auf der Festplatte nötig ist.
 
Zuletzt bearbeitet:
Vielen Dank für deine Antwort, Shakie!

Dann werde ich mir das mal aufschreiben und morgen dann ausprobieren(hier am heimischen PC bringt es ja nichts mehr die OCX zu registrieren).

Genau so ein Tutorial über die Ressourcen habe ich mir gewünscht! Ich hoffe es hiflt mir weiter.

Bleiben noch die Fragen 2, 3, 5 zu klären.

Bis dann:
Da' Hacker
 
Zu Frage 2: Da kannst du wirklich mal Google verwenden! Ansonsten den Text markieren und die SelColor-Eigenschaft auf die entsprechende Farbe setzen:
Code:
RichTextBox1.SelColor = vbRed
RichTextBox1.SelText = "Test"

Frage 3 lässt sich sicherlich auch über Google lösen.
zu Frage 6: Was ist "Voice over IP"?
 
Zuletzt bearbeitet:
OCX Dateien versuchen sich beim Aufruf selbst zu registrieren.
D.h. er schreibt seine Informationen in die Registry z.B. in die HKLM. Dafür benötigt man Administratorenrechte. Die benötigt man auch, um ein OCX Control in das System32 Verzeichnis zu kopieren - der vermutlich die Fehlermeldung "Zugriff verweigert".

Ist das OCX erst einmal registriert kann man das Programm auch als normaler User starten.

Wenn ein OCX noch nicht registriert wurde, wird es vom aufrufenden Programm, wie benötigte DLLs gesucht, also zuerst im Programmpfad, dann im System32 Verzeichnis etc.
 
Vielen Dank euch beiden, Shakie und mage!

@Shakie: Sorry, ich hab schon die Methode/Eigenschaft "selColor" bemerkt, aber ich wusste nicht wie man sie anwendet - bei mir kamen dauernd Fehlermeldungen. Tja, ich bin halt'n N-O-O-B! ;)
Ich werde nun also versuchen in Kombination mit "Instr()" und diversen anderen Funktionen den Text einzufärben.

Wenn Interesse besteht - die Smilies werde ich nun versuchen mit dieser Hilfe in mein Projekt einzubinden:
Bitte hier klicken!

Zu der Frage "Was ist Voice over IP":
VoIP ist die Möglichkeit direkt über ein Micro/Headset mit seinem Gegenüber zu quatschen. Diese Möglichkeit unterstützen die aktuellsten/neuesten Messenger.

Würde mich freuen, wenn ihr mich hier noch zusätzlich mit Links versorgen könntet. Ich habe diese Seite gefunden:
Bitte auch mal hier klicken!
Die meiner Meinung nach sehr gut die Internetprogrammierung erklärt. Ich werde mich dort mal umsehen und schauen, ob sie mir hilft - für weitere Links bin ich allerdings immer noch dankbar!

@mage: Hmm, ja - das habe ich kommen sehen. Aber ich schwöre - nein, ich versichere dir - , dass ich die OCX-Dateien im Programmverzeichnis hatte und das Proggie sie trotzdem nicht erkannt hat. Ich werde mal eine kleine Funktion einbauen, die mir das Programmverzeichnis ausgiebt - vielleicht ist dieses aus irgendeinem Grund anders. :confused: ;)
Ansonsten werde ich wohl "in die Röhre schauen" müssen - ohne Adminrechte! :(

Vielen Dank nochmal:
Da' Hacker
 
Zurück