DLL Problem // Kominkation 2 Programme

  • VB.NET

Es gibt 21 Antworten in diesem Thema. Der letzte Beitrag () ist von marwo.

    Hallo,

    hab mich hier angemeldet, da du keine Benachrichtigungen bekommen wirst, wenn dir jemand auf mql5.com antwortet:

    Dein Fehler liegt im VB-Aufruf von

    Quellcode

    1. QC_StartReceiver("Testchannel", 1)
    .

    Prinzipiell kann jedes Programm, dass eine Windows Message-Loop verarbeiten kann, Nachrichten via QuickChannel empfangen. Wie du also richtig annimmst, kann nicht nur MetaTrader darueber 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:

    Quellcode

    1. 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 Quick-Channel 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 GetMessage()-Funktionen auf, kannst du auch erfolgreich deine Message 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.

    Dieser Beitrag wurde bereits 11 mal editiert, zuletzt von „emmzett“ ()