Showing posts with label Toolsmith. Show all posts
Showing posts with label Toolsmith. Show all posts

2016-02-12

Print system information on top of your desktop background upon startup using BGInfo.exe (Sysinternals)



Executable with custom template:




https://onedrive.live.com/redir?resid=C213C8B09441DCD7!48680&authkey=!AEUBtQwOZXCSUto&ithint=file%2czip

Drop the the ".exe" and the ".bgi" files in C:\Windows, and schedule task to run at user logon :



    Bginfo.exe BGInfoConf-v160205.1.bgi /nolicprompt /timer:0



Default template:







My template:




Scheduled:




2008-10-05

Work around AutoIT stdin limitation

The fastest way to implement a small script and to process a file (or a chunk of data) is to use the standard input rather than file-handles.

1/ It is easier to redirect a file instead of providing parameters to a program.

2/ When you use redirections, the operating system works for you: it opens the file and feeds the program with its content.
C:\> AutoIt3.exe DiffPrettyfier.au3 < MyInput.txt > MyOutput.txt
 
The content of the script is straight forward:
$myInput = ConsoleRead()
; do something here
; (...)
ConsoleWrite($myOutput)



But there is one problem that makes this a bit harder: AutoIT 'ConsoleRead' doesn't handle input bigger than '65535' characters. So here is a little workaround: use the function 'StdinRead' below instead of 'ConsoleRead':
;-----------------------------------------------------------------
; Name .........: StdinRead
; Description ..: Wrapper for ConsoleRead because it doesn't
; handle big files
; Warning ......: This is a workaround but it has limitations too,
; I used a big file to test this function but it
; might fail on a VERY big file (eg. if the file
; contains 2 147 483 647 characters)
; original big file tested: 18 030 950
; biggest string size allowed: 2 147 483 647
; Parameters ...: n/a
; Return .......: String read on STDIN or empty String "" if
; nothing found on STDIN
;-----------------------------------------------------------------
Func StdinRead()
Const $MAX_BUFFER = 65535
$eofReached = False
$fileContent = ""
While Not $eofReached
$buffer = ConsoleRead($MAX_BUFFER)
If @error Or $buffer = "" Then $eofReached = True
$fileContent &= $buffer
WEnd
Return $fileContent
EndFunc ;==>StdinRead



NOTE: For "ConsoleWrite" to work as expected (redirecting output to stdout), you need to compile the script using the "/console" switch.