AutoIt in Verbindung mit DDE/COM/OLE

  • Hallo zusammen,

    ich bräuchte grad mal eure Hilfe :)

    Zunächst eine kleine Aufgabenstellung: Ich werde vorraussichtlich ein Tool bauen müssen, dass als Zwischenstück zwischen zwei Anwendungen gesetzt werden soll. Sprich, es werden Informationen via DDE-Kommandos in das AutoIt Skript gereicht, welches dann wiederrum ein weiteres Programm vorraussichtlich über die Kommandozeile steuern wird, da leider der zweiten Software einige der benötigten DDE-Kommandos fehlen.

    Somit ist der Datenfluss: Software 1 -> DDE-Command > AutoIt Script -> Doing something.

    Ich habe mir die DDE UDF angeschaut und nun folgende Frage:

    [list][*] In den beiden Beispielen Client + Server steht in dem Quellcode der Server.au3 z.B.:

    [autoit]


    If $DMLERR_NO_ERROR = _DdeInitialize("OnDDE_", $APPCLASS_STANDARD) Then
    $hszSrvService = _DdeCreateStringHandle("SampleDDEService")
    If Not _DdeNameService($hszSrvService, $DNS_REGISTER) Then MsgBox(0, "Sample DDE Server", "Failed to register service")
    Else
    MsgBox(0, "Sample DDE Server", "Failed to initialize service")
    EndIf

    [/autoit]


    Bedeutet das, dass der Parameter der Funktion _DdeCreateStringHandle() unrelevant ist, oder was hat es damit auf sich? Muss da irgendetwas von der Software 1 (in meinem Fall) rein, ich find es nicht raus, und die Kommentierung hilft mir in der UDF bisher auch nicht wirklich weiter.
    Ich kann mir nicht vorstellen, dass der Parameter unrelevant ist, ich muss doch bei wenn ich mti Software 1 das Commando XYZ abschicke, irgendwie angeben wo das hingehen soll, und ich kann in den Dateien nichts finden, wo gesagt wird der Server ist "SampleDDEService".

    ; Function Name: _DdeCreateStringHandle
    ; Description: The _DdeCreateStringHandle function creates a handle that
    ; identifies the string pointed to by the psz parameter.
    ; A dynamic data exchange (DDE) client or server application can
    ; pass the string handle as a parameter to other Dynamic Data
    ; Exchange Management Library (DDEML) functions.

    Quasi das gleiche Problem habe ich bei den Variablen $hszService und $hszTopic. Sind dies Werte, die ich der Software 1 entnehmen muss, oder ist das unrelevant was ich dort nehme? Das sind die drei Variablen die ich meines erachtens verstehen muss, der Rest sollte den Beispielen einfach nachbaubar sein...

    Ich hoffe ihr könnt mir fix aus der Patsche helfen ^^

    So Far

    #Edit: "Ich kann mir nicht vorstellen, dass der Parameter unrelevant ist, ich muss doch bei wenn ich mti Software 1 das Commando XYZ abschicke, irgendwie angeben wo das hingehen soll, und ich kann in den Dateien nichts finden, wo gesagt wird der Server ist "SampleDDEService"." - Da sollte ich vielleicht die Augen mal besser auf machen :/ Zeile 23 der Server.au3.

    "Quasi das gleiche Problem habe ich bei den Variablen $hszService und $hszTopic." - Habe noch einen kleinen Text bei Google gefunden gehabt, kann es sein, dass ich diese wirklich frei wählen kann?

    Sorry für einen möglichen voreligen Thread. Ich werde versuchen es direkt umzusetzen sonst nochmal um Hilfe bitte :)

    #Edit 2: Es scheint als laufe mein Serverscript richtig. Jedoch bekomme ich beim ersten aufruf einen Fehler von meiner ersten Software angezeigt. Dazu muss ich vll. sagen, dass die Software den Server startet. Sofern also die Software auch erst den Server startet, und nicht erst das Kommando sendet oder so etwas, sieht es laut Debugging aus, als würde ein Rückgabewert fehlen. Alternativ stimmt etwas mit den Parametern oder der Aufrufart nicht. Da ich an dem System aber nicht jederzeit arbeiten kann, werd ich Freitag wohl erst wieder Zeit haben dies zu testen.

    Grüße Yaerox

    Grüne Hölle

    2 Mal editiert, zuletzt von Yaerox (18. September 2013 um 15:52)