Hi,
für eines meiner Scripte, benötige ich eine funktion um die Dateidetails zu ändern. Ich habe mir eine DLL von Microsoft runtergeladen in der ich die benötigten funktionen gefunden habe. Mein Problem: Es sind COM funktionen.
Wie kann ich diese funktionen nutzen ohne die DLL zu registrieren? Geht das überhaupt?
Ich habe mal verucht folgendes VB Script in AutoIt zu übersetzen (funktioniert nur mit registrierter DLL):
Set oFile = CreateObject("DSOFile.OleDocumentProperties")
oFile.Open("c:\tmp\test.txt")
oFile.SummaryProperties.Comments = "Test Comment"
oFile.Save
oFile.Close
Mein Script:
[autoit]
$dll = DllOpen("dsofile.dll")
$oFile = ObjCreate("DSOFile.OleDocumentProperties")
If Not @error Then
MsgBox(4096, "ObjCreate Test", "ObjCreate() of a DSO File Object successful !")
Else
MsgBox(4096, "ObjCreate Test", "Failed to create Object. Error code: " & Hex(@error, 8))
EndIf
DllClose($dll)
Exit
Wenn ich das Script ausführe, bekomme ich den Fehlercode: 800401F3
Das bedeutet wohl so viel wie: Objekt nicht gefunden
Kann ich die funktion eventuell per dllcall aufrufen?
Wenn das geht, wie mache ich das? Ich habe nicht viel Ahnung von dllcall und Objekten.
Ich hbae mit dem DLL Export Viewer, einige für mich wichtige funktionen ausgelesen:
Function names:
_OleDocumentProperties::Close
_OleDocumentProperties::CLSID
_OleDocumentProperties::IsOleFile
_OleDocumentProperties::Open
_OleDocumentProperties::Save
CustomProperties::Add
CustomProperty::Remove
SummaryProperties::Comments
Weiss jemand ob und wie ich das realisieren kann?
Muss ich die DLL tatsächlich registrieren? Wenn ja, muss die zwingend ins System32 verzeichnis?