Can't find the information you are looking for here? Then leave a message over on our WinBatch Tech Support Forum.
; Ticker ; by Iain (iain@caverock.com) ; 26 July 2004 ;AddExtender("wwctl34i.dll") ;Addextender("wproc34I.dll") AddExtender("wwctl44i.dll") AddExtender("wwprc44i.dll") ;counterstring=tBrowseCntrs (0,0,0,0,0) ;============================================================ #DefineSubroutine MyDialogCallbackProc(MyDialog_Handle,MyDialog_Message,MyDialog_ID,rsvd1,rsvd2) ;DialogprocOptions Constants MSG_INIT=0 ; The one-time initilization MSG_TIMER=1 ; Pushbutton or Picturebutton MSG_BUTTONPUSHED=2 ; Pushbutton or Picturebutton TRANSPARENT=1 switch MyDialog_Message case MSG_INIT ; Windows constants WS_CAPTION=12582912 ; Hex 00C00000 (Search MSDN for Q111011 for more parameter values) WS_EX_TOOLWINDOW = 128 GWL_STYLE=-16 GWL_EXSTYLE=-20 ; Window Z-Order constants HWND_TOP = 0 HWND_BOTTOM = 1 HWND_TOPMOST = -1 HWND_NOTOPMOST = -2 WS_EX_TOPMOST = 8 ;Window API Constants SWP_NOSIZE = 1 SWP_NOMOVE = 2 SWP_NOZORDER = 4 SWP_NOACTIVATE = 16 SWP_SHOWWINDOW = 64 SWP_HIDEWINDOW = 128 GWL_STYLE=-16 WS_CAPTION=12582912 HTCAPTION=2 WM_NCLBUTTONDOWN=161 ; Setup timer DialogProcOptions(MyDialog_Handle,MSG_TIMER,100) ;DialogProcOptions(MyDialog_Handle,MSG_BUTTONPUSHED,1) x = WinItemChild("") ; Load lines from text file array = ArrayFileGet(datafile) total_lines = ArrInfo(array,1) ; Setup array to hold window handles for lines and starting text line = ArrDimension(3,3) line[0,0] = cWndByName(MyDialog_Handle,"line1") line[1,0] = cWndByName(MyDialog_Handle,"line2") line[2,0] = cWndByName(MyDialog_Handle,"line3") line[0,2] = "Current CPU use: ~CPU~%%" line[1,2] = "Memory (in use/total): ~MEM_INUSE~Mb/~MEM_TOTAL~Mb" line[2,2] = "Disk free: ~DISK_FREE|'C'~Mb" For li = 0 to 2 s = line[li,2] While StrIndex(s,"~",1,@FWDSCAN) cmd_line = ItemExtract(2,s,"~") param = ItemExtract(2,cmd_line,"|") cmd = ItemExtract(1,cmd_line,"|") s = StrReplace(s,StrCat("~",cmd_line,"~"),Display_%cmd%(%param%)) EndWhile line[li,1] = s next s ; Set the starting text for the lines DialogControlSet(MyDialog_Handle, 1, 4, line[0,1]) DialogControlSet(MyDialog_Handle, 2, 4, line[1,1]) DialogControlSet(MyDialog_Handle, 3, 4, line[2,1]) ; Make sure the lines are in the right places y = ArrDimension(3) y[0] = 0 y[1] = 20 y[2] = 40 SetWindowPos(line[0,0],4,y[0],198*2,18,0,0) SetWindowPos(line[1,0],4,y[1],198*2,18,0,0) SetWindowPos(line[2,0],4,y[2],198*2,18,0,0) p = 50 ; Setup the dialog (code from Guido) user32=strcat(dirwindows(1),"user32.dll") gdi32=strcat(dirwindows(1),"gdi32.dll") dlgid=WinIdGet("") RECT=binaryalloc(16) ;remove caption os=dllcall(user32,long:"GetWindowLongA",long:MyDialog_Handle,long:GWL_STYLE) dllcall(user32,long:"SetWindowLongA",long:MyDialog_Handle,long:GWL_STYLE,long:os & ~WS_CAPTION) ;create region dllcall(user32,long:"GetClientRect",long:MyDialog_Handle,lpbinary:RECT) hrgn=dllcall(gdi32,long:"CreateRoundRectRgn",long:0,long:0,long:binarypeek4(RECT,8),long:binarypeek4(RECT,12),long:10,long:10) dllcall(user32,long:"SetWindowRgn",long:MyDialog_Handle,long:hrgn,long:@true) binaryfree(RECT) NewStyle=WS_EX_TOOLWINDOW ; DllCall(User32, long:"SetWindowLongA", long:MyDialog_Handle,long:GWL_EXSTYLE, long:NewStyle) SetWindowPos(MyDialog_Handle,0,0,0,0,HWND_TOPMOST,SWP_NOSIZE|SWP_NOACTIVATE|SWP_NOMOVE) break case MSG_TIMER ; If left mouse button is pushed if MouseInfo(8)==4 ; And is over this windows then move the window to follow pointer if MouseInfo(9)== dlgid then dllcall(user32,long:"SendMessageA",long:MyDialog_Handle,long:WM_NCLBUTTONDOWN,long:HTCAPTION,lpnull) endif ; p is used to make the system pause to display the line for a bit If p == 0 then ; loop round and move each line for li = 0 to 2 if y[li] == -20 then ; line is at the top, load some new text and move it to the bottom y[li] = 40 s = line[li,2] ; find all 'tags' and call the function While StrIndex(s,"~",1,@FWDSCAN) cmd_line = ItemExtract(2,s,"~") param = ItemExtract(2,cmd_line,"|") cmd = ItemExtract(1,cmd_line,"|") s = StrReplace(s,StrCat("~",cmd_line,"~"),Display_%cmd%(%param%)) EndWhile line[li,1] = s DialogControlSet(MyDialog_Handle, li+1, 4, line[li,1]) p = 50 else ; move the line up y[li] = y[li] - 1 endif SetWindowPos(line[li,0],4,y[li],198*2,18,0,0) next else p = p - 1 EndIf break endswitch ; MyDialog_Message ; dllcall(user32,long:"UpdateWindow",long:MyDialog_Handle) return(-1) ; Do default processing #EndSubroutine ;End of Dialog Callback MyDialogCallbackProc ;============================================================ ;============================================================ ;============================================================ #DefineFunction SetWindowPos(handle,xpos,ypos,width,height,after,style) user32=strcat(dirwindows(1),"user32.dll") val = dllcall(user32,long:"SetWindowPos",long:handle,long:after,long:xpos,long:ypos,long:width,long:height,long:style) Return val #EndFunction #DefineFunction Display_CPU() Return tGetData("\\STELLA\Processor(_Total)\%% Processor Time",1) #EndFunction #DefineFunction Display_MEM_INUSE() Return tGetData("\\STELLA\Memory\Committed Bytes",0)/1024/1024 #EndFunction #DefineFunction Display_MEM_TOTAL() Return tGetData("\\STELLA\Memory\Commit Limit",0)/1024/1024 #EndFunction #DefineFunction Display_DISK_FREE(disk) Return DiskFree(disk)/1024/1024 #EndFunction MyDialogFormat=`WWWDLGED,6.1` MyDialogCaption=`Ticker` MyDialogX=100 MyDialogY=0 MyDialogWidth=202 MyDialogHeight=0013 MyDialogNumControls=004 MyDialogProcedure=`MyDialogCallbackProc` MyDialogFont=`DEFAULT` MyDialogTextColor=`DEFAULT` MyDialogBackground=`DEFAULT,200|200|200` MyDialogConfig=2 MyDialog001=`004,000,200,009,VARYTEXT,line1,"line1",DEFAULT,3,DEFAULT,"Arial|7680|40|34","0|0|0",DEFAULT` MyDialog002=`004,000,200,009,VARYTEXT,line2,"line2",DEFAULT,2,DEFAULT,"Arial|7680|40|34","0|0|0",DEFAULT` MyDialog003=`004,000,200,009,VARYTEXT,line3,"line3",DEFAULT,2,DEFAULT,"Arial|7680|40|34","0|0|0",DEFAULT` MyDialog004=`083,103,036,012,PUSHBUTTON,DEFAULT,"Cancel",0,2,DEFAULT,DEFAULT,DEFAULT,DEFAULT` ButtonPushed=Dialog("MyDialog",0) ; WinBatch will not display this dialog. ;IntControl(72,1, 0, 0, 0) IntControl (1002, 0, 0, 0, 0) IntControl (49, 1, 0, 0, 0) ButtonPushed=Dialog("MyDialog",1)
Article ID: W16359
File Created: 2013:04:01:09:13:30
Last Updated: 2013:04:01:09:13:30