Sign in to follow this  
Followers 0
pshankland

ObjCreate Help

12 posts in this topic

#1 ·  Posted (edited)

Hi all,

I am trying to convert the following lines of VBScript into AutoIT:

Const strDomainName = "localhost"
Const strAccountValidDays = 7
Set Manager = CreateObject("G6FTPServer.Manager")
Set Domain = Manager.Domains.Item(strDomainName)
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objShell = WScript.CreateObject("WScript.Shell")
Set objArgs = WScript.Arguments

Looking through the help files and forum posts I have got the following:

$strDomainName = "localhost"
$strAccountValidDays = 7
Local $objManager = ObjCreate("G6FTPServer.Manager")
Local $objDomain = $objManager.Domains.Item($strDomainName)
Local $objFSO = ObjCreate("Scripting.FileSystemObject")
Local $objShell = ObjCreate("WScript.Shell")
Local $objArgs = WScript.Arguments

However, the above is incorrect as when the code runs the 'Local objDomain = objManager.Domains.Item(strDomainName)' or 'Local objArgs = WScript.Arguments' part I get the following error:

Error: Missing separator character after keyword.

Can anyone point me in the right direction?

Thanks.

Pete.

Edited by pshankland

Share this post


Link to post
Share on other sites



#2 ·  Posted (edited)

Try:

Global $strDomainName = "Globalhost"
Global $strAccountValidDays = 7
Global $objManager = ObjCreate("G6FTPServer.Manager")
Global $objDomain = $objManager.Domains.Item($strDomainName)
Global $objFSO = ObjCreate("Scripting.FileSystemObject")
Global $objShell = ObjCreate("WScript.Shell")
Global $objArgs = ObjGet("Wscript.Arguments")

I'm not sure about the last statement. Maybe this can be replaced by $CmdLine.

Edited by water
1 person likes this

My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2017-04-18 - Version 1.4.8.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2017-02-27 - Version 1.3.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2015-04-01 - Version 0.4.0.0) - Download - General Help & Support - Example Scripts
Excel - Example Scripts - Wiki
Word - Wiki
PowerPoint (2015-06-06 - Version 0.0.5.0) - Download - General Help & Support

Tutorials:
ADO - Wiki

 

Share this post


Link to post
Share on other sites

#3 ·  Posted (edited)

Well, I don't get errors again :)

However, when I now progress to actually add something in I get an error.

Original VBScript:

Const strDomainName = "localhost"
Const strAccountValidDays = 7
Set Manager = CreateObject("G6FTPServer.Manager")
Set Domain = Manager.Domains.Item(strDomainName)
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objShell = WScript.CreateObject("WScript.Shell")
Set objArgs = WScript.Arguments
strRealName = objArgs.Item(0)
strEmail = objArgs.Item(1)
Set User = Domain.UserList.Add(strEmail)

AutoIT Code:

#include <windowsconstants.au3>
#Include <array.au3>
#include <date.au3>
Global $strDomainName = "localhost"
Global $strAccountValidDays = 7
Global $objManager = ObjCreate("G6FTPServer.Manager")
Global $objDomain = $objManager.Domains.Item($strDomainName)
Global $objFSO = ObjCreate("Scripting.FileSystemObject")
Global $objShell = ObjCreate("WScript.Shell")
Global $objArgs = ObjGet("WScript.Arguments")
$strRealName = InputBox("Real Name", "Users Real Name:")
$strEmail = InputBox("Email", "Users Email Address:")
Local $strUser = $objDomain.UserList.Add($strEmail)

Have included the error as a screenshot.

Any clues?

Thanks.

post-16707-0-87882400-1326813404_thumb.p

Edited by pshankland

Share this post


Link to post
Share on other sites

#4 ·  Posted (edited)

You need a COM error handler. Try this:

#include <windowsconstants.au3>
#Include <array.au3>
#include <date.au3>
Local $oErrorHandler = ObjEvent("AutoIt.Error", "_ErrFunc")
Global $strDomainName = "localhost"
Global $strAccountValidDays = 7
Global $objManager = ObjCreate("G6FTPServer.Manager")
Global $objDomain = $objManager.Domains.Item($strDomainName)
Global $objFSO = ObjCreate("Scripting.FileSystemObject")
Global $objShell = ObjCreate("WScript.Shell")
Global $objArgs = ObjGet("WScript.Arguments")
$strRealName = InputBox("Real Name", "Users Real Name:")
$strEmail = InputBox("Email", "Users Email Address:")
Local $strUser = $objDomain.UserList.Add($strEmail)

; User's COM error function. Will be called if COM error occurs
Func _ErrFunc($oError)
    ConsoleWrite("err.number is: " & @TAB & $oError.number & @CRLF & _
            "err.windescription:" & @TAB & $oError.windescription & @CRLF & _
            "err.description is: " & @TAB & $oError.description & @CRLF & _
            "err.source is: " & @TAB & $oError.source & @CRLF & _
            "err.helpfile is: " & @TAB & $oError.helpfile & @CRLF & _
            "err.helpcontext is: " & @TAB & $oError.helpcontext & @CRLF & _
            "err.lastdllerror is: " & @TAB & $oError.lastdllerror & @CRLF & _
            "err.scriptline is: " & @TAB & $oError.scriptline & @CRLF & _
            "err.retcode is: " & @TAB & $oError.retcode & @CRLF & @CRLF)
EndFunc   ;==>_ErrFunc

Edited by water

My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2017-04-18 - Version 1.4.8.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2017-02-27 - Version 1.3.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2015-04-01 - Version 0.4.0.0) - Download - General Help & Support - Example Scripts
Excel - Example Scripts - Wiki
Word - Wiki
PowerPoint (2015-06-06 - Version 0.0.5.0) - Download - General Help & Support

Tutorials:
ADO - Wiki

 

Share this post


Link to post
Share on other sites

Got the following output now:

err.number is:  2
err.windescription: Not an Object type
err.description is: 
err.source is: 
err.helpfile is: 
err.helpcontext is:  0
err.lastdllerror is:  0
err.scriptline is:  26
err.retcode is:  0

Had a quick look to see what the "Not an Object type" error would be but am stuck again.

Share this post


Link to post
Share on other sites

Try this:

#include <windowsconstants.au3>
#Include <array.au3>
#include <date.au3>
Local $oErrorHandler = ObjEvent("AutoIt.Error", "_ErrFunc")
Global $strDomainName = "localhost"
Global $strAccountValidDays = 7
Global $objManager = ObjCreate("G6FTPServer.Manager")
ConsoleWrite("G6FTPServer.Manager: @error: " & @error & ", @extended: " & @extended & @CRLF)
Global $objDomain = $objManager.Domains.Item($strDomainName)
ConsoleWrite("$objManager.Domains.Item($strDomainName): @error: " & @error & ", @extended: " & @extended & @CRLF)
Global $objFSO = ObjCreate("Scripting.FileSystemObject")
ConsoleWrite("Scripting.FileSystemObject: @error: " & @error & ", @extended: " & @extended & @CRLF)
Global $objShell = ObjCreate("WScript.Shell")
ConsoleWrite("WScript.Shell: @error: " & @error & ", @extended: " & @extended & @CRLF)
Global $objArgs = ObjGet("WScript.Arguments")
ConsoleWrite("WScript.Arguments: @error: " & @error & ", @extended: " & @extended & @CRLF)
$strRealName = InputBox("Real Name", "Users Real Name:")
$strEmail = InputBox("Email", "Users Email Address:")
Local $strUser = $objDomain.UserList.Add($strEmail)
; User's COM error function. Will be called if COM error occurs
Func _ErrFunc($oError)
    ConsoleWrite("err.number is: " & @TAB & $oError.number & @CRLF & _
            "err.windescription:" & @TAB & $oError.windescription & @CRLF & _
            "err.description is: " & @TAB & $oError.description & @CRLF & _
            "err.source is: " & @TAB & $oError.source & @CRLF & _
            "err.helpfile is: " & @TAB & $oError.helpfile & @CRLF & _
            "err.helpcontext is: " & @TAB & $oError.helpcontext & @CRLF & _
            "err.lastdllerror is: " & @TAB & $oError.lastdllerror & @CRLF & _
            "err.scriptline is: " & @TAB & $oError.scriptline & @CRLF & _
            "err.retcode is: " & @TAB & $oError.retcode & @CRLF & @CRLF)
EndFunc   ;==>_ErrFunc

BTW: Do you thing "localhost" is the correct input for a field named "$strDomainName"?


My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2017-04-18 - Version 1.4.8.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2017-02-27 - Version 1.3.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2015-04-01 - Version 0.4.0.0) - Download - General Help & Support - Example Scripts
Excel - Example Scripts - Wiki
Word - Wiki
PowerPoint (2015-06-06 - Version 0.0.5.0) - Download - General Help & Support

Tutorials:
ADO - Wiki

 

Share this post


Link to post
Share on other sites

BTW: Do you thing "localhost" is the correct input for a field named "$strDomainName"?

Ahhhhhhh, that's the problem! I was using localhost as a test instead of the actual domain name used within Gene6 FTP Server. Changed it to the correct server name and it went through ;)

So sorry about missing that :)

Thanks for the help.

Share this post


Link to post
Share on other sites

Glad we could solve the problem :)


My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2017-04-18 - Version 1.4.8.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2017-02-27 - Version 1.3.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2015-04-01 - Version 0.4.0.0) - Download - General Help & Support - Example Scripts
Excel - Example Scripts - Wiki
Word - Wiki
PowerPoint (2015-06-06 - Version 0.0.5.0) - Download - General Help & Support

Tutorials:
ADO - Wiki

 

Share this post


Link to post
Share on other sites

Another question (sorry) :)

In VBScript I have the following which checks to see if the Email address exists and adds various values if it doesnt:

If Domain.UserList.Item(strEmail) is Nothing Then
Set User = Domain.UserList.Add(strEmail)
User.Properties.Values("Enabled") = "1"
User.Properties.Values("Password") = ":" & strPassword 'Add : to password to force as plain text
User.Properties.Values("RealName") = strRealName
User.Properties.Values("Email") = strEmail
User.Properties.Values("AccessList") = "/," & strHomeFolder & ",R,FDI"
User.Properties.Values("ExpirationEnabled") = "1"
User.Properties.Values("ExpirationDate") = strUserExpiration
User.Properties.Values("Scripts") = "Log downloads.vbs"&vbCRLF&"Log uploads.vbs"
'Msgbox("User " & strEmail & " has been created")
Else
'Msgbox("User " & strEmail & " already exists")
WScript.Quit
End If

I have the following in AutoIT but the 'IF' statement is wrong as doesn't process correctly (just tries to add each time):

If $objDomain.UserList.Item($strEmail) <> $strEmail Then
   Local $strUser = $objDomain.UserList.Add($strEmail)
   $strUser.Properties.Values("Enabled") = "1"
   $strUser.Properties.Values("Password") = ":" & $strPassword ;Add : to password to force as plain text
   $strUser.Properties.Values("RealName") = $strRealName
   $strUser.Properties.Values("Email") = $strEmail
   $strUser.Properties.Values("AccessList") = "/," & $strHomeFolder & ",R,FDI"
   $strUser.Properties.Values("ExpirationEnabled") = "1"
   $strUser.Properties.Values("ExpirationDate") = $strExpireDate
   $strUser.Properties.Values("Scripts") = "Log downloads.vbs" & Chr(13) & "Log uploads.vbs"
  
   MsgBox(0,"Output", "Real Name: " & $strRealName & Chr(13) _
   & "Email: " & $strEmail & Chr(13) _
   & "Password: " & $strPassword & Chr(13) _
   & "Home Folder: " & $strHomeFolder & Chr(13) _
   & "Expiration Date: " & $strExpireDate)
  
Else
   MsgBox(0,"", "User already exists")
EndIf

What would be the equivalent in AutoIT for 'Is Nothing Then'?

Thanks for the ongoing support!

Share this post


Link to post
Share on other sites

I think the Item method returns an object. So you would check for

If Not Isobj($objDomain.UserList.Item($strEmail)) Then

1 person likes this

My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2017-04-18 - Version 1.4.8.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2017-02-27 - Version 1.3.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2015-04-01 - Version 0.4.0.0) - Download - General Help & Support - Example Scripts
Excel - Example Scripts - Wiki
Word - Wiki
PowerPoint (2015-06-06 - Version 0.0.5.0) - Download - General Help & Support

Tutorials:
ADO - Wiki

 

Share this post


Link to post
Share on other sites

Amazing, works like a charm :)

Not sure if anyone will want it but I'll make sure I post my completed code once finished.

Thanks again.

Share this post


Link to post
Share on other sites

Glad to be of service :)


My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2017-04-18 - Version 1.4.8.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2017-02-27 - Version 1.3.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2015-04-01 - Version 0.4.0.0) - Download - General Help & Support - Example Scripts
Excel - Example Scripts - Wiki
Word - Wiki
PowerPoint (2015-06-06 - Version 0.0.5.0) - Download - General Help & Support

Tutorials:
ADO - Wiki

 

Share this post


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
Sign in to follow this  
Followers 0