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.