MAWO: ...Bekomme immer 0 wen ich den Buffer auslese...
Hallo,
Dein Fehler liegt im VB-Aufruf von
QC_StartReceiver("Testchannel", 1);
Prinzipiell kann jedes Programm, daß eine Windows Message-Loop verarbeiten kann, Nachrichten via QuickChannel empfangen. Wie du also richtig annimmst, kann nicht nur MetaTrader darüber Nachrichten empfangen. Der Mechanismus der Signalisierung arbeitet wie folgt.
QC_StartReceiver() sagt der QuickChannel-Instanz im Speicher: "Benachrichtige mich unter dem angegebenen Windows-Handle, wenn im Channel "TestChannel" neue Nachrichten eingehen."
In MetaTrader ist dieses Handle das Chart-Handle:
QC_StartReceiverW("TestChannel", WindowHandle(Symbol(), Period()));
Wenn du also in Nicht-MetaTrader-Programmen Messages von QuickChannel erhalten willst, mußt du ein existierendes Fensterhandle deines VB-Programms als Empfänger angeben. Irgendeines, wichtig ist nur, daß du Kontrolle über seine Message-Loop hast. Dort inspizierst du jede einkommende Message und wenn die Message ein MetaTrader-Standardtick ist, weißt du "dies ist eine Benachrichtigung von QuickChannel". Rufst du jetzt eine der QC_GetMessage()-Funktionen auf, kannst du die Message auch erfolgreich lesen.
Was machst du, wenn dein VB-Programm kein Fenster hat? Du erzeugst eines (und zwar unsichtbar) und sein ganzer Zweck besteht nur darin, daß für ein Fenster immer eine Messageloop existieren muß und du dieses Fensterhandle an QC_StartReceiver() übergeben kannst.
Bitte frage nicht nach konkreten Code-Beispielen. Ich habe nie mit VB gearbeitet und beschreibe hier nur den generellen Aufbau der Kommunikation via QuickChannel.
Hoffe, das hilft dir trotzdem.
Danke , für die Antwort
Ich habe das Kommunikationsproblem über Named Pipe ausgelöst.
Danke für deine Zeit
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
ich brächte mal euere Hilfe .
Mein Ziel ist es Programm übergreifend Nachrichten zu senden.Programme: 2 x Metatrader 4 und 1x vb.net Programm .
Senden und empfangen zwischen Metatrder 4 geht einwandfrei.Senden von vb.net zu Metatreader 4 geht.
Empfangen mit vb.net geht nicht .
Bekomme immer 0 wen ich den Buffer auslese
Benutze hierzu die FXBlueQuickChannel.dll von Fx blue.
Link: fxblue.com/appstore/9/quickchannel
User Guid : fxblue.com/appstore/u9/quickchannel/user-guide
danke für euerer Hilfe.
Der Quellcode finde ihr unter da habe ich ihn Geprostet. da man hier ja nur 6000 Zeischen schreiben darf .
https://www.vb-paradise.de/index.php/Thread/128894-DLL-Problem-Kominkation-2-Programme/?postID=1115458#post1115458