Sign in to follow this  
Followers 0
Just_Plain_Cool

VB RunTime Error '429' using AutoItX3.dll

25 posts in this topic

Hi All,

My first attempt at using AutoItX3.dll from within a VB application has become an adventure. The code works fine here on both machines I have, but I gave it to someone else and it is reporting this error:

RunTime Error '429' - Active X Component Can't Create Object.

Here is the offending code:

Dim cAutoit As AutoItX3Lib.AutoItX3 'declare the AutoitX DLL in declarations


Private Sub cmdExit_Click()
    Dim intPress As Integer
    If blnSaved = False Then
        intPress = MsgBox("Do you want to save before exiting?", vbYesNo, "Save Schedule?")
        If intPress = vbYes Then
            cmdSave_Click
        End If
    End If
    If blnSchChanged = True Then ' Schedule has changed
        Dim intResult As Integer 'declare a variable to hold autoitx function return values

        Set cAutoit = New AutoItX3Lib.AutoItX3 'create a new instance

        'check whether LF_Monitor is opened or not
        intResult = cAutoit.WinExists("LF_Monitor ")
        If intResult = 1 Then ' result=1 means window exists
            cAutoit.WinClose ("LF_Monitor ")

            Do 'make sure LF_Monitor is closed
                intResult = cAutoit.WinExists("LF_Monitor ")
            Loop Until intResult = 0

            intResult = cAutoit.Run("LF_Monitor") ' start LF_Monitor again
        Else
            intPress = MsgBox("Please remember that 'LF_Monitor.exe' must be running to process your schedule", vbOKOnly, "Reminder")
        End If

        Set cAutoit = Nothing
    End If
    Unload Me
    End
End Sub

Any help would be greatly appreciated...

JPC :)

Share this post


Link to post
Share on other sites



Hi All,

My first attempt at using AutoItX3.dll from within a VB application has become an adventure.  The code works fine here on both machines I have, but I gave it to someone else and it is reporting this error:

RunTime Error '429' - Active X Component Can't Create Object.

Here is the offending code:

Dim cAutoit As AutoItX3Lib.AutoItX3 'declare the AutoitX DLL in declarations
Private Sub cmdExit_Click()
    Dim intPress As Integer
    If blnSaved = False Then
        intPress = MsgBox("Do you want to save before exiting?", vbYesNo, "Save Schedule?")
        If intPress = vbYes Then
            cmdSave_Click
        End If
    End If
    If blnSchChanged = True Then ' Schedule has changed
        Dim intResult As Integer 'declare a variable to hold autoitx function return values

        Set cAutoit = New AutoItX3Lib.AutoItX3 'create a new instance

        'check whether LF_Monitor is opened or not
        intResult = cAutoit.WinExists("LF_Monitor ")
        If intResult = 1 Then ' result=1 means window exists
            cAutoit.WinClose ("LF_Monitor ")

            Do 'make sure LF_Monitor is closed
                intResult = cAutoit.WinExists("LF_Monitor ")
            Loop Until intResult = 0

            intResult = cAutoit.Run("LF_Monitor") ' start LF_Monitor again
        Else
            intPress = MsgBox("Please remember that 'LF_Monitor.exe' must be running to process your schedule", vbOKOnly, "Reminder")
        End If

        Set cAutoit = Nothing
    End If
    Unload Me
    End
End Sub

Any help would be greatly appreciated...

JPC  :)

<{POST_SNAPBACK}>

Instead of using ActiveX

Set cAutoit = New AutoItX3Lib.AutoItX3 'create a new instance

use

Set cAutoit = CreateObject("autoitx3.dll") ''create a new instance

after it will be better for you witjhout any problem

Share this post


Link to post
Share on other sites

#3 ·  Posted (edited)

Instead of using ActiveX

Set cAutoit = New AutoItX3Lib.AutoItX3 'create a new instance

use

Set cAutoit = CreateObject("autoitx3.dll") ''create a new instance

after it will be better for you witjhout any problem

<{POST_SNAPBACK}>

Hi LOULOU,

Hmmm...I must be missing something here. I modified the source with your suggested change. Now I get the error that my user was reporting!

JPC :)

Edited by Just_Plain_Cool

Share this post


Link to post
Share on other sites

Refer to LOULOU's post on the other topic: Click Here!

The DLL file must be registered on the computer in order for it to be use in that manner.

*** Matt @ MPCS

Share this post


Link to post
Share on other sites

Refer to LOULOU's post on the other topic: Click Here!

The DLL file must be registered on the computer in order for it to be use in that manner.

*** Matt @ MPCS

<{POST_SNAPBACK}>

Okay, I have changed to code as follows:

If blnSchChanged = True Then ' Schedule has changed
        Dim intResult As Integer 'declare a variable to hold autoitx function return values
        Set WshShell = CreateObject("WScript.Shell")
        WshShell.Run "Regsvr32 /s AutoItX3.dll ", 0, True
        Set cAutoit = CreateObject("AutoItXx3.dll") 'create a new instance
        'Set cAutoit = New AutoItX3Lib.AutoItX3 'create a new instance

Everything between the line with Dim intResult line and the next to comment line at the end has been changed. I'm still getting the error. Argh...

Thanks for the help guys,

JPC :)

Share this post


Link to post
Share on other sites

Okay, I have changed to code as follows:

If blnSchChanged = True Then ' Schedule has changed
        Dim intResult As Integer 'declare a variable to hold autoitx function return values
        Set WshShell = CreateObject("WScript.Shell")
        WshShell.Run "Regsvr32 /s AutoItX3.dll ", 0, True
        Set cAutoit = CreateObject("AutoItXx3.dll") 'create a new instance
        'Set cAutoit = New AutoItX3Lib.AutoItX3 'create a new instance

Everything between the line with Dim intResult line and the next to comment line at the end has been changed.  I'm still getting the error.  Argh...

Thanks for the help guys,

JPC  :)

<{POST_SNAPBACK}>

I believe you need to include the path the the dll file.

If blnSchChanged = True Then ' Schedule has changed
        Dim intResult As Integer 'declare a variable to hold autoitx function return values
        Set WshShell = CreateObject("WScript.Shell")
        WshShell.Run "Regsvr32 /s " & @ScriptDir & "\AutoItX3.dll ", 0, True
        Set cAutoit = CreateObject("AutoItXx3.dll") 'create a new instance
        'Set cAutoit = New AutoItX3Lib.AutoItX3 'create a new instance

The above should work if the dll is in the same directory as the script.

*** Matt @ MPCS

Share this post


Link to post
Share on other sites

I believe you need to include the path the the dll file.

If blnSchChanged = True Then ' Schedule has changed
        Dim intResult As Integer 'declare a variable to hold autoitx function return values
        Set WshShell = CreateObject("WScript.Shell")
        WshShell.Run "Regsvr32 /s " & @ScriptDir & "\AutoItX3.dll ", 0, True
        Set cAutoit = CreateObject("AutoItXx3.dll") 'create a new instance
        'Set cAutoit = New AutoItX3Lib.AutoItX3 'create a new instance

The above should work if the dll is in the same directory as the script.

*** Matt @ MPCS

<{POST_SNAPBACK}>

Alas, this did not solve it either. The '@' gives a compile error as an invalid character.

Any other ideas??? :)

JPC :)

Share this post


Link to post
Share on other sites

Alas, this did not solve it either.  The '@' gives a compile error as an invalid character.

Any other ideas???  :)

JPC  :)

<{POST_SNAPBACK}>

Whoops forgot we are talking about VB not AutoIt... replace the @ScriptDir with App.Path.

*** Matt @ MPCS

Share this post


Link to post
Share on other sites

Whoops forgot we are talking about VB not AutoIt... replace the @ScriptDir with App.Path.

*** Matt @ MPCS

<{POST_SNAPBACK}>

Hi Matt,

Well, that moved the error... It is now erroring on this line:

Set cAutoit = CreateObject("AutoItX3.dll") 'create a new instance

I have also tried:

Set cAutoit = CreateObject(App.Path & "\AutoItX3.dll") 'create a new instance

This error has been a real PITA...

JPC :)

Share this post


Link to post
Share on other sites

The create object function sets a variables type not a filename. I also suggest declaring ALL variables before use. To be sure this is happening place "Option Explicit" at the top of the Module. Try the following code:

Dim intResult As Integer 'declare a variable to hold autoitx function return values
    Dim WshShell as Object
    Dim cAutoIt as Object  
    Set WshShell = CreateObject("WScript.Shell")
    WshShell.Run "Regsvr32 /s AutoItX3.dll ", 0, True
    Set cAutoit = CreateObject("AutoItX3Lib.AutoItX3") 'create a new instance

If you continue to get an error on this line then you may need to add it through the references dialog. Hope this helps!

*** Matt @ MPCS

Share this post


Link to post
Share on other sites

The create object function sets a variables type not a filename. I also suggest declaring ALL variables before use. To be sure this is happening place "Option Explicit"  at the top of the Module. Try the following code:

If you continue to get an error on this line then you may need to add it through the references dialog. Hope this helps!

*** Matt @ MPCS

<{POST_SNAPBACK}>

Hi Matt,

Thank you for sticking with me through this. I know it will end up being so simple, but...

I checked the references, "AutoItX3 1.0 Type Library" is already checked.

These two statements are at the top of the module as declarations:

Option Explicit
Dim cAutoIt As AutoItX3Lib.AutoItX3 'declare the AutoitX DLL

And then the sub is:

Private Sub cmdExit_Click()
    Dim intPress As Integer
    Dim intResult As Integer 'declare a variable to hold autoitx function return values
    Dim WshShell As Object
    Dim cAutoIt As Object
    If blnSaved = False Then
        intPress = MsgBox("Do you want to save before exiting?", vbYesNo, "Save Schedule?")
        If intPress = vbYes Then
            cmdSave_Click
        End If
    End If
    If blnSchChanged = True Then ' Schedule has changed
        Set WshShell = CreateObject("WScript.Shell")
        WshShell.Run "Regsvr32 /s " & App.Path & "\AutoItX3.dll ", 0, True
        Set cAutoIt = CreateObject("AutoItX3Lib.AutoItX3") 'create a new instance

        'check whether LF_Monitor is opened or not
        intResult = cAutoIt.WinExists("LF_Monitor ")
        If intResult = 1 Then ' result=1 means window exists, 0 means not exist
            cAutoIt.WinClose ("LF_Monitor ")

            Do 'make sure LF_Monitor is closed
                intResult = cAutoIt.WinExists("LF_Monitor ")
            Loop Until intResult = 0

            intResult = cAutoIt.Run("LF_Monitor") ' start LF_Monitor again
        Else
            intPress = MsgBox("Please remember that 'LF_Monitor.exe' must be running to process your schedule", vbOKOnly, "Reminder")
        End If

        Set cAutoIt = Nothing
    End If
    Unload Me
    End
End Sub

In addition to your suggestions, I have tried so many variations...I'm about ready to pull the plug. It is only being used to refresh the resulting schedule in a running utility. I had originally just put in a message telling them to do it manually. I'd rather do it for them, but...

JPC :)

Share this post


Link to post
Share on other sites

Hi Matt,

Thank you for sticking with me through this.  I know it will end up being so simple, but...

I checked the references, "AutoItX3 1.0 Type Library" is already checked.

These two statements are at the top of the module as declarations:

Option Explicit
Dim cAutoIt As AutoItX3Lib.AutoItX3 'declare the AutoitX DLL

And then the sub is:

Private Sub cmdExit_Click()
    Dim intPress As Integer
    Dim intResult As Integer 'declare a variable to hold autoitx function return values
    Dim WshShell As Object
    Dim cAutoIt As Object
    If blnSaved = False Then
        intPress = MsgBox("Do you want to save before exiting?", vbYesNo, "Save Schedule?")
        If intPress = vbYes Then
            cmdSave_Click
        End If
    End If
    If blnSchChanged = True Then ' Schedule has changed
        Set WshShell = CreateObject("WScript.Shell")
        WshShell.Run "Regsvr32 /s " & App.Path & "\AutoItX3.dll ", 0, True
        Set cAutoIt = CreateObject("AutoItX3Lib.AutoItX3") 'create a new instance

        'check whether LF_Monitor is opened or not
        intResult = cAutoIt.WinExists("LF_Monitor ")
        If intResult = 1 Then ' result=1 means window exists, 0 means not exist
            cAutoIt.WinClose ("LF_Monitor ")

            Do 'make sure LF_Monitor is closed
                intResult = cAutoIt.WinExists("LF_Monitor ")
            Loop Until intResult = 0

            intResult = cAutoIt.Run("LF_Monitor") ' start LF_Monitor again
        Else
            intPress = MsgBox("Please remember that 'LF_Monitor.exe' must be running to process your schedule", vbOKOnly, "Reminder")
        End If

        Set cAutoIt = Nothing
    End If
    Unload Me
    End
End Sub

In addition to your suggestions, I have tried so many variations...I'm about ready to pull the plug.  It is only being used to refresh the resulting schedule in a running utility.  I had originally just put in a message telling them to do it manually.  I'd rather do it for them, but...

JPC  :)

<{POST_SNAPBACK}>

Oh man, change this:

Option Explicit
Dim cAutoIt As AutoItX3Lib.AutoItX3 'declare the AutoitX DLL

to this:

Option Explicit
Dim cAutoIt As Object 'declare the AutoitX DLL

Then change yoursubroutine to :

Private Sub cmdExit_Click()
    Dim intPress As Integer
    Dim intResult As Integer 'declare a variable to hold autoitx function return values
    If blnSaved = False Then
        intPress = MsgBox("Do you want to save before exiting?", vbYesNo, "Save Schedule?")
        If intPress = vbYes Then
            cmdSave_Click
        End If
    End If
    If blnSchChanged = True Then ' Schedule has changed
        'check whether LF_Monitor is opened or not
        intResult = cAutoIt.WinExists("LF_Monitor ")
        If intResult = 1 Then ' result=1 means window exists, 0 means not exist
            cAutoIt.WinClose ("LF_Monitor ")

            Do 'make sure LF_Monitor is closed
                intResult = cAutoIt.WinExists("LF_Monitor ")
            Loop Until intResult = 0

            intResult = cAutoIt.Run("LF_Monitor") ' start LF_Monitor again
        Else
            intPress = MsgBox("Please remember that 'LF_Monitor.exe' must be running to process your schedule", vbOKOnly, "Reminder")
        End If

        Set cAutoIt = Nothing
    End If
    Unload Me
    End
End Sub

And add:

Private Sub Form_Load()
    Dim WshShell as Object
    Set WshShell = New CreateObject("WScript.Shell")
    WshShell.Run "Regsvr32 /s " & App.Path & "\AutoItX3.dll ", 0, True

    Set cAutoIt = New AutoItX3Lib.AutoItX3
End Sub

And make sure you have the DLL in the application directory or it won't have the file to register. I hope this works *fingers crossed*.

*** Matt @ MPCS

Share this post


Link to post
Share on other sites

Oh man, change this:

Option Explicit
Dim cAutoIt As AutoItX3Lib.AutoItX3 'declare the AutoitX DLL

to this:

Option Explicit
Dim cAutoIt As Object 'declare the AutoitX DLL

Then change yoursubroutine to :

Private Sub cmdExit_Click()
    Dim intPress As Integer
    Dim intResult As Integer 'declare a variable to hold autoitx function return values
    If blnSaved = False Then
        intPress = MsgBox("Do you want to save before exiting?", vbYesNo, "Save Schedule?")
        If intPress = vbYes Then
            cmdSave_Click
        End If
    End If
    If blnSchChanged = True Then ' Schedule has changed
        'check whether LF_Monitor is opened or not
        intResult = cAutoIt.WinExists("LF_Monitor ")
        If intResult = 1 Then ' result=1 means window exists, 0 means not exist
            cAutoIt.WinClose ("LF_Monitor ")

            Do 'make sure LF_Monitor is closed
                intResult = cAutoIt.WinExists("LF_Monitor ")
            Loop Until intResult = 0

            intResult = cAutoIt.Run("LF_Monitor") ' start LF_Monitor again
        Else
            intPress = MsgBox("Please remember that 'LF_Monitor.exe' must be running to process your schedule", vbOKOnly, "Reminder")
        End If

        Set cAutoIt = Nothing
    End If
    Unload Me
    End
End Sub

And add:

Private Sub Form_Load()
    Dim WshShell as Object
    Set WshShell = New CreateObject("WScript.Shell")
    WshShell.Run "Regsvr32 /s " & App.Path & "\AutoItX3.dll ", 0, True

    Set cAutoIt = New AutoItX3Lib.AutoItX3
End Sub

And make sure you have the DLL in the application directory or it won't have the file to register. I hope this works *fingers crossed*.

*** Matt @ MPCS

<{POST_SNAPBACK}>

Hi Matt,

That appears to have gotten it. I had to remove the "New" from the "Set WshShell" line, but it is running error free here. Now to try it with my user. I'll let you know if there is any problem for her...

Thank you VERY much!

JPC :)

Share this post


Link to post
Share on other sites

#14 ·  Posted (edited)

Hi Matt,

That appears to have gotten it.  I had to remove the "New" from the "Set WshShell" line, but it is running error free here.  Now to try it with my user.  I'll let you know if there is any problem for her...

Thank you VERY much!

JPC  :)

<{POST_SNAPBACK}>

NOTE: you may want to add a form close sub that contains cleanup code for the objects:

Private Sub Form_Load()
   Dim WshShell as Object
   Set WshShell = New CreateObject("WScript.Shell")
   WshShell.Run "Regsvr32 /s " & App.Path & "\AutoItX3.dll ", 0, True

   Set cAutoIt = New AutoItX3Lib.AutoItX3
   Set WshShell = Nothing
End Sub

Private Sub Form_QueryUnload(?)
    Set cAutoIt = Nothing
End Sub

Also try to run the code using the start with full compile before you share it to make sure there aren't any syntax errors that you may have missed.

*** Matt @ MPCS

Edited by Matt @ MPCS

Share this post


Link to post
Share on other sites

#15 ·  Posted (edited)

NOTE: you may want to add a form close sub that contains cleanup code for the objects:

Private Sub Form_Load()
   Dim WshShell as Object
   Set WshShell = New CreateObject("WScript.Shell")
   WshShell.Run "Regsvr32 /s " & App.Path & "\AutoItX3.dll ", 0, True

   Set cAutoIt = New AutoItX3Lib.AutoItX3
   Set WshShell = Nothing
End Sub

Private Sub Form_QueryUnload(?)
    Set cAutoIt = Nothing
End Sub

Also try to run the code using the start with full compile before you share it to make sure there aren't any syntax errors that you may have missed.

*** Matt @ MPCS

<{POST_SNAPBACK}>

Argh! Two users just reported in. They are both now getting the error without the program ever showing up, meaning that it is in Private Sub Form_Load(). Is there something they could have set on their machines that could be causing this? I have three machines here with three different versions of windows and the compiled code worked on all three of them without a hitch. :)

JPC :)

Edited by Just_Plain_Cool

Share this post


Link to post
Share on other sites

For testing purposes I would write a batch script that registers the dll and remove that code from the Form_Load(). Beyond that I am as helpless as you... try surfing the net to see if you get anything.

*** Matt @ MPCS

Share this post


Link to post
Share on other sites

For testing purposes I would write a batch script that registers the dll and remove that code from the Form_Load(). Beyond that I am as helpless as you... try surfing the net to see if you get anything.

*** Matt @ MPCS

<{POST_SNAPBACK}>

Hi Matt,

You are on the money. The problem is that the dll is not being registered. It ran locally because I had registered the dll manually before I added code to register the dll. I have now unregistered the dll on my machines and the code errors on all of them. That means that something is wrong in this code:

Dim WshShell As Object
    Set WshShell = CreateObject("WScript.Shell") 'create WshShell object
    WshShell.Run "Regsvr32 /s " & App.Path & "\AutoItX3.dll ", 0, True

    Set cAutoIt = New AutoItX3Lib.AutoItX3
    
    Set WshShell = Nothing 'delete WshShell object

JPC :)

Share this post


Link to post
Share on other sites

#18 ·  Posted (edited)

Hi Matt,

You are on the money.  The problem is that the dll is not being registered.  It ran locally because I had registered the dll manually before I added code to register the dll.  I have now unregistered the dll on my machines and the code errors on all of them.  That means that something is wrong in this code:

Dim WshShell As Object
    Set WshShell = CreateObject("WScript.Shell") 'create WshShell object
    WshShell.Run "Regsvr32 /s " & App.Path & "\AutoItX3.dll ", 0, True

    Set cAutoIt = New AutoItX3Lib.AutoItX3
    
    Set WshShell = Nothing 'delete WshShell object

JPC  :)

<{POST_SNAPBACK}>

I figured as much, I am going to refer you to some online source that will register the library using the Win API rather than assuming regsrvr32 is working properly. I have only used this code once but I don't recall if it was buggy. There is also a small forum at the bottom where people list the problems and praise about it.

Here it is!

This should put you on the right direction.

*** Matt @ MPCS

EDIT: Found a shorter version of that code. Copy this into a module:

Public Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long
Public Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
Public Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, ByVal lpProcName As String) As Long


Public Sub RegisterServer(lngHwnd As Long, strDllServerPath As String, boolRegister As Boolean)

 ' lngHwnd is hWnd of some form in your project.

On Error Resume Next

Dim lngResult As Long
Dim lngProcAddress As Long
dim strProc As String

 ' Check if file have length > 0
If FileLen(strDllServerPath) > 0 Then
    ' Load file for use in our app
   lngResult = LoadLibrary(strDllServerPath)
    ' If result differs from 0 then loading was successful
   If lngResult <> 0 Then
       ' If we must register
      If boolRegister = True Then
         strProc="DllRegisterServer"
      Else ' If we must unregister
         strProc="DllUnregisterServer"
      End If
       ' Get procedure address
      lngProcAddress = GetProcAddress(lngResult, strProc)
       ' Call the appropriate procedure in DLL file (DllRegisterServer or DllUnregisterServer)
       ' It's address is in lngProcAddress variable
      CallWindowProc lngProcAddress, lngHwnd, ByVal 0&, ByVal 0&, ByVal 0&
       ' Unload file
      FreeLibrary lngResult
   End If
End If

End Function

To register DLL use this:

RegisterServer Form1.hWnd,"C:\Windows\System\Mydll.dll",True

To unregister DLL use this:

RegisterServer Form1.hWnd,"C:\Windows\System\Mydll.dll",False

This code came from here.

Edited by Matt @ MPCS

Share this post


Link to post
Share on other sites

I figured as much, I am going to refer you to some online source that will register the library using the Win API rather than assuming regsrvr32 is working properly. I have only used this code once but I don't recall if it was buggy. There is also a small forum at the bottom where people list the problems and praise about it.

Here it is!

This should put you on the right direction.

*** Matt @ MPCS

EDIT: Found a shorter version of that code. Copy this into a module:

Public Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long
Public Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
Public Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, ByVal lpProcName As String) As Long
Public Sub RegisterServer(lngHwnd As Long, strDllServerPath As String, boolRegister As Boolean)

 ' lngHwnd is hWnd of some form in your project.

On Error Resume Next

Dim lngResult As Long
Dim lngProcAddress As Long
dim strProc As String

 ' Check if file have length > 0
If FileLen(strDllServerPath) > 0 Then
    ' Load file for use in our app
   lngResult = LoadLibrary(strDllServerPath)
    ' If result differs from 0 then loading was successful
   If lngResult <> 0 Then
       ' If we must register
      If boolRegister = True Then
         strProc="DllRegisterServer"
      Else ' If we must unregister
         strProc="DllUnregisterServer"
      End If
       ' Get procedure address
      lngProcAddress = GetProcAddress(lngResult, strProc)
       ' Call the appropriate procedure in DLL file (DllRegisterServer or DllUnregisterServer)
       ' It's address is in lngProcAddress variable
      CallWindowProc lngProcAddress, lngHwnd, ByVal 0&, ByVal 0&, ByVal 0&
       ' Unload file
      FreeLibrary lngResult
   End If
End If

End Function

To register DLL use this:

RegisterServer Form1.hWnd,"C:\Windows\System\Mydll.dll",True

To unregister DLL use this:

RegisterServer Form1.hWnd,"C:\Windows\System\Mydll.dll",False

This code came from here.

<{POST_SNAPBACK}>

I'm thinking of taking an easy way out. The code you have been helping with is a schedule manager for a set of interacting AutoIt scripts. I could run a compiled script from the installer that registered the dll and then when they use the main script, have it delete delete the script that installs the dll. Then the code doesn't have to be in the .exe. What do you think? I'd have to learn to use @comspec, to do it, but...

JPC :)

Share this post


Link to post
Share on other sites

I don't think that will simplify things for you. That just stretches the problem to not only include your current issues within VB but then you will be running into debugging your autoit scripts on top of it. I mean it should work but it will make your application less portable. If you included the dll registration directly into the exe then all you would have to do is pass the scripts to be run by the sceduler... the scheduler itself... and the dll files required for VB. If you wanted to enclode that all into a single executable it would be possible if you used my EXE wrapper shared on the Scripts and Scraps forum.

Overall it comes down to that it is your application... you are the developer so you have to make these decisions. There are too many factors that I am unaware of that I don't know that I can even make a decent suggestion for this question.

This post probably isn't going to get you any closer to your goal... just make a decision.

*** Matt @ MPCS

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