A long standing complaint with the standard progress bar control is that there is no easy way to display text. In spite of numerous requests, Microsoft has not included this capability. The following code includes a class, `CustomProgress` which inherits the standard `ProgressBar` and adds such a feature. It is fairly easy to use. If you want to show a percentage progress you set `Text` to a null string and the percentage will be calculated from the `Minimum` and `Maximum` value properties. If you want a custom string then assign it to `Text`. Either the percentge or custom text will …

Member Avatar
Member Avatar
+4 forum 3

vbScript - Extending Application Functionality with vbScript and AutoIt Sometimes you'll find that one of your favourite applications is missing some useful functionality. For me, it was FastStone Image Viewer. I've had to scan a large number of family photos to convert everything to digital. Rather than scan one photo at a time, I found it faster to fill the scanner and scan an entire page at once. That reduces the overall scan time but it means that I have to crop and save each individual photo from the gang scans. FastStone has a crop board where I can select …

Member Avatar
+1 forum 0

vb.Net - Regular Expression Tester Every now and then I find another use for a regular expression. For those not familiar with regular expressions, they can be as cryptic to read as strings of Greek letters. Simply put, regular expressions are just patterns. If you've ever used the DOS command shell `dir` command then you have likely used patterns, albeit simple ones. For example: dir d:\temp\pic*.jpg lists all files in the given folder that start with the letters `pic` and end with a `.jpg` extension. While the `dir` command allows only `?` and `*` wildcards, regular expressions allow you to …

Member Avatar
Member Avatar
+1 forum 3

vbScript - Create a Log File Using vbScript Classes Before I retired I was responsible for most of the corporate data plumbing at our control centre. All of the plumbing was written in vbScript. As any maintenance programmer knows, log files are a vital key in identifying and fixing problems. Because I am basically lazy I don't like to code the same process over and over so I created logging code that could be included in any script. The scripts were run automatically on periods ranging from once every five minutes to once a week, or even as little as …

Member Avatar
+0 forum 0

##vbScript - Run an External Program and Capture the Output Please see my post [vbScript - The Basics](https://www.daniweb.com/programming/threads/516400/vbscript-the-basics) for more details on vbScript. When you want to execute an external program for a particular result (such as resizing an image, as shown in a previous snippet) you can simply use the `Run` method of the `Wscript.Shell` object. However, if you want something a little more complex there is the `Exec` method of the same object. This method gives you access to the standard input, output, and error streams. As such, you can take advantage, for example, of the increased flexibility …

Member Avatar
Member Avatar
+1 forum 1

Over the last few days I have been converting old video files from avi to mp4. I've been doing this using the command line version of DivX. This is the process behing the DivXPro GUI and it is named `DivXEngine.exe`. Converting video files takes a big hit on the CPU and I would prefer to set the process to a lower priority to minimize the impace on my usual tasks. Under Windows 7 there was a utility program that could be used to permanently change a task priority. Unfortunately it no longer works in Windows 10 so I did the …

Member Avatar
+1 forum 0

##vbScript - An Application to Modify srt Subtitle Files Please see my post [vbScript - The Basics](https://www.daniweb.com/programming/threads/516400/vbscript-the-basics) for more details on vbScript. So far I've posted either functions/subs or code snippets to illustrate a technique. This time I am going to post a complete application. First, a few points. 1. I am somewhat hearing impaired - just one of the hazards of increasing age and heredity. 2. Because of 1 I find I am making increased use of videos with subtitles 3. I like to collect videos over the winter to watch at the cottage in the summer I use …

Member Avatar
+0 forum 0

##vbScript - A Multi-column Sort With Minimal Coding Please see my post [vbScript - The Basics](https://www.daniweb.com/programming/threads/516400/vbscript-the-basics) for more details on vbScript. A previous post dealt with sorting. The code easily handles sorting simple things like lists of words, lines of text - cases where you only had to compare two things. What about the case where you want the option to sort on an arbitrary column of data, or you want to sort on multiple columns such as by birthdate, then by last name. That becomes more difficult to code. Databases handle that with ease by allowing you to specify …

Member Avatar
+0 forum 0

##vbScript - Some Useful String Functions Please see my post [vbScript - The Basics](https://www.daniweb.com/programming/threads/516400/vbscript-the-basics) for more details on vbScript. vbScript provides a number of functions for manipulating strings. I find that a few more simple functions would have made things a lot simpler. For example, I find myself checking to see if a string starts with a given string. What I have to code is If len(str1) < len(str2) Then StartsWith = False Else If Left(str1,len(str2)) = str2 Then StartsWith = True Else StartsWIth = False End If It would be much clearer if I could do If StartsWith(str1,str2) Then …

Member Avatar
Member Avatar
+1 forum 1

##vbScript - Identify File by Perceived Type Please see my post [vbScript - The Basics](https://www.daniweb.com/programming/threads/516400/vbscript-the-basics) for more details on vbScript. There are times when you want to operate on all files of a given type. For example, you may want to enumerate all files in a folder or a drive that are recognized by Windows as video or audio. But how would you do that? There are so many video file types that it would be difficult to test for even the more common file extensions. Better to ask Windows to do the identification. The Windows Registry contains an key …

Member Avatar
+1 forum 0

##vbScript - Get Drive Letter by Volume Label Please see my post [vbScript - The Basics](https://www.daniweb.com/programming/threads/516400/vbscript-the-basics) for more details on vbScript. I have all my computers partitioned with two partitions. The drive letters are C (OS and applications) and D (user data). I use Macrium Reflect to take monthly full and daily differential images of C. To backup D Ii use a script front end for robocopy. Using a script to do the backup has one major problem. The drive letter of my dedicated backup external drive may change. I find that even if I have used Drive Manager to …

Member Avatar
+1 forum 0

##vbScript - Browse for Folder or File Please see my post [vbScript - The Basics](https://www.daniweb.com/programming/threads/516400/vbscript-the-basics) for more details on vbScript. Some scripts need input (other than from the command line) from the user. This can be read from the console (StdIn) or from a pop-up textbox (InputBox). This is fine for simple input but you certainly wouldn't want to have to type a folder or file name, especially when it might include a lengthy path. There are several ways to avoid typing a long folder or file name. If you create a shortcut to your script on the desktop you …

Member Avatar
+0 forum 0

##vbScript - Convert Integer to Binary String Please see my post [vbScript - The Basics](https://www.daniweb.com/programming/threads/516400/vbscript-the-basics) for more details on vbScript. vbScript has a number of functions for converting from one type to another. These functions are named C<type> as in CInt (convert to int), CDbl (convert to double), etc. There are also functions that will format numbers as string (FormatNumber, FormatPercent, FormatCurrentcy, Hex, etc.) One glaring omission is a function to format numbers (integers) as binary. Fortunately the process is straightforward. If we first convert the number to e hexadecimal string we can then convert each hex digit into its …

Member Avatar
+0 forum 0

##vbScript - Sorting With and Without Code Please see my post [vbScript - The Basics](https://www.daniweb.com/programming/threads/516400/vbscript-the-basics) for more details on vbScript. Sorting is something that must be done from time to time. I'm going to examine three ways. The first is the well known (at least by name) QuickSort method. Rather than repeating existing explanations of the actual algorithm I'll just refer you to the [Wikipedia QuickSort article](https://en.wikipedia.org/wiki/Quicksort) and present the code with comments below. The second method uses a binary tree. The concept is simple even if the implementation is a little difficult to grasp initially. We start with the …

Member Avatar
+1 forum 0

This is the first in (hopefully) a series of posts about vbScript. Please see my post [vbScript - The Basics](https://www.daniweb.com/programming/threads/516400/vbscript-the-basics) for more details on vbScript. My wife and I take a lot of pictures. Naturally, we end up sending pictures to friends through email. I find it is unnecessary, and often inconsiderate to send full size images via email. When most of our friends end up viewing these images on a hand-held device, it is pointless to send an image wider than 600 pixels. As such, I have to repeatedly 1. Copy the full size image to a temporary folder …

Member Avatar
+2 forum 0

This code generates an ascii maze of up to size 30x30. If you try to generate a larger maze then you will likely run out of stack space. There is no way to increase the size of the stack in vbscript. Each cell in the maze is represented by a string of five characters such as "11110". The first four chars represent whether a wall is present ("1") or absent ("0") in the four directions "UDLR". The fifth char represents whether a cell has been visited ("1") or not ("0"). Each cell maintains its awareness of the four walls bounding …

Member Avatar
Member Avatar
+0 forum 2

Over the years I've seen a lot of discussion (and several implementations) of the Quicksort algorithm. Most of what I have seen, unfortunately, lacks sufficient commenting as well as meaningful variable names. Hopefully the following vbScript code will more clearly show how Quicksort actually works. A couple of incidental notes: 1. I use PrimalScript for editing and I have comments set to display with a silver-grey background and black text. This makes comments very distinct from code (and is also why I have a closing single quote at the end of lines). 1. The test code section at the end …

Member Avatar
Member Avatar
+1 forum 6

An often underused control from vb.Net is the FolderWatch control. But sometimes you need to throw something together that doesn't need a fancy GUI. Or perhaps the task seems too trivial to go to the hassle of coding it up in vb.Net (or C#). Because the FolderWatcher is built on underlying WMI (Windows Management Instrumentation) technology, it can actually be implemented quite simply from vbScript. Please see the sample below. In actual use you would place more useful code in the Create/Delete/Modify Case clauses.

Member Avatar
+1 forum 0

Several people have asked how to export data to Excel. This code snippet shows how to export the data from a listview in details mode to a new Excel spreadsheet. Take note of the comments in the header to avoid having orphaned Excel.exe tasks eat up your system memory.

Member Avatar
Member Avatar
+7 forum 15

A while back I came across an article that mentioned genetic algorithms. For those unfamiliar with the term, simply put, rather than finding a solution to a problem by iterating over all possible cases, a genetic algorithm attempts to find a solution by starting with a guess, then generating a next guess by applying numerous random changes to the current guess and picking the guess that best fits the solution as the next best guess. Rinse and repeat. Unfortunately, most of the articles and examples I came across involved far too much tech speak and math for a brain long …

Member Avatar
Member Avatar
+2 forum 4

Here's an interesting little scenario. You get challenged to a game of coin toss. Both players pick a sequence of coin toss results (heads or tails). The coin is repeatedly tossed until the sequence for one of the players occurs. The loser pays the winner a dollar. You'd assume that you each have an equal chance of winning. However, using two little "tricks" you can tip the odds in your favour. The first trick is to always choose second. If you can manage this then your strategy is as follows: Your first choice should be the opposite of your opponent's …

Member Avatar
Member Avatar
+0 forum 36

I have a Chromecast that I use to stream video from my laptop to our TV. It works great, however, until VLC (Videolan) releases their promised upgrade with Chromecase support, I am limited to streaming files in the mp4 format. Fortunately, ffmpeg allows me to convert other formats to mp4. Unfortunately, figuring out what parameters to use can be daunting. So far I have determined the commands to use to convert avi, flv and mkv. The last two are a simple repackaging of the contents (takes but a few seconds). The first, avi, requires a complete recoding. The following commands …

Member Avatar
Member Avatar
+1 forum 4

Sometimes you want to add a little functionality to an existing class but you don't want to go to the trouble of sub-classing. A technique that you can use is known as **Extending**. For example, I frequently use regular expressions when working with strings. Wouldn't it be nice if strings supported regular expressions directly, but because they don't I have three choices: 1. sub-class the string class and add the functionality 1. write a separate function that takes a string and a regular expression as parameters 1. Extend the string class Extending can only be done within a module so …

Member Avatar
Member Avatar
+1 forum 1

If your Excel spreadsheet is laid out as regular columns and rows with a header row that identifies the columns then this code will allow you to read the data using ADODB the same way you would read records from a database table. To try this code 1. Create a new project 1. Add a ListBox control named ListBox1 1. Add a project reference to **adodb** 1. Replace the project code with the snippet code To create a test Excel spreadsheet just download the attached **test.zip** and unzip it. The file, **test.xls** contains a table of authors, books and a …

Member Avatar
Member Avatar
+1 forum 2

As part of a project to manage my collection of photos, I wanted to add the capability of displaying a series of files as thumbnails. This posed me with three problems: 1. how to preserve the aspect ratio of the original images 1. how to generate the thumbnails without tying up the application 1. how to avoid running out of memory Because generating thumbnails of images is (I think) of reasonably wide interest I thought I'd write it up as a code snippet. To recreate the project, start with a blank form and add two buttons, btnDetails and btnThumbs. Add …

Member Avatar
Member Avatar
+3 forum 6

Several people have asked about storing binary data in a database. I coded up an example today that uses an ADODB.Stream to copy the binary data but after some fiddling I found a more direct way. If you are using MS SQL Server, the easiest way I have found is to let the DBMS do all the dirty work. This example uses SqlClient but as long as the DBMS supports the operation, the same query should work under ADO or OleDB on other platforms. The example uses a database with two columns.

Member Avatar
+0 forum 0

I find that I occasionaally have special projects where it would be nice to have a context menu for files. I tend to write housekeeping scripts and it is convenient to be able to run these scripts against one or more files at a time without having to navigate and run through the command line. For example, I have accumulated a large number of articles and ebooks. I file them with a consistent naming convention, to wit Author Name - Title.ext where the author name is in the form "First Last" if I have not yet read the article or …

Member Avatar
+0 forum 0

A lot of questions in the VB.NET forum are database related. Most of the code that gets posted result in one or more comments like "use parameterized queries to avoid SQL injection attacks". I won't describe the nature of a SQL injection because it is easily looked up via google. There is a lengthy article at [Wikipedia](http://en.wikipedia.org/wiki/SQL_injection). What I will do here is give two examples of how to create queries using parameters. The first example uses SQLDB and the second uses OLEDB. The major difference between the two is that SQLDB uses named parameters while OLEDB uses positional parameters. …

Member Avatar
Member Avatar
+6 forum 13

One of the things I have been steadfastly avoiding is writing code to print stuff. Most of what I want to print is from withing apps like Outlook or Word that already provide that functionality. But I finally ended up having to bite the bullet. What I ended up with was not pretty but it is (except for one flaw noted in the comments) adequate. I present it here for comments. Perhaps it will be of use to someone else. In a nutshell, printing requires that you "draw" each item on the page, be it text or graphics. As such, …

Member Avatar
Member Avatar
+2 forum 8

The code in this snippet (and attached project zip) demonstrates how to use a background worker thread to monitor a network address (name or IP). It shows how to start and stop the thread and how to update controls in the main thread using delegates. It should be simple to use this code as a template for creating background threads for other tasks. A couple of quick notes: You may wonder why I have tab characters padding out my comments. It becomes more obvious when you set the comments to display with black foreground and light grey (or silver) background. …

Member Avatar
Member Avatar
+1 forum 2

The End.