MT4 Dll FX Blue QuickChannel for MT4

 

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

 
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()));
In VB gibt es jedoch keinen Chart, also auch kein Chart-Handle. Du hast "1" angegeben, und ein solches Fenster gibt es nicht (1 ist kein gültiges Fensterhandle).

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

Grund der Beschwerde: