Hallo AutoIt'ler
ich bin derzeit daran via COM Schnittstelle ein Softwaretool zu steuern.
Dies funktioniert soweit auch wie ich mir das vorgestellt habe.
Jedoch ist es mir nicht möglich die überlieferten Strings auszulesen.
Die Dokumentation der Software beschreibt die Funktion folgendermaßen:
Variablen die als BSTR übergeben werden kann ich ohne Probleme auslesen.
[autoit]$val = $oObj.GetVar( "var" )
[/autoit]Ich komme jedoch nicht an die Daten heran die in BSTR* geschrieben werden sollten.
Ich habe bereits die Funktionen __IEStringToBstr und __IEBstrToString versucht, leider auch erfolglos. (1)
Daher habe ich mir die Spezifikationen von BSTR angeschaut und folgendes versucht: (2 3)
Func StringToBstr( ByRef $vBSTRstorage, $sString )
$dwSize = StringLen( $sString )
$tBSTR = "DWORD dwSize; WCHAR wcStr["&$dwSize+1&"]"
$vBSTRstorage = DllStructCreate( $tBSTR )
DllStructSetData( $vBSTRstorage, "dwSize", $dwSize*2 )
DllStructSetData( $vBSTRstorage, "wcStr", $sString )
Return DllStructGetPtr($vBSTRstorage) +4
EndFunc
Func BstrToString( $pBSTR )
$tBSTR = "DWORD dwSize"
$data = DllStructCreate( $tBSTR, $pBSTR -4 )
$dwSize = DllStructGetData( $data, "dwSize" ) /2
$tBSTR = "DWORD dwSize; WCHAR wcStr["&$dwSize+1&"]"
$data = DllStructCreate( $tBSTR, $pBSTR -4 )
Return DllStructGetData( $data, "wcStr" )
EndFunc
Leider auch erfolglos!
Kann mir jemand weiterhelfen?