Refreshing local html page

Started by Jeff, January 19, 2014, 12:54:32 PM

Previous topic - Next topic

Jeff

I have a simple dialog that when during startup it does a quick inventory of the server. Such as the server name, IP address and low disk space and dumps it out to an html file. The dialog displays this file using the com control object. I have added a refresh button to reinventory the server, update the html file and then repost. Does anyone know how to do this?
Jeff

....IFICantBYTE

I'm not sure if you are referring to updating the dialog when you say "does anyone know how to do this?", but if you are..
There are basically 2 kinds of WinBatch Dialogs..
Standard and Dynamic. ... have a look in the Tech database and in the Help files for the differences and examples on how to make and use them.

Put simply, unless you use a Dynamic Dialog.. (i.e. one that can update the dialog while keeping it open), then you need to loop around when the dialog closes (Using If ButtonPushed= ... , then and Goto etc. to work out if your button was pushed rather than the cancel button and what to do), running most of your code again, which should redisplay your standard dialog again but with the new data.

Regards,
....IFICantBYTE

Nothing sucks more than that moment during an argument when you realize you're wrong. :)

Jeff

This is not the full code but I think this will give you an idea. In "Pushbutton_Refresh" I am trying to update the information in report.html and represent it in "com_control1". If anyone knows, I appreciate the help.

Code (winbatch) Select
;Load huge extender and setting options
AddExtender("WWHUG44I.DLL", 0, "WWHUG64I.DLL")
AddExtender("wwsop34i.dll", 0,"wwsop64i.dll")

UsePrecision = @TRUE ; Fixed precision
MaxiDivPrecision = 0
FixedPrecision = 0
AddSeparator = @TRUE
SeparatorFormat = @FALSE
Decimal = 0
Thousands = 0
huge_SetOptions (UsePrecision, MaxiDivPrecision, FixedPrecision, AddSeparator, SeparatorFormat, Decimal, Thousands)


Title = "Inventoy APP"
Time = TimeDate()


GoSub LOADSUBROUTINES

HTMLFILE = DirScript() : "report.html"

WinVerInfo()

MemInfo()

DriveInfo()

BUILDHTMLFILE()


;============================================================
;============================================================
;============================================================




#DefineSubRoutine InitDialogConstants()
   ;DialogprocOptions Constants
   MSG_INIT=0                    ; The one-time initialization
   MSG_TIMER=1                   ; Timer event
   MSG_BUTTONPUSHED=2            ; Pushbutton or Picturebutton
   MSG_RADIOPUSHED=3             ; Radiobutton clicked
   MSG_CHECKBOX=4                ; Checkbox clicked
   MSG_EDITBOX=5                 ; Editbox or Multilinebox
   MSG_FILESELECT=6              ; Filelistbox
   MSG_ITEMSELECT=7              ; Itembox
   MSG_COMBOCHANGE=8             ; Combobox/Droplistbox
   MSG_CALENDAR=9                ; Calendar date change
   MSG_SPINNER=10                ; Spinner number change
   MSG_CLOSEVIA49=11             ; Close clicked (Enabled via DialogProcOptions 1002
   MSG_FILEBOXDOUBLECLICK=12     ; Get double-click message on a FileListBox
   MSG_ITEMBOXDOUBLECLICK=13     ; Get double-click message on an ItemBox
   MSG_COMEVENT=14               ; COMCONTROL Event notification from DialogObject (NOT DialogProcOptions)
   MSG_MENUITEM=15               ; MenuItem selected
   MSG_MENUITEMINIT=16           ; MenuItem initialized
   MSG_RESIZE=17                 ; Dialog resized
   MSG_RVITEMSELROW=18           ; Reportview item select row
   MSG_RVDBLCLICKROW=19          ; Reportview double-click row
   MSG_RVCHECKEDITEM=20          ; Reportview checked/unchecked Item
   MSG_RVITEMTEXT=21             ; Reportview changed text of first column
   MSG_RVHEADER=22               ; Reportview header clicked

   DPO_DISABLESTATE=1000         ; codes -1=GetSetting 0=EnableDialog 1=DisableDialog
   DPO_CHANGEBACKGROUND=1001     ; -1=Get Current otherise bitmap or color string
   DPO_CHANGESYSMENU=1002        ; -1=Get Current 0=none 1=close 2=close/min 3=close/max 4=close/min/max
   DPO_CHANGETITLE=1003          ; Set/Get Dialog Title - (-1 to get)
   DPO_GETNAME=1004              ; Returns the name associated with a control's number.
   DPO_GETNUMBER=1005            ; Returns the number associated with a control's name.
   DPO_GETCLIENTAREA=1007        ; Returns a space delimited list of the width and height of the client area.

   ;DialogControlState Constants
   DCSTATE_SETFOCUS=1            ; Give Control Focus
   DCSTATE_QUERYSTYLE=2          ; Query control's style
   DCSTATE_ADDSTYLE=3            ; Add control style
   DCSTATE_REMOVESTYLE=4         ; Remove control style
   DCSTATE_GETFOCUS=5            ; Get control that has focus
   DCSTATE_MOVEMOUSEOVER=6       ; Move the mouse over the control

   DCSTYLE_DEFAULT=0             ; Set Default Style
   DCSTYLE_INVISIBLE=1           ; Set Control Invisible
   DCSTYLE_DISABLED=2            ; Set Control Disabled
   DCSTYLE_NOUSERDATA=4          ; Note: Setable via DialogControlState function ONLY SPINNER control only
   DCSTYLE_READONLY=8            ; Sets control to read-only (user cannot type in data) EDITBOX MULTILINEBOX SPINNER
   DCSTYLE_PASSWORD=16           ; Sets 'password mode' where only *'s are displayed EDITBOX
   DCSTYLE_DEFAULTBUTTON=32      ; Sets a button as the default button PUSHBUTTON PICTUREBUTTON
   DCSTYLE_DIGITSONLY=64         ; Set edit box to accept digits only EDITMOX MULTILINEBOX
   DCSTYLE_FLAT=128              ; Makes a 'flat' hyperlink-looking button PUSHBUTTON PICTUREBUTTON
   DCSTYLE_NOADJUST=256          ; Turns off auto-height adjustment  ITEMBOX FILELISTBOX
   DCSTYLE_TEXTCENTER=512        ; Center text in control VARYTEXT STATICTEXT
   DCSTYLE_TEXTRIGHT=1024        ; Flush-Right text in control VARYTEXT STATICTEXT
   DCSTYLE_NOSELCURLEFT=2048     ; No selection, cursor left EDITBOX MULTILINEBOX
   DCSTYLE_NOSELCURRIGHT=4096    ; No selection, cursor right EDITBOX MULTILINEBOX
   DCSTYLE_SHIELD=8192           ; Display Security Shield icon on button (Vista only) PUSHBUTTON PICTUREBUTTON
   DCSTYLE_MENUCHECK=32768       ; Adds a check mark to the left of a menu item MENUITEM
   DCSTYLE_MENURADIO=65536       ; Adds a radio button like dot graphic to the left of a menu item MENUITEM
   DCSTYLE_MENUSEP=131072        ; Separator bar graphic MENUITEM
   DCSTYLE_MENUBREAK=262144      ; Column break MENUBAR
   DCSTYLE_NOHEADER=524288       ; No header bar REPORTVIEW
   DCSTYLE_COLHEADER=1048576     ; First row column header REPORTVIEW
   DCSTYLE_GRIDLINES=2097152     ; Grid lines REPORTVIEW
   DCSTYLE_SELONEROW=4194304     ; Only one row can be selected at a time REPORTVIEW
   DCSTYLE_SELALLROW = 8388608   ; Highlight complete row REPORTVIEW
   DCSTYLE_SORTASC=16777216      ; Ascending sort REPORTVIEW
   DCSTYLE_SORTDESC=33554432     ; Descending sort REPORTVIEW
   DCSTYLE_EDITCOL=67108864      ; Edit first columns text REPORTVIEW
   DCSTYLE_COLCHECKBOX=134217728 ; Add checkbox to first column REPORTVIEW
   DCSTYLE_INSHEADER=268435456   ; Include column header text REPORTVIEW

   ;DialogControlSet / DialogControlGet Constants
   DC_CHECKBOX=1             ; CHECKBOX REPORTVIEW
   DC_RADIOBUTTON=2          ; RADIOBUTTON
   DC_EDITBOX=3              ; EDITBOX MULTILINEBOX
   DC_TITLE=4                ; PICTURE RADIOBUTTON CHECKBOX PICTUREBUTTON VARYTEXT STATICTEXT GROUPBOX PUSHBUTTON MENUITEM
   DC_ITEMBOXCONTENTS=5      ; ITEMBOX FILELISTBOX DROPLISTBOX REPORTVIEW
   DC_ITEMBOXSELECT=6        ; ITEMBOX FILELISTBOX DROPLISTBOX REPORTVIEW
   DC_CALENDAR=7             ; CALENDAR
   DC_SPINNER=8              ; SPINNER
   DC_MULTITABSTOPS=9        ; MULTILINEBOX
   DC_ITEMSCROLLPOS=10       ; ITEMBOX FILELISTBOX
   DC_BACKGROUNDCOLOR=11     ; RADIOBUTTON CHECKBOX VARYTEXT STATICTEXT GROUPBOX PUSHBUTTON ITEMBOX FILELISTBOX DROPLISTBOX SPINNER EDITBOX MULTILINEBOX REPORTVIEW
   DC_PICTUREBITMAP=12       ; PICTURE PICTUREBUTTON
   DC_TEXTCOLOR=13           ; RADIOBUTTON CHECKBOX VARYTEXT STATICTEXT GROUPBOX PUSHBUTTON ITEMBOX FILELISTBOX DROPLISTBOX SPINNER EDITBOX MULTILINEBOX REPORTVIEW
   DC_ITEMBOXADD=14          ; ITEMBOX FILELISTBOX DROPLISTBOX REPORTVIEW
   DC_ITEMBOXREMOVE=15       ; ITEMBOX FILELISTBOX DROPLISTBOX REPORTVIEW
   DC_RADIOVALUE=16          ; RADIOBUTTON
   DC_POSITION=17            ; ALL CONTROLS (Except MENUBAR and MENUITEM)
   DC_MENUNAMES=18           ; ALL CONTROLS
   DC_HANDLE=19              ; ALL CONTROLS (Except MENUBAR and MENUITEM)
   DC_RVCOLHEAD=20           ; REPORTVIEW
   DC_RVCOLWIDTH=21          ; REPORTVIEW
   DC_RVADDCOL=22            ; REPORTVIEW
   DC_RVREMOVECOL=23         ; REPORTVIEW
   DC_RVMATCHCOL=24          ; REPORTVIEW
   DC_RVCANCELEDIT=25        ; REPORTVIEW
   DC_RVCHECKEDROWS=26       ; REPORTVIEW
   DC_RVJUSTIFY=27           ; REPORTVIEW


   ;DialogObject constants
   DLGOBJECT_ADDEVENT=1      ; Call dialog callback when the specified event occurs
   DLGOBJECT_STOPEVENT=2     ; Stop calling dialog callback when an event previously requested with
   DLGOBJECT_GETOBJECT=3     ; Return an object references to the specified control
   DLGOBJECT_GETPICTURE=4    ; Create and return an object reference to a picture object

   ;Return code constants
   RET_DO_CANCEL=0           ; Cancels dialog
   RET_DO_DEFAULT= -1        ; Continue with default processing for control
   RET_DO_NOT_EXIT= -2       ; Do not exit the dialog
   return
#EndSubroutine
;============================================================
;============================================================
;============================================================





InitDialogConstants()                                       ; Initialize Dialog Constants (need only be done once usually)

#DefineSubroutine MyDialogCallbackProc(MyDialog_Handle,MyDialog_Message,MyDialog_Name,MyDialog_EventInfo,MyDialog_ChangeInfo)
   ON_EQUAL = @TRUE                                         ; Initialize variable ON_EQUAL
   switch MyDialog_Message                                  ; Switch based on Dialog Message type
      case MSG_INIT                                         ; Standard Initialization message
         DialogProcOptions(MyDialog_Handle,MSG_TIMER,1000)
         DialogProcOptions(MyDialog_Handle,MSG_BUTTONPUSHED,@TRUE)
;         DialogObject(MyDialog_Handle,"ComControl_1",DLGOBJECT_ADDEVENT,"ComEventName",1000)
         return(RET_DO_DEFAULT)

     case MSG_BUTTONPUSHED
        if MyDialog_Name == "PushButton_Refresh"           ; Refresh
                     HTMLFILE = DirScript() : "report.html"

                     WinVerInfo()

                     MemInfo()

                     DriveInfo()

                     BUILDHTMLFILE()
; I don't know what to do to make it reload the comcontrol with a refreshed report file
              return(RET_DO_NOT_EXIT)

        elseif MyDialog_Name == "PushButton_Exit"          ; Exit
              return(RET_DO_DEFAULT)

        endif                                              ; MyDialog_Name
        return(RET_DO_DEFAULT)

     case MSG_COMEVENT                                     ; ID "ComControl_1"  %HTMLFILE%
        return(RET_DO_DEFAULT)

   endswitch                                                ; MyDialog_Message
   return(RET_DO_DEFAULT)
#EndSubroutine                                              ; End of Dialog Callback MyDialogCallbackProc

;============================================================
;============================================================
;============================================================



MyDialogFormat=`WWWDLGED,6.2`

MyDialogCaption=`WIL Dialog 1`
MyDialogX=015
MyDialogY=070
MyDialogWidth=268
MyDialogHeight=230
MyDialogNumControls=003
MyDialogProcedure=`MyDialogCallbackProc`
MyDialogFont=`DEFAULT`
MyDialogTextColor=`DEFAULT`
MyDialogBackground=`DEFAULT,DEFAULT`
MyDialogConfig=0

MyDialog001=`043,205,036,012,PUSHBUTTON,"PushButton_Refresh",DEFAULT,"Refresh",1,10,32,DEFAULT,DEFAULT,DEFAULT`
MyDialog002=`175,205,036,012,PUSHBUTTON,"PushButton_Exit",DEFAULT,"Exit",0,20,DEFAULT,DEFAULT,DEFAULT,DEFAULT`
MyDialog003=`017,019,226,166,COMCONTROL,"ComControl_1",DEFAULT,"%HTMLFILE%",DEFAULT,30,DEFAULT,DEFAULT,DEFAULT,DEFAULT`

ButtonPushed=Dialog("MyDialog")



Exit


:LOADSUBROUTINES

#DefineSubRoutine WinVerInfo()


SERVERNAME = Environment("ComputerName")
DOMAINNAME = Environment("USERDOMAIN")

WinVer = WinVersion(5)

Platform="Unknown"

if WinVer=="1-4-0"
Platform="Windows 95, operating system is not supported!"
End If

if WinVer=="1-4-10"
Platform="Windows 98, operating system is not supported!"
End If

if WinVer=="1-4-90"
Platform="Windows ME, operating system is not supported!"
End If

if WinVer=="2-3-51"
Platform="Windows NT 3.51, operating system is not supported!"
End If

if WinVer=="2-4-0"
Platform="Windows NT 4.0, operating system is not supported!"
End If

if WinVer == "2-5-0"
Platform ="Windows 2000, operating system is not supported!"
End If

if WinVer=="2-5-1" then Platform="Windows XP"

if WinVer=="2-5-2"
Platform="Windows 2003 Server"
Role = WinVersion(9)
If Role == 2 then Platform = "Server 2003, domain controller"
End If


if WinVer=="2-6-0"
Role = WinVersion(9)
If Role == 1
Platform = "Windows Vista"
Else
Platform = "Server 2008"
End If
If Role == 2 then Platform = "Server 2008, domain controller"
End If

if WinVer=="2-6-1"
Role = WinVersion(9)
If Role == 1
Platform = "Windows 7"
Else
Platform = "Server 2008 R2"
End If
If Role == 2 then Platform = "Server 2008 R2, domain controller"
End If

if WinVer=="2-6-2"
Role = WinVersion(9)
If Role == 1
Platform = "Windows 8"
Else
Platform = "Server 2012"
End If
If Role == 2 then Platform = "Server 2012, domain controller"
End If

#EndFunction



#DefineSubRoutine DriveInfo()

hd = strReplace(DiskScan(2),@TAB,",")

State = ""
Note = ""
hdhtml = '<table border="0"><th>Drive</th><th>Size</th><th>&nbsp</th><th>Free</th><th>&nbsp</th>'

For x = 1 to ItemCountCsv (hd,1)
   itemhd = ItemExtractCSV(x,hd,0,",")
   hdsize = DiskSize(itemhd, 1)
   hdsize=huge_Divide (hdsize, 1073741824)
   hdfree=DiskFree(itemhd, 1)
   hdfree=huge_Divide (hdfree, 1073741824)

hdhtml = hdhtml : "<tr><td>" : itemhd : "</td><td>" : hdsize : "GB </td><td>":State:"</td><td>" : hdfree : "GB </td></td><td>":Note:"</td></tr>"

Next

hdhtml = hdhtml : '</table>'


#EndFunction

#DefineSubRoutine MemInfo()

memutilization = WinResources(10)
memtotal = WinResources(11,1)
Memtotal=huge_Divide (memtotal, 1048576)

#EndFunction

#DefineSubRoutine BUILDHTMLFIlE()


handle = FileOpen(HTMLFILE, "WRITE")
FileWrite(handle, "<!DOCTYPE html>")
FileWrite(handle, "<html>")
FileWrite(handle, '<body style="background-color:white;">')
FileWrite(handle, '<font face="Calibri" basefont size="2">')

FileWrite(handle, '<h2 style="background-color:white";>' : Title : '</h2>')
FileWrite(handle, '<p style="background-color:white";>')

FileWrite(handle, TIME)
FileWrite(handle, "</BR>")
FileClose(handle)

handle = FileOpen(HTMLFILE, "APPEND")
FileWrite(handle, "Server Name : " : DomainName : " " : ServerName : " </BR>")
FileWrite(handle, "Operating System : " : Platform : " </BR>")
FileWrite(handle, "</BR>")
FileClose(handle)


handle = FileOpen(HTMLFILE, "APPEND")
FileWrite(handle, "Memory Utilization : " : memutilization : " %%</BR>")
FileWrite(handle, "Memory : " : memtotal : " MB </BR>")
FileWrite(handle, "</BR>")
FileClose(handle)

handle = FileOpen(HTMLFILE, "APPEND") 
FileWrite(handle,hdhtml)
FileWrite(handle, "</BR>")
FileClose(handle)

handle = FileOpen(HTMLFILE, "APPEND")
FileWrite(handle, "</p>")
FileWrite(handle, "</body>")
FileWrite(handle, "</html>")
FileClose(handle)


#EndFunction

Return


Jeff

....IFICantBYTE

OK.. you are using a dynamic dialog.
You need to reload the new updated HTML file somehow.
So, first, in your Dialog's Init section, you need to get a handle on the HTML Com control, and then you can manipulate the document in it.
Use something like:
objBrowser = DialogObject(MyDialog_Handle, "ComControl_1", DLGOBJECT_GETOBJECT)

We then use this handle to update the source of the HTML

Inside the Button click event where it looks like you already have the UDF calls to recreate your HTML file, put a line at the end to reload the source of the html document.
I can't remember off-hand, and can't test here (at home now), but you should be able to find the right syntax in the Tech Database or online somewhere.
I think it should be something like:
objBrowser.parentwindow.location.Reload

or perhaps just objBrowser.Reload
or maybe even objBrowser.Navigate(sourcefilename)

Like I said, I can't remember the syntax and I'm on a PC without WB here.

Try it out and with a bit of digging around you should get it going in the end.



Regards,
....IFICantBYTE

Nothing sucks more than that moment during an argument when you realize you're wrong. :)

Deana

Yes, maybe try adding this to the refresh button event: 

Code (winbatch) Select
;Get an object reference to the webbrowser comcontrol
objBrowser = DialogObject( MyDialog_Handle, "ComControl_1", DLGOBJECT_GETOBJECT )
here = "file://": HTMLFILE
objBrowser.Navigate(here)
Deana F.
Technical Support
Wilson WindowWare Inc.