A few months ago, a business partner and I sold our eBay drop-off store. We opened it in July of 2004 and it was the first eBay drop-off store in the Chicagoland area (maybe all of IL). It was working out OK, but we realized it would never be a huge money maker. The new owner just opened a new location in Manhattan...check it out:
http://www.yourauctionpros.com When we had the store, we had Yahoo DSL. I believe they wanted $40 or $50 for a static IP Address. It wasn't that important we have one, but we wanted one. I developed software for the store that managed the eBay auctions (it talked to eBay via APIs), automated the image resixing, created templates, talked with PayPal (also via APIs), managed out customers, balanced out acounting, etc. Well the software was an ever evolving product which required me to log into the system and migrate new versions. A dynamic IP Address would not do as migrations usually occured during non-business hours.
Solution: IP Address Sender - A windows service that checks the IP Address in the router and emails it to desigated email addresses when it changes.
Download code - Windows version to test with Download code - Windows Service Application configuration settings App.config: The app.config file contains all of the settings you need to make this work for a Linksys router. I have tested it with two models (WRT54G - Wireless-G Broadband Router and BEFCMU10 - Cable Modem with USB and Ethernet Connections). The key names are pretty self-explanatory, but here are a few of the important ones:
Interval - How often will the service check (in milliseconds)
EmailUserName and EmailPassword - For email authentication, if necessary
RouterPage - Page in router intranet site that has the IP Address listed
RouterUserName - Username for logging into router intranet site. Note: Linksys default is " ", not ""
RouterPassword - I believe the Linksys default is "admin"
RouterPatternStart - Regular expression pattern before the IP Address to match
RouterPatternEnd - Regular expression pattern after the IP Address to match
The Start/End Patterns matches are needed since the router page may list multiple IP Addresses.
Main class that does everything
clsMain.vb: The code is well commented, but a few things are worth noting:
Line 115: WebRequest object is used to get the router's HTML
Line 117: Credentials are supplied since the router's intranet sites requires authentication
Line 124-128: A regular expression is used to find a match on the IP Address
Line 136: Saves the IP Address to a physical file at the install path
Line 142: If the IP Address has been updated, an email is sent
Line 166: The new IP Address is saved to the physical file
A word on Windows Services...
Also included in the download zip file are two batch files which make installing and uninstalling the Windows Service a breeze. Be sure to update the paths first! Also, when Windows Services are installed and started, the ApplicationName.exe.config settings are loaded into memory. Any changes to this file will not take effect unless the service is uninstalled and reinstalled.
Yesterday, a friend told me about TopDesk by Otaku Software. I downloaded the trial version, installed it and messed around with it a little. If you haven't seen this yet, it's pretty cool. What is it? According to their
website: "
Find windows, fast. TopDesk is a quick and easy way to switch between applications. With a single key press, you can instantly view thumbnails of all open windows, display thumbnails of windows belonging to the current application, or hide all windows to quickly access the desktop." Basically, it's a replacement for ALT-TAB in Windows.
Immediately, I starting thinking of how to code something like this. At first thought, I believe I'd need:
1. An application running in the background t
- Capture windows and cache them for quick display
- Intercept the ALT-TAB keystroke combination
- Display the open windows (tiled, cascaded, spatial)
- Allow tabbing across windows or use of mouse
2. A SysTray icon to a setup window t
- Makes changing options easy
- Make enabling/disabling the application easy
3. A registry setting to load the application upon Windows start up.
So today, I'm starting to work on recreating this in C#. Stay tuned for periodic updates and email me if you have any suggestions or questions.