Sign in to follow this  
Followers 0
livewire

VB ActiveX Controls

2 posts in this topic

#1 ·  Posted (edited)

This post will have some examples of how to use ActiveX controls in AutoIt3 (use latest beta).

To use, you will need to register the ActiveX control (**using other people's ActiveX control is risky because of malware/virus issues...hence...use other people's controls at your own risk...I will post my source).

You can use this to register/unregister ActiveX controls.

#include <GUIConstants.au3>

Dim $dll_file = ""

$Form1 = GUICreate("RegsvrGUI", 400, 110, (@DesktopWidth - 400) / 2, (@DesktopHeight - 110) / 2)
$Label1 = GUICtrlCreateLabel("File: No File Selected", 16, 10, 400, 15)
$Group1 = GUICtrlCreateGroup("", 16, 30, 105, 73)
$Radio1 = GUICtrlCreateRadio("Register", 32, 40, 80, 25)
$Radio2 = GUICtrlCreateRadio("Unregister", 32, 70, 80, 25)
$Button1 = GUICtrlCreateButton("Browse", 136, 40, 57, 25)
$Button2 = GUICtrlCreateButton("OK", 136, 70, 59, 25)

GUICtrlSetState($Radio1,$GUI_CHECKED)
GUISetState(@SW_SHOW)

While 1
    $msg = GuiGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
        Exit
    Case $msg = $Button1
        $dll_file = FileOpenDialog("Select dll/ocx to register/unregister",@ScriptDir,"Dynamic Linked Library (*.dll;*.ocx)",1)
        If Not @error Then GUICtrlSetData($Label1,"File: " & $dll_file)
    Case $msg = $Button2
        If $dll_file = "" Then
            MsgBox(0,"RegsvrGUI","Please select a file to register/unregister!")
        Else
            ExitLoop
        EndIf   
    Case Else
     ;;;;;;;
    EndSelect
WEnd


If GUICtrlRead($Radio1) = $GUI_CHECKED Then
    RunWait('regsvr32.exe /s "' & $dll_file & '"')
Else
    RunWait('regsvr32.exe /s /u "' & $dll_file & '"')
EndIf
MsgBox(0,"Testing","Registration complete")

I created some ActiveX controls in Visual Basic 6 (VB6) with the following properties (I will add/correct as necessary). Try 'em out...you get more events than using AutoIt3 native controls.

[VBControls.CommandButton]
    Events:
        Click()
        GotFocus()
        KeyDown(KeyCode As Integer, Shift As Integer)
        KeyPress(KeyAscii As Integer)
        KeyUp(KeyCode As Integer, Shift As Integer)
        LostFocus()
        MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
        MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
        MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Functions:
        SetBkColor(color As Long)
        SetCaption(caption As String)

[VBControls.Timer]
    Events:
        Fired()
    Functions:
        Enable()
        Disable()
        SetInterval(interval As long)

[VBControls.TextBox]
    Events:
        Change()
        Click()
        DblClick()
        GotFocus()
        KeyDown(KeyCode As Integer, Shift As Integer)
        KeyPress(KeyAscii As Integer)
        KeyUp(KeyCode As Integer, Shift As Integer)
        LostFocus()
        MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
        MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
        MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Functions:
        SetText(txt As String)
        GetText() As String

[VBControls.PictureBox]
    Events:
        Change()
        Click()
        DblClick()
        GotFocus()
        KeyDown(KeyCode As Integer, Shift As Integer)
        KeyPress(KeyAscii As Integer)
        KeyUp(KeyCode As Integer, Shift As Integer)
        LostFocus()
        MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
        MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
        MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
        Paint()
    Functions:
        SetBkColor(color As Long)
        Line(StartX As Single, StartY As Single, EndX As Single, EndY As Single, color As Long)
        SetPixel(X As Single, Y As Single, color As Long)

VBControls.zip

Edited by livewire

Share this post


Link to post
Share on other sites



#2 ·  Posted (edited)

*Fixed initial post so that TextBox initializes text to ""

*Fixed initial post so that Button initializes text to ""

Try this example:

#include <GuiConstants.au3>

Global $num = 0

GuiCreate("MyGUI", 300, 300 ,(@DesktopWidth - 300)/2, (@DesktopHeight - 300)/2, BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS))

$Button = ObjCreate("VBControls.CommandButton")
$Input = ObjCreate("VBControls.TextBox")

GUICtrlCreateObj($Button, 10, 10, 100, 30)
GUICtrlCreateObj($Input, 10, 50, 100, 20)

ObjEvent($Button,"Button_")
ObjEvent($Input,"Input_")

$Button.SetBkColor(0xFF0000)

GuiSetState()

While 1
    $msg = GuiGetMsg()
    Select
        Case $msg = $GUI_EVENT_CLOSE
            ExitLoop
        Case Else
          ;;;
    EndSelect
WEnd

Func Button_Click()
    MsgBox(0,"Testing","Button clicked" & @CRLF & _
                        "$Input.GetText = " & $Input.GetText)
EndFunc

Func Input_Change()
    $Button.SetCaption($Input.GetText)
EndFunc
Edited by livewire

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