Jump to content

Autoit and PTC Creo Interaction

Recommended Posts

I am looking for a way to interface AutoIT and PTC Creo using the Creo VB API COM object. I am able to do this with VBScript and in theory should also be able to replicate the same into AutoIT as well. However, For some reason, the connection does not seem be made from the Autoit script but is able to be made with VBScript.

Below is my working VBScript.

Dim asynconn, conn, session

Set asynconn = CreateObject("pfcls.pfcAsyncConnection")
MsgBox TypeName(asynconn), 0, "COM Type"

Set conn = asynconn.Connect("", "", ".", 5)
'Set conn = asynconn.Start("C:\Program Files\PTC\Creo 4.0\M090\Parametric\bin\parametric.exe",".")
MsgBox TypeName(conn), 0, "Connection Type"

Set sess = conn.session
MsgBox TypeName(sess), 0, "Session Type"

It opens a connection to the COM object in Creo, and message box outputs the variable types.

Below is my NOT working AutoIT Script:

Local $asynconn, $conn, $session

$asynconn = ObjCreate("pfcls.pfcAsyncConnection")
MsgBox(0, "COM Type",ObjName($asynconn))

$conn = $asynconn.Connect("", "", ".", 5)
;$conn = $asynconn.Start("C:\Program Files\PTC\Creo 4.0\M090\Parametric\bin\parametric.exe", ".")
MsgBox(0, "Connection Type", ObjName($conn))

$session = $conn.Session
Msgbox(0, "Session Type", ObjName($session))

The connection on the $conn object is not being made, even if I start Creo or try connecting to an existing session.

I know that there is probably a very few people who would be able to replicate this (those who have access to Creo), but would really appreciate help if someone has any ideas as to why this could be happening.



Edited by sudeepjd
Link to post
Share on other sites

First, wait for more skilled members to chime in before listening to me :)

Second, shouldnt there be () behind the $session = $conn.Session() (this is the point where you should listen to others ūüėõ )

Third, COM is broken in later versions of AutoIt (above version 3.3.12,) i have scripts that doesnt work in, i have to revert autoit back to version 3.3.12 or 3.3.10 before they work, though many scripts involving COM does work in newer versions, but some dont.

Some guy's script + some other guy's script = my script!

Link to post
Share on other sites

@FrancescoDiMuro I am executing with the SCite editor. It should give me a COM error on the Console right if there is one.. But this justs returns the $conn as a String instead of an Object.. Whereas on the VBScript it returns the Object. Even if I hardcode the $conn as a Boolean it converts it to a String.. which is weird since I am expecting an Object. 

Link to post
Share on other sites


If you don't set a COM error handler in your script, than your script just fails and tells you that a particular variable is not an object, for example.

Did you trying to pass Null values instead of blank strings to the .Connect() function?

Click here to see my signature:




Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By Rickname
      First , I don't know nothing about COM and I saw this script :
      #include <MsgBoxConstants.au3> Example() Func Example() ; Error monitoring. This will trap all COM errors while alive. ; This particular object is declared as local, meaning after the function returns it will not exist. Local $oErrorHandler = ObjEvent("AutoIt.Error", "_ErrFunc") ; Create Internet Explorer object Local $oIE = ObjCreate("InternetExplorer.Application") ; Check for errors If @error Then Return $oIE.Visible = True ; set visibility ; Custom sink object Local $oIEEvents = ObjEvent($oIE, "_IEEvent_", "DWebBrowserEvents2") ; Navigate somewhere $oIE.navigate("http://www.google.com/") ; Check for errors while loading If @error Then $oIE.Quit() Return EndIf ; Wait for page to load While 1 If $oIE.readyState = "complete" Or $oIE.readyState = 4 Then ExitLoop Sleep(10) WEnd EndFunc ... Now I want to know how can I find & list ALL those possible "functions" of a specific COM object ( those .Visible, .navigate, .readyState ... ), since I can't find those things nowhere listed 
  • Create New...