Jump to content

Recommended Posts

Posted (edited)

I wanted to display some KPIs of the company I’m working for and other management communications altogether with more fancy stuff on a large 42 inch LCD monitor, preferably simultaneously as the screen resolution of 1920 x 1080 permits

This is version 1.0 of the presentation manager I wrote.

The ini file for the demo will pick-up the files from the Internet and display the result on a 1280 x 960 resolution. If your screen has a lower resolution, some of the results will be shown to your neighbours =:mellow: but it will still function.

The different GUIs are managed in a parallel process (each of them can display during variable times and position.

Read the ini file for more info

I didn’t make an ini management module (yet)

Quit the application via the tray menu.

Let me know what you think.

GreenCan

Presentation Manager.au3

#include <GUIConstants.au3>
#include <WindowsConstants.au3>
#Include <Array.au3>
#include <Misc.au3>
#include <ButtonConstants.au3>
#include <Timers.au3>
#include <Date.au3>

If  _Singleton(@ScriptName,1) =  0 Then
    Opt("TrayIconHide", 1)
    Exit
EndIf
Global $version = "1.00" , $VersionDate = "Februari 2010"
Local $_Width, $_Height, $_Left, $_Top, $_Offset_Width, $_Offset_Height, $_Offset_Left, $_Offset_Top

TraySetToolTip ("Presentation Manager")

#Region Tray settings
Opt("TrayMenuMode", 1)
Opt("TrayOnEventMode", 1)

TraySetClick(9+4)   ; Only Primary mouse button will show the tray menu.
$About_tray = TrayCreateItem("About")
TrayItemSetOnEvent(-1, "AboutWindow")
TrayCreateItem("")
$exit_tray = TrayCreateItem("Quit Presentation Manager")
TrayItemSetOnEvent(-1, "Quit")

TraySetState(1)
#EndRegion Tray settings

; ini file expected in the same directory as the script
$iniFile = @ScriptDir & "\Presentation Manager.ini"

; the different html loops will be in this array
Global $BrowserInstances = IniRead($inifile,"Global","Instances","")
If @error Then
    MsgBox(48, "Error", "Error occurred while trying to open " & $inifile)
    Exit
ElseIf $BrowserInstances = "" Then
    MsgBox(48, "Error", "Instances not defined")
    Exit        
EndIf
$BrowserInstanceNames = StringSplit($BrowserInstances,",",2)
$BrowserInstances = StringSplit($BrowserInstances,",",2)

For $runs = 0 to UBound($BrowserInstances)-1  ; must be without space to work
    $BrowserInstances[$runs] = StringStripWS($BrowserInstances[$runs],3)
    $BrowserInstanceNames[$runs] = StringStripWS($BrowserInstanceNames[$runs],3)    
Next


Dim $GUIActiveX[UBound($BrowserInstances)], $GUI[UBound($BrowserInstances)]
For $runs = 0 to UBound($BrowserInstanceNames)-1
    ; For Embedding Mozilla Object inside an AutoIt GUI, download Mozilla ActiveX Control (search on the Internet)
    ; Syntax: $BrowserObject1 = ObjCreate("Mozilla.Browser") ; Get the Mozilla ActiveX instance

    $BrowserInstances[$runs] = ObjCreate("Shell.Explorer.2") ; Get the Internet Explorer ActiveX instance
    If Not IsObj($BrowserInstances[$runs]) Then
        Msgbox(0,"Browser Object","Can't find Explorer ActiveX Control")
        Exit
    EndIf
    $_Width = IniRead($inifile,$BrowserInstanceNames[$runs] ,"Width",0)
    $_Height = IniRead($inifile,$BrowserInstanceNames[$runs] ,"Height",0)
    $_Left = IniRead($inifile,$BrowserInstanceNames[$runs] ,"Left",0)
    $_Top = IniRead($inifile,$BrowserInstanceNames[$runs] ,"Top",0)
    $_Offset_Width = IniRead($inifile,$BrowserInstanceNames[$runs] ,"Offset_Width",0)
    $_Offset_Height = IniRead($inifile,$BrowserInstanceNames[$runs] ,"Offset_Height",0)
    $_Offset_Left = IniRead($inifile,$BrowserInstanceNames[$runs] ,"Offset_Left",0)
    $_Offset_Top = IniRead($inifile,$BrowserInstanceNames[$runs] ,"Offset_Top",0)   
    ; Create a borderless GUI & Browser instance for output
    $GUI[$runs]  = GUICreate ( $BrowserInstanceNames[$runs] , $_Width, $_Height, $_Left, $_Top,  $WS_POPUP  )
    $GUIActiveX[$runs] = GUICtrlCreateObj($BrowserInstances[$runs], $_Offset_Width, $_Offset_Height, $_Width + $_Offset_Left, $_Height + $_Offset_Top )
    ; all GUI are hidden by Default
    GUISetState (@SW_HIDE ,$GUI[$runs])
Next

; read the parallel sequences to manage
Local $Sequences = IniRead($inifile,"Global","Sequences","")
$Sequences = StringSplit($Sequences,",",2)
Dim $SequencePageHolder[UBound($Sequences)][3]
Dim $Pages[UBound($Sequences)]
Dim $keepInstance[UBound($Sequences)][2]
For $runs = 0 to UBound($Sequences)-1  
    $SequencePageHolder[$runs][0] = 1  ; sequence
    $SequencePageHolder[$runs][1] = TimerInit()
    $SequencePageHolder[$runs][2] = 1
    ; put the sequence elements in an array
    $Pages[$runs] = IniReadSection($inifile, $Sequences[$runs])
    ; keep the active instance per sequence in a table
    $keepInstance[$runs][0] = StringStripWS($Sequences[$runs],3)    ; The sequence name
    $Page = split_it($Pages[$runs],$SequencePageHolder[$runs][0])
    $keepInstance[$runs][1] = $Page[0]                              ; The active GUI
Next

$first_pass = True
While 1

    For $runs = 0 to UBound($Sequences)-1  
        $Sequences[$runs] = StringStripWS($Sequences[$runs],3) ; must be without space to work
        
        $Page = split_it($Pages[$runs],$SequencePageHolder[$runs][0])

        If $SequencePageHolder[$runs][0] = $SequencePageHolder[$runs][2] Or $first_pass = True Then
            If TimerDiff($SequencePageHolder[$runs][1]) > ($Page[2] * 1000) Or $first_pass = True Then

                ; check if $BrowserInstanceNames changes and hide the previous one
                $Index = _ArraySearch($keepInstance, $Sequences[$runs], 0, 0, 0, 0, 1, 0)
                If $Page[0] <>  $keepInstance[$Index][1] Then
                    $inst = _ArraySearch($BrowserInstanceNames,$keepInstance[$Index][1])
                    GUISetState (@SW_HIDE ,$GUI[$inst]) 
                    $keepInstance[$Index][1] = $Page[0]
                EndIf
    
                ;ConsoleWrite($Sequences[$runs] & @CR & $SequencePageHolder[$runs][0] & @CR & $Page[0] & @CR &  $Page[1] & @CR &  $Page[2] & @CR & TimerDiff($SequencePageHolder[$runs][1]) & " = " & ($Page[2] / 1) & @CR & @CR)           
                $SequencePageHolder[$runs][1] = TimerInit()  ; re-initilize timer

                If $SequencePageHolder[$runs][0] < UBound($Pages[$runs])-1 Or $first_pass = True Then 
                    $SequencePageHolder[$runs][2] += 1
                Else
                    $SequencePageHolder[$runs][2] = 1               
                EndIf           

                ; show the brwoser instance (if hidden) and display the page
                $inst = _ArraySearch($BrowserInstanceNames,$Page[0])
                $BrowserInstances[$inst].navigate($Page[1])
                GUISetState (@SW_SHOW ,$GUI[$inst])                 
            EndIf
        EndIf
        If $SequencePageHolder[$runs][0] < UBound($Pages[$runs])-1 Then 
            $SequencePageHolder[$runs][0] += 1
        Else
            $SequencePageHolder[$runs][0] = 1
        EndIf           
        
    Next    
    $first_pass = False
    ;sleep(2000) ; let the processor cool down =:)
    _ReduceMemory() 
WEnd
#FUNCTION# ==============================================================
Func split_it($Array,$item)
    Return StringSplit($Array[$item][1],",",2) 
EndFunc ;==>split_it
#FUNCTION# ==============================================================
Func Quit()
    For $runs = 0 to UBound($BrowserInstanceNames)-1
        $BrowserInstances[$runs] = 0
        GUIDelete($GUI[$runs])
    Next
    Exit
EndFunc  ;==>Quit
#FUNCTION# ==============================================================
Func _ReduceMemory()
    Local $dll_mem = DllOpen(@SystemDir & "\psapi.dll")
    Local $ai_Return = DllCall($dll_mem, 'int', 'EmptyWorkingSet', 'long', -1)
    If @error Then Return SetError(@error, @error, 1)
    Return $ai_Return[0]
EndFunc   ;==>_ReduceMemory
#FUNCTION# ==============================================================
Func AboutWindow()
    Local $window_width = 250, $window_heigth = 110, $msg4

    Local $About = GuiCreate("             Presentation Manager", $window_width, $window_heigth, -1,-1,$WS_CAPTION, $WS_EX_TOPMOST)
    GuiCtrlCreateLabel("Author: A. Goethals" & @CR & "Ver " & $version & @CR & $VersionDate, ($window_width-120)/2, 10,120,50)
    GuiCtrlCreateLabel("", 10,55, $window_width - 20,1) ; separator
    GuiCtrlSetBkColor(-1, 0xffffff)
    Local $ok = GUICtrlCreateButton("OK", 10, $window_heigth - 40, 70,22, $BS_DEFPUSHBUTTON )

    #Region Perforated Image
    ; Perforated Image
    # ==> Start
    Local $_Left_pos, $_Top_pos, $_GUI_NAME
    $_Left_pos = $window_width - 145; 338 ; Replace with correct position
    $_Top_pos = $window_heigth - 20; 521 ; Replace with correct position
    _GuiImageHole($About, $_Left_pos, $_Top_pos, 136, 41)
    # <== End
    #EndRegion Perforated Image

    GUISetState()
    While 1
        $msg4 = GUIGetMsg()
        Select
        Case $msg4 = $GUI_EVENT_CLOSE
            ExitLoop
        Case $msg4 = $ok
            ExitLoop
        EndSelect
    WEnd
    GUIDelete($About)
    Return
EndFunc  ;==>AboutWindow
#FUNCTION# ==============================================================
#Region Perforated Image
#comments-start
    The lines below will generate the perforated image (bewteen start and end)
    Move these lines into your GUI code, usually just before GUISetState()
    Don't forget to fill in the correct coordinates for $Left_pos, $Top_pos
    and enter the GUI Window Handle in the last line

# ==> Start
Local $_Left_pos, $_Top_pos, $_GUI_NAME
$_Left_pos = 10 ; Replace with correct position
$_Top_pos = 10 ; Replace with correct position
$_GUI_NAME = 'The name of your GUI window'
_GuiImageHole($_GUI_NAME, $_Left_pos, $_Top_pos, 136, 45)
# <== End

#comments-end

#FUNCTION# ==============================================================
Func _GuiImageHole($window_handle, $pos_x, $pos_y,$Image_Width ,$Image_Height)
    Local $aClassList, $aM_Mask, $aMask
    #Region picture array
    Local $PictArray[262] = [ _
    '3,1,48,1','50,1,137,1','3,2,48,2','50,2,93,2','94,2,137,2','1,3,2,3','4,3,47,3','49,3,92,3','95,3,137,3','1,4,3,4','5,4,25,4','28,4,46,4','48,4,92,4','95,4,137,4','1,5,3,5','5,5,25,5','29,5,45,5','48,5,92,5','95,5,137,5','1,6,4,6', _
    '6,6,24,6','30,6,45,6','47,6,92,6','96,6,137,6','1,7,5,7','7,7,9,7','10,7,23,7','30,7,38,7','42,7,44,7','46,7,93,7','96,7,137,7','1,8,6,8','11,8,24,8','29,8,37,8','45,8,66,8','68,8,93,8','96,8,137,8','1,9,6,9','13,9,24,9','30,9,36,9', _
    '44,9,66,9','69,9,87,9','91,9,93,9','97,9,137,9','1,10,6,10','13,10,23,10','31,10,37,10','43,10,65,10','71,10,86,10','92,10,93,10','97,10,137,10','1,11,6,11','12,11,22,11','32,11,35,11','42,11,65,11','71,11,86,11','92,11,93,11','97,11,137,11','1,12,6,12','15,12,22,12', _
    '32,12,34,12','43,12,50,12','54,12,65,12','70,12,86,12','97,12,137,12','1,13,5,13','18,13,21,13','32,13,33,13','44,13,49,13','55,13,65,13','72,13,86,13','96,13,137,13','1,14,5,14','15,14,16,14','44,14,48,14','55,14,64,14','73,14,86,14','96,14,137,14','1,15,4,15','15,15,20,15', _
    '45,15,48,15','54,15,64,15','74,15,85,15','96,15,137,15','1,16,4,16','17,16,19,16','46,16,48,16','55,16,63,16','75,16,84,16','96,16,137,16','1,17,5,17','17,17,18,17','46,17,47,17','56,17,63,17','76,17,84,17','97,17,137,17','1,18,5,18','17,18,18,18','46,18,47,18','56,18,63,18', _
    '77,18,84,18','97,18,137,18','1,19,6,19','16,19,18,19','33,19,34,19','57,19,63,19','77,19,84,19','98,19,137,19','1,20,6,20','16,20,17,20','32,20,34,20','58,20,63,20','77,20,84,20','98,20,137,20','1,21,6,21','16,21,17,21','32,21,34,21','58,21,63,21','78,21,83,21','98,21,137,21', _
    '1,22,6,22','32,22,34,22','58,22,63,22','78,22,83,22','98,22,137,22','1,23,6,23','57,23,64,23','78,23,82,23','98,23,137,23','1,24,6,24','57,24,65,24','78,24,82,24','98,24,137,24','1,25,6,25','58,25,65,25','77,25,82,25','99,25,137,25','1,26,6,26','58,26,64,26','76,26,83,26', _
    '99,26,137,26','1,27,7,27','32,27,33,27','46,27,47,27','58,27,64,27','77,27,83,27','100,27,137,27','1,28,7,28','31,28,33,28','46,28,47,28','58,28,65,28','77,28,83,28','99,28,137,28','2,29,7,29','31,29,33,29','59,29,65,29','78,29,84,29','98,29,137,29','7,30,8,30','16,30,18,30', _
    '31,30,33,30','46,30,47,30','59,30,65,30','79,30,84,30','96,30,137,30','8,31,10,31','15,31,18,31','25,31,26,31','31,31,34,31','45,31,47,31','60,31,62,31','79,31,85,31','95,31,137,31','3,32,6,32','8,32,10,32','15,32,21,32','25,32,26,32','33,32,34,32','42,32,48,32','60,32,62,32', _
    '78,32,85,32','95,32,137,32','34,33,35,33','39,33,40,33','42,33,49,33','60,33,62,33','76,33,86,33','95,33,120,33','125,33,130,33','135,33,137,33','38,34,39,34','44,34,51,34','76,34,88,34','95,34,122,34','125,34,129,34','131,34,134,34','135,34,137,34','47,35,51,35','55,35,60,35','64,35,65,35', _
    '76,35,88,35','95,35,121,35','123,35,124,35','126,35,128,35','130,35,134,35','135,35,137,35','49,36,51,36','56,36,62,36','65,36,66,36','69,36,70,36','76,36,81,36','83,36,88,36','95,36,120,36','122,36,124,36','126,36,127,36','129,36,137,36','56,37,58,37','66,37,70,37','76,37,78,37','84,37,88,37', _
    '95,37,120,37','122,37,124,37','126,37,127,37','129,37,131,37','135,37,137,37','67,38,71,38','77,38,79,38','84,38,89,38','95,38,119,38','126,38,127,38','129,38,132,38','134,38,137,38','32,39,33,39','85,39,89,39','95,39,118,39','120,39,124,39','126,39,127,39','129,39,132,39','134,39,137,39','18,40,24,40', _
    '26,40,41,40','86,40,89,40','95,40,117,40','121,40,123,40','127,40,128,40','134,40,137,40','14,41,46,41','85,41,89,41','95,41,137,41','9,42,52,42','88,42,89,42','97,42,137,42','7,43,55,43','57,43,59,43','62,43,65,43','67,43,69,43','70,43,73,43','100,43,137,43','6,44,79,44','100,44,137,44', _
    '4,45,81,45','100,45,137,45']
    #EndRegion picture array
    ; get the size of the active window
    Local $size = WinGetClientSize($window_handle)
    Local $Window_width = $size[0]
    Local $Window_height = $size[1]+33 ; including the title bar
    ; First hide the window
    $aClassList = StringSplit(_WinGetClassListEx($window_handle), @LF)
    $aM_Mask = DllCall('gdi32.dll', 'long', 'CreateRectRgn', 'long', 0, 'long', 0, 'long', 0, 'long', 0)
    ; rectangle A - left side
    $aMask = DllCall('gdi32.dll', 'long', 'CreateRectRgn', 'long', 0, 'long', 0, 'long', $pos_x, 'long', $Window_height)
    DllCall('gdi32.dll', 'long', 'CombineRgn', 'long', $aM_Mask[0], 'long', $aMask[0], 'long', $aM_Mask[0], 'int', 2)
    ; rectangle B - Top
    $aMask = DllCall('gdi32.dll', 'long', 'CreateRectRgn', 'long', 0, 'long', 0, 'long', $Window_width, 'long', $pos_y)
    DllCall('gdi32.dll', 'long', 'CombineRgn', 'long', $aM_Mask[0], 'long', $aMask[0], 'long', $aM_Mask[0], 'int', 2)
    ; rectangle C - Right side
    $aMask = DllCall('gdi32.dll', 'long', 'CreateRectRgn', 'long', $pos_x  + $Image_Width , 'long', 0 , 'long', $Window_width + 30, 'long', $Window_height)
    DllCall('gdi32.dll', 'long', 'CombineRgn', 'long', $aM_Mask[0], 'long', $aMask[0], 'long', $aM_Mask[0], 'int', 2)
    ; rectangle D - Bottom
    $aMask = DllCall('gdi32.dll', 'long', 'CreateRectRgn', 'long', 0 , 'long', $pos_y + $Image_Height, 'long', $Window_width, 'long', $Window_height)
    DllCall('gdi32.dll', 'long', 'CombineRgn', 'long', $aM_Mask[0], 'long', $aMask[0], 'long', $aM_Mask[0], 'int', 2)
    ; now unhide all regions as defined  in array $PictArray
    For $i = 0 To (UBound($PictArray) - 1)
        $Block_value = StringSplit($PictArray[$i],',')
        $aMask = DllCall('gdi32.dll', 'long', 'CreateRectRgn', 'long', $pos_x + $Block_value[1] - 1 , 'long', $pos_y + $Block_value[2], 'long', $pos_x + $Block_value[3], 'long', $pos_y + $Block_value[4] -1)
        DllCall('gdi32.dll', 'long', 'CombineRgn', 'long', $aM_Mask[0], 'long', $aMask[0], 'long', $aM_Mask[0], 'int', 2)
    Next
    DllCall('user32.dll', 'long', 'SetWindowRgn', 'hwnd', $window_handle, 'long', $aM_Mask[0], 'int', 1)
    $PictArray='' ; empty array
EndFunc  ;==>_GuiImageHole
#FUNCTION# ==============================================================
Func _WinGetClassListEx($sTitle)
    Local $sClassList = WinGetClassList($sTitle)
    Local $aClassList = StringSplit($sClassList, @LF)
    Local $sRetClassList = '', $sHold_List = '|'
    Local $aiInHold, $iInHold
    For $i = 1 To UBound($aClassList) - 1
        If $aClassList[$i] = '' Then ContinueLoop
        If StringRegExp($sHold_List, '\|' & $aClassList[$i] & '~(\d+)\|') Then
            $aiInHold = StringRegExp($sHold_List, '.*\|' & $aClassList[$i] & '~(\d+)\|.*', 1)
            $iInHold = Number($aiInHold[UBound($aiInHold)-1])
            If $iInHold = 0 Then $iInHold += 1
            $aClassList[$i] &= '~' & $iInHold + 1
            $sHold_List &= $aClassList[$i] & '|'
            $sRetClassList &= $aClassList[$i] & @LF
        Else
            $aClassList[$i] &= '~1'
            $sHold_List &= $aClassList[$i] & '|'
            $sRetClassList &= $aClassList[$i] & @LF
        EndIf
    Next
    Return StringReplace(StringStripWS($sRetClassList, 3), '~', '')
EndFunc ;==>_WinGetClassListEx
#FUNCTION# ==============================================================
#EndRegion Perforated Image
#EndRegion Functions

Presentation Manager.ini

[Global]
# Information

# SECTION [Global]
# Instances:
#       These are the different html instances that are controlled by Presentation Manager
#       You need at least one instance and another one for each different sized GUIbox you want to display
#           You don't have to use all the Instances that you create, just let them sleep in your ini until you need them
#       Example: (The names can be freely choosen)

#           Instances= HomeDIA_Show, HomeWeather, HomeWeatherMap, HomePictures

#       An Instance refers to a section of the 'same' name containing:
#       1.  Position and size of the GUI to display
#       2. Offset position of the url (the ActiveX Object) inside the GUI Window 

#       Example: (The name has to be the same as refered by the Instances line)

#           [HomeDIA_Show]
#           Width=750
#           Height=600
#           Left=20
#           Top=20

#           Offset_Left=+50
#           Offset_Top=+180
#           Offset_Width=-20
#           Offset_Height=-50

# Sequences:
#       These are the different GUI assemblies that will display simultaneously on the monitor
#       The Sequences will run and refresh in parallel (in a way), independently from each other
#           Why is a sequence necessary? 
#           You can run different urls with different GUI Window sizes on the same position of your monitor
#           If the Instance name changes, the previous GUI will be hidden (to avoid overlaying)
#       You can create as many Sequences as you like (but you will need an extra large monitor to display all these GUIs at the same moment
#       Example: (The names can be freely choosen)

#           Sequences=RH_UP, LH_UP, LH_LOW, LOW_CENTER
#       A Sequence refers to a section of the same name containing one or more urls

#       Example: (The name has to be the same as refered by the Sequences line)
#           [LOW_CENTER]
#           url=HomePictures2,http://home.base.be/goethals.baeyens/Gallery01/Images/133_small.jpg,2
#           url=HomePictures2,http://home.base.be/goethals.baeyens/Gallery01/Images/DSCF2950_small.jpg,2
#           url=HomePictures2,http://home.base.be/goethals.baeyens/Gallery01/Images/DSCF0970_small.jpg,2
#           url=HomePictures1,http://home.base.be/goethals.baeyens/Gallery01/Images/DSCF2005_small.jpg,2

#       each url line is composed of 3 elements:
#           1. Name of the instance
#           2. url (either http, can also be a directory on your local PC or network server
#           3. display time in milliseconds
#               Don't worry about the the ini key always being the same, the key is not used.
# By GreenCan


Instances=HomeDIA_Show, HomeWeather, HomeWeatherMap, HomePictures1, HomePictures2, PPT
Sequences=RH_UP, LH_UP, LH_LOW, LOW_CENTER

[LH_UP]
url=HomeWeather,http://news.bbc.co.uk/weather/forecast/37,300

[LH_LOW]
url=HomeWeatherMap,http://weer.nieuws.nl.msn.com/region.aspx?wealocations=Brussels+Hoofdstedelijk+Gewest,240

[RH_UP]
url=HomeDIA_Show,http://home.base.be/goethals.baeyens/slideshow2.html,120

[LOW_CENTER]
url=PPT,http://home.base.be/goethals.baeyens/ppt/demo_pg1.htm,4
url=PPT,http://home.base.be/goethals.baeyens/ppt/demo_pg2.htm,4
url=PPT,http://home.base.be/goethals.baeyens/ppt/demo_pg3.htm,4
url=PPT,http://home.base.be/goethals.baeyens/ppt/demo_pg4.htm,4
url=PPT,http://home.base.be/goethals.baeyens/ppt/demo_pg5.htm,4
url=HomePictures2,http://home.base.be/goethals.baeyens/Gallery01/Images/133_small.jpg,2
url=HomePictures2,http://home.base.be/goethals.baeyens/Gallery01/Images/DSCF2950_small.jpg,2
url=HomePictures2,http://home.base.be/goethals.baeyens/Gallery01/Images/DSCF0970_small.jpg,2
url=HomePictures1,http://home.base.be/goethals.baeyens/Gallery01/Images/DSCF2005_small.jpg,2
url=HomePictures1,http://home.base.be/goethals.baeyens/Gallery01/Images/DSCF2947_small.jpg,2
url=HomePictures1,http://home.base.be/goethals.baeyens/Gallery01/Images/DSCF4564_small.jpg,2
url=HomePictures1,http://home.base.be/goethals.baeyens/Gallery01/Images/PDRM0736_small.jpg,2
url=HomePictures2,http://home.base.be/goethals.baeyens/Gallery01/Images/Tulp_Beige_small.jpg,2
url=HomePictures2,http://home.base.be/goethals.baeyens/Gallery01/Images/Tulp_Deep_Yellow_small.jpg,2

[HomePictures1]
Width=160
Height=105
Left=350
Top=720

Offset_Width=-20
Offset_Height=-20
Offset_Left=+50
Offset_Top=+50

[HomePictures2]
Width=160
Height=160
Left=350
Top=720

Offset_Width=-20
Offset_Height=-20
Offset_Left=+50
Offset_Top=+50

[HomeDIA_Show]
Width=750
Height=600
Left=20
Top=20

Offset_Width=-20
Offset_Height=-50
Offset_Left=+50
Offset_Top=+180

[HomeWeather]
Width=410
Height=508
Left=835
Top=360

Offset_Width=-200
Offset_Height=-242
Offset_Left=+250
Offset_Top=+280

[HomeWeatherMap]
Width=450
Height=329
Left=820
Top=20

Offset_Width=-15
Offset_Height=-245
Offset_Left=+35
Offset_Top=+265

[PPT]
Width=459
Height=345
Left=250
Top=600

Offset_Width=0
Offset_Height=0
Offset_Left=0
Offset_Top=0
Edited by GreenCan

Contributions

CheckUpdate - SelfUpdating script ------- Self updating script

Dynamic input validation ------------------- Use a Input masks can make your life easier and Validation can be as simple

MsgBox with CountDown ------------------- MsgBox with visual countdown

Display Multiline text cells in ListView ---- Example of pop-up or ToolTip for multiline text items in ListView

Presentation Manager ---------------------- Program to display and refresh different Border-less GUI's on a Display (large screen TV)

USB Drive Tools ------------------------------ Tool to help you with your USB drive management

Input Period udf ------------------------------ GUI for a period input

Excel ColorPicker ---------------------------- Color pickup tool will allow you to select a color from the standard Excel color palette

Excel Chart UDF ----------------------------- Collaboration project with water 

GetDateInString ------------------------------ Find date/time in a string using a date format notation like DD Mon YYYY hh:mm

TaskListAllDetailed --------------------------- List All Scheduled Tasks

Computer Info --------------------------------- A collection of information for helpdesk

Shared memory Demo ----------------------- Demo: Two applications communicate with each other through means of a memory share (using Nomad function, 32bit only)

Universal Date Format Conversion -------- Universal date converter from your PC local date format to any format

Disable Windows DetailsPane -------------- Disable Windows Explorer Details Pane

Oracle SQL Report Generator -------------  Oracle Report generator using SQL

SQLite Report Generator -------------------  SQLite Report generator using SQL

SQLite ListView and BLOB demo ---------- Demo: shows how binary (image) objects can be recognized natively in a database BLOB field

DSN-Less Database connection demo --- Demo: ActiveX Data Objects DSN-Less Database access

Animated animals ----------------------------- Fun: Moving animated objects

Perforated image in GUI --------------------- Fun: Perforate your image with image objects

UEZ's Perforator major update ------------- Fun: Pro version of Perforator by UEZ

Visual Crop Tool (GUI) ----------------------- Easy to use Visual Image Crop tool

Visual Image effect (GUI) -------------------- Visually apply effects on an image

 

 

 

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.
×
×
  • Create New...