COM Object Methode Return Parameter
Posted: 24 Jun 2020, 03:17
ahk: 1.1.32.00 (64bit)
ich benoetige Eure Hilfe. Ich habe bisher keine Erfahrung mit ahk scripten. Moechte aber als Auftragsarbeit eine COM Methode ausfuehren und einen Rueckgabe Parameter auswerten. Die Methode fuehrt ein vbscript (script_ahk) aus, dessen Rueckgabe Parameter (strOutput) ich beeinflussen kann. Das COM Object selbst ist von einem Dritt-Anbieter, auf dessen Methoden ich aber keinen Einfluss haben. Ist die Rueckgabe <>1 soll der Rueckgabe String ausgewertet werden. Ansonsten wird in einer Applikation ein Form Objekt geoeffnet.
Der Rueckgabe Parameter der COM Methode ist 'strOutput' und wird vom vbscript via 'OutputParams' gefuettert. ahk initialisiert zur Laufzeit 'strOutput' als Globale Variable und weist 'Null' zu. Nach Ausfuehren der COM Methode bleibt der Wert aber Null.
Hat jemand eine Idee, wie die Rueckgabe ausgewertet werden kann?
Folgendes ahk Script soll das verdeutlichen:
Das vbscript 'script_ahk' sieht in etwa so aus:
ich benoetige Eure Hilfe. Ich habe bisher keine Erfahrung mit ahk scripten. Moechte aber als Auftragsarbeit eine COM Methode ausfuehren und einen Rueckgabe Parameter auswerten. Die Methode fuehrt ein vbscript (script_ahk) aus, dessen Rueckgabe Parameter (strOutput) ich beeinflussen kann. Das COM Object selbst ist von einem Dritt-Anbieter, auf dessen Methoden ich aber keinen Einfluss haben. Ist die Rueckgabe <>1 soll der Rueckgabe String ausgewertet werden. Ansonsten wird in einer Applikation ein Form Objekt geoeffnet.
Der Rueckgabe Parameter der COM Methode ist 'strOutput' und wird vom vbscript via 'OutputParams' gefuettert. ahk initialisiert zur Laufzeit 'strOutput' als Globale Variable und weist 'Null' zu. Nach Ausfuehren der COM Methode bleibt der Wert aber Null.
Hat jemand eine Idee, wie die Rueckgabe ausgewertet werden kann?
Folgendes ahk Script soll das verdeutlichen:
Code: Select all
strScript := "script_ahk"
strTicket := "12345678"
objOT := ComObjCreate("OtClient.OTClientAut")
objOT.InvokeAction(strScript, strTicket, strOutput)
If Not (strOutput = 1) MsgBox % strOutput
Code: Select all
Dim strTicket, intTicketID, strOutput
strTicket = Trim(Cstr(InputParams))
If InStr(strTicket, "-") > 0 Then
intTicketID = get_ticket(strTicket)
If intTicketID > 0 Then
OpenRequest intTicketID, False, False
strOutput = "1"
Else
strOutput = "Ticket number not found: " & strTicket
End If
Else
strOutput = "Ticket number incorrectly formatted: " & strTicket
End If
OutputParams = strOutput