Marquee de Sells: Chris's insight outlet for category 'tools' via OData 2.0 Marquee de Sells: Chris's insight outlet for category 'tools' via ATOM 1.0 csells on twitter

You've reached the internet home of Chris Sells, who has a long history as a contributing member of the Windows developer community. He enjoys long walks on the beach and various computer technologies.




Filter Files With Unknown Extensions For XP

The fact that Windows XP Find in Files only searches files with known file extensions drives me crazy because it skips, among other things, .cs  files. Every time I set up a new system, I have to re-figure out how to fix this. To facilitate that, I put together a .reg file that will search all unknown file extensions as text files. Enjoy.

2 comments




Genghis v0.4

Sorry for the long wait. There's been two whole books written between the last release of Genghis and this one. Here's the list of new features:

Thanks to my new build master, Mike Marshal, who got all of this together. He's the greatest!

3 comments




.NET ResourceExplorer

In writing the resources chapter of my WinForms book, I found that there was no single utility for displaying the resource contents of assemblies, .resx files and .resource files (even embedded .resources files) in a way that made sense to me. So, I built one and called it ResourceExplorer.

ResourceExplorer is very simple and could stand some extension to show specific resources at images, text, data, etc, but it certainly served my needs, especially when it came to understanding the usage and limitations of the ResourceReader (for reading .resources files) and the ResXResourceReader (for reading .resx files). Enjoy.

0 comments




New Genghis Release Coming

Here. There has been all kinds of activity on Genghis since the v0.3 release. I've been gathering these bits together to make a coherent v0.4 release in the new year (right after I finish my darn book!). Those of you with final bits and pieces that need to get in before that release, please get them to me ASAP. Thanks.

0 comments




Scancode Mapper

Scancode Mapper is a GUI tool for setting the Scan Code Mapper for Windows Registry settings for Win2K+:

As an example of what this tool does to the Registry, this .reg file turns off the CapsLock key. Of course, changing scancode mappings is a risky business, so be sure of what you're doing before committing the changes and restarting Windows. No warranties extended. Use at your own risk. Enjoy. : )

0 comments




TAPI Explorer

I built the TAPI Explorer (tExplorer) to allow me to understand the various capabilities of the telephony devices installed on my system when I was developing TAPI applications and writing my TAPI book. It grew into a utility for showing all line, address and phone capabilities as well as other TAPI settings, e.g. country codes, telephony locations, service providers, etc. If you're running into TAPI errors that you don't understand, TAPI Explorer will help you work through them.

This version has been run and tested on Windows 98, Windows ME, Windows NT 4.0, Windows 2000 and Windows XP and supports TAPI versions 1.4 through 3.1.

VS.NET Source | VC6 Source (previous version)

0 comments




Genghis v0.3 Release

What's new in Genghis v0.3:

0 comments




Genghis -- 0.2 Release

Thanks to all of the *very* active contributors, Genghis has doubled in size! This update includes:

There's plenty more to see and do, so check out Genghis if you're building WinForms applications.

2 comments




Updated XsdClassesGen

Eric Eric Friedman has submitted code to support namespaces and uninstall. The former fills the biggest hole in XsdClassesGen (thanks Eric), but why would anyone need the latter?!? : )

0 comments




.NET XsdClassesGen

XsdClassesGen is a Custom Tool Add-In to VS.NET 2002 & 2003 to generate type-safe wrapper classes for serializing to and from XML documents. It takes as input an XSD and produces the C# or VB.NET code to do the serialization using the XmlSerializer. This is really just the output of running xsd.exe /classes, but integrated directly into VS.NET.

If you'd like to know more about what a custom tool is and how to build your own, check out CollectionGen.

Also, Atif Aziz used some of my custom tool code and built a generic VS.NET code generator shim that allows you to build a code generator that plugs into VS.NET by implementing a single method.

And, as if that weren't enough, Stephane Tombeur has posted the code to VS2005. Thanks, Stephane!

0 comments




Genghis -- .01 release

We've released the v0.1 version of Genghis. Enjoy!

0 comments




Announcing Genghis

Genghis is a set of extensions built on top of .NET and integrated with WinForms to provide application-level services in the same flavor as the Microsoft Foundation Classes. Genghis gets its name as the functional heir to Attila, a similar set of functionality built on top of ATL.

0 comments




SafeFormatter for .NET

Are you building and deploying .NET applications in a secure environment, e.g. over the intranet or the internet? If so, they you've probably mourned the loss of the binary and SOAP formatters that can automatically serialize a graph of objects that are marked as [Serializable] and that may also implement ISerializable and IDeserializationCallback. Both of these formatters are dependent on reflection, which will not be available in a more restrictive security environment. Likewise, even ISerialization.GetObjectData is verboten if you wanted to do this kind of thing yourself. As far as that goes, [Serializable] and ISerialization should be forbidden in a secure environment, as it allows a client to get and set the private variables of an object, potentially causing harm.

Still, security is the enemy of usability, to paraphrase Keith Brown. So, in the spirit of a balancing the design need for objects that can serialize themselves with the goal of complete disclosure in a secure world, I've built my own "safe" formatter. It only uses facilities of the runtime that work in the most secure environment of the default settings for the internet zone. So that objects can guard themselves against malicious data, I define a new interface called ISafelySerializeable that they need to implement to support this serialization facility. The protocol is exactly the same as ISerializable, so if that interface is already being implemented, the implementation of GetObjectData can be shared between both interfaces.

Currently, the code is in alpha and is riddled with TODO statements, but its functional enough today for actual usage. My SafeFormatter and test harness are available for your feedback. Enjoy.

0 comments



Friday, Apr 12, 2002, 12:00 AM in Tools


Giving VS.NET That XP Look

USE THIS FILE WITH CARE. It causes problems with image lists for .NET EXEs that don't also use the same manifest file.

Just drop this devenv.exe.manifest file next to devenv.exe in your VS.NET install directory and the next time you start VS.NET under XP, it'll look mostly the same! (well, maybe a little different : )

0 comments



Wednesday, Apr 10, 2002, 12:00 AM in Tools


.NET CollectionGen

[Note: As of 5/5/03, the functionality of CollectionGen has been sucked into Eric Smith's CodeSmith. I asked Eric to take on these features because CodeSmith does all of what CollectionGen does and more. All new feature requests/bug reports should go his way.]

CollectionGen is a Custom Tool Add-In to VS.NET 2002 & 2003 to generate type-safe collections. As it turns out, I did almost none of the work. Jon Flanders figured out how to add a custom tool. Shawn Van Ness implemented the template for type-safe collections. I just put it together.

CollectionGen is an add-on to generate code for type-safe collections until we have templates in C# (likely) and VB (unlikely). The benefit of a type-safe collection, of course, is that you can use it without having to cast items to and from objects. Also, Shawn has been very careful to implement a collection class that is very efficient for both reference types and value types.

Once you've setup it up and defined your collections in a collection definition file in your project, you'll have type-safe collection classes generated as part of your design-process, as shown here:

Figure 1: collections.xml collection definition file

 

Figure 2: collections.xml and generated collection.cs implementation file

 

Figure 3: CollectionGen custom tool add-in associated with the collections.xml file

 

Figure 4: Generate type-safe collection code

Enjoy!

Also, Atif Aziz used some of my custom tool code and built a generic VS.NET code generator shim that allows you to build a code generator that plugs into VS.NET by implementing a single method.

0 comments



Saturday, Apr 6, 2002, 12:00 AM in Tools


RegexDesigner.NET

RegexDesigner.NET is a powerful visual tool for helping you construct and test .NET Regular Expressions. When you are happy with your regular expression, RegexDesigner.NET lets you integrate it into your application through native C# or VB.NET code generation and compiled assemblies (usable from any .NET language).

Features:

6 comments



Friday, Mar 8, 2002, 12:00 AM in Tools


.NET IM Client Classes

Inspired by my need to know who was calling without hauling my butt off the couch to look at the caller ID on the phone across the room (my father always said that "laziness is the mother of invention"), I built a couple of C# classes for managing an IM connection and an IM session. The test client is a console application that just sends messages and dumps whatever it gets from the IM server to the console, but I think it would serve as the code is the beginnings of a real IM client. It does the MD5 stuff properly and handles being redirected to another IM server, so the hard part of the protocol is already implemented. The sample itself is a handy little program that logs in as an IM user, sends a message to another IM user and logs back off again. Perfect for annoying your office mates. Enjoy.

BTW, Harry Pierson has made a number of updates to this core code to support his full-blown .NET IM client application. Check it out!

0 comments



Saturday, Feb 16, 2002, 12:00 AM in Tools


Welcome to Genghis!

Welcome to Genghis

Genghis is a set of extensions built on top of .NET and integrated with WinForms to provide application-level services in the same flavor as the Microsoft Foundation Classes. Genghis gets its name as the functional heir to Attila, a similar set of functionality built on top of ATL.

Disclaimer

Most of the Genghis classes were built by different folks and while every effort was made to keep things consistent by choosing .NET and WinForms design techniques, everyone does things their own way.

This work is the work of the individuals involved and does not represent any contribution of their respective employers. You are under no obligation to use any of Genghis at any time, but if you do, you are required to abide by the License.

Installation

You can download the latest Genghis source code from here. The Genghis archive includes this page, the source code to the Genghis class library, a series of samples showing off the various classes and a pre-built, signed version of genghis.dll in the redist folder. Notice that some of the samples use the Genghis files directly instead of using the compiled Genghis assembly. Either usage is supported by Genghis (except where it drives the WinForms Designer nuts).

Source Code Control

Genghis source code control has been moved to the Genghis CodePlex workspace. Thanks to GotDotNet and Rob MacFadyen for hosting the previous versions.

Building Genghis

Genghis is written in C#. Building Genghis requires Visual C# or Visual Studio.NET. Visual Studio.NET solution and project files (*.sln and *.csproj) are provided to build Genghis and all the samples. You should be able to load any solution file into Visual C#/Visual Studio.NET and build the project for yourself.

A NAnt build script (Genghis.build) is also provided. It is used to make the snapshot for Genghis, and is not designed for general use. You may wish to use this file to simulate the snapshot build process; please be aware that you will not be able to properly sign the release mode Genghis DLL (the private key is not provided in this distribution).

For Visual Studio.NET related build issues, please contact the Off Topic Windows mailing list. This is where the Genghis contributors have their discussions, and most of them will be familiar with Visual Studio.NET builds of Genghis. If you have NAnt related build issues, you should contact Mike Marshall (the Genghis build master) directly.

Thanks to Brad Wilson for the NAnt build scripts for folks without VS.NET.

Bug Reports

Bugs will now be kept in the Bug Tracker section of the GDN Workspace.

Please do not send Chris Sells or any of the other contributors personal email complaining about Genghis. Also please do not post Genghis bug reports to any mailing list. A much better way to contribute to the life of Genghis is to submit the fix along with the bug report.

Submission Guidelines

The Genghis Group

This group is made up of official Genghis contributors:

Who Does What

If you'd got something you'd like to see contribute to Genghis, please let me know (multiple people are free to collaborate on a single feature).

Feature

Owner(s)

Progress

Screen Shot(s)

Command line parser

Chris Sells

included

screenshot

Completion combo

Chris Sells

included

screenshot

Control hosting status bar

Ethan Smith

included

screenshot

Cursor changer

Shawn Wildermuth

included

screenshot

Custom check state treeview

Chris Sells

included

screenshot

Custom XP theming controls

Matthew W. Adams et. al.

included

screenshot

File Search Engine

Mike Marshall

included

screenshot

FileDocument class (doc/dirty bit management)

Chris Sells

included

screenshot

FindReplaceDialog

Ramakrishna Vavilala

included

screenshot

FolderNameDialog

Chris Sells

included

screenshot

HandleCollector for the world

Ethan Brown

included

screenshot

Header group box control

Matthew Adams

included

screenshot

Image combo

Horst Veith

included

screenshot

More robust validation ala WebForms

Michael Weinhardt

included

screenshot

Most-Recently-Used (MRU) files support

Michael Weinhardt

included

screenshot

MSN Messenger-style popup window

Mike Marshall

included

screenshot

Multiple Top-Level Windows

Chris Sells

included

screenshot

Multiple-instance detection

Chris Sells

included

Path resolution b/w UNC, local (including SUBST, etc)

Ethan Brown

included

screenshot

Retrieving mapped drives

Ethan Brown

included

screenshot

Retrieving shares

Ethan Brown

included

screenshot

Screen Saver class

Shawn Van Ness

included

screenshot (sorta : )

Scrollable Picture Box

Husein Choroomi

included

screenshot

Sorting listview (including the little triangle thingy)

Horst Veith

included

screenshot

Splash Screen class

Peter Foreman

included

screenshot

Status Bar Extender

Chris Sells

included

screenshot

WebCommandLineHelper

Chris Sells

included

screenshot

Window serializer

Paul Bartrum

included

screenshot

Wizard framework

Shawn Wildermuth

included

screenshot

HtmlLinkLabel class Jeff Key included screenshot
User-resizable panel Ethan Brown included screenshot

Gradient Progress Bar

Mike Marshall

included

screenshot

Command updating

Paul Bartrum

sample

screenshot

Cool bars/Cool menus

Chris Burrows

sample

screenshot

Docking App Bar

Dean Cleaver

sample

screenshot

A real image list control

Matt Wilson (of Attila fame!)

pending

Advanced layout managers, e.g. grid/table

Matthew Adams

pending

Command routing

Paul Bartrum

pending

Dynamically docking/undocking windows

TBD

pending

href exe-safe serialization framework

Chris Sells

pending

Managed HTML display ala a C# port of Mozilla?

TBD

pending

Menu/toolbar editing ala Office or VS.NET

Paul Bartrum, Chris Burrows

pending

Outlook-style Bar

Richard Birkby

pending

SDI, MDI and Explorer-style application wizard

TBD

pending

Tab-based MDI implementation (ala VS.NET)

TBD

pending

Tear-off menus

Matt Wilson

pending

Note: Anything marked with "sample" means that there's a sample included with Genghis that shows the current implementation of a feature but that it's not done enough to be part of the official Genghis component. Mostly the hold-up is integration with the WinForms Designer.

Documentation

The Genghis documentation is composed of the C# documentation comments as part of the automated build. Check redist\Genghis.chm for the latest.

SimplePad

SimplePad is an MFC application that should serve as a simple baseline for what Genghis should enable to be built easily. We currently need a raw WinForms implementation to help guide the Genghis development efforts. After building it, use Help->Help Topics to see the list of features that the MFC SimplePad application provides straight out of the wizard (also duplicated here):

The current .NET implementation of SimplePad is now available as one of the Genghis samples. Thanks to Paul Bartrum and Chris Burrows for all their hard work on this!

History

Sponsors

rmTrack provided the initial hosting space and administration support for Genghis bug tracking and source code control.

License

Copyright © 2002-2004 The Genghis Group

Th is software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.

Permission is granted to anyone to use this software for any purpose, including commercial applications, subject to the following restrictions:

  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation is required, as shown here:

    Portions copyright © 2002-2004 The Genghis Group (http://www.genghisgroup.com/).
     
  2. No substantial portion of the source code of this library may be redistributed without the express written permission of the copyright holders, where "substantial" is defined as enough code to be recognizably from this library.

License Note

This license based on the open source zlib/libpng license. The idea was to keep the license as simple as possible to encourage use of Genghis in free and commercial applications and libraries, but to keep the source code together and to give credit to the Genghis contributors for their efforts. While this license allows shipping Genghis in binary form, if shipping a Genghis variant is the sole purpose of your product, please contact The Genghis Group for a new license.

2 comments



Thursday, Sep 13, 2001, 12:00 AM in Tools


CorPub

Oct 10, 2001

I've updated CorPub to show *all* managed AppDomains by initializing the COR debugging sub-system prior to enumerating them. Thanks to Atif Aziz for the tip.

September 13, 2001

I built the CorPub utility when my friend Jason pointed me at the .NET corpub.idl interfaces (his exact words were "ICorPublishProcess rocks!"). CorPub lists the managed processes on the current machine and the AppDomains in each process, as follows:

Managed process 0xa54: D:\project\mine\RegexPlorer\bin\Debug\RegexPlorer.exe
	AppDomain 0x1: RegexPlorer.exe

Managed process 0xdc8: C:\vs.net\Common7\IDE\devenv.exe
	AppDomain 0x1: DefaultDomain

Managed process 0x1ec: C:\PROGRA~1\MICROS~2.NET\FRAMEW~1\Bin\ildasm.exe
	AppDomain 0x1: DefaultDomain

It's fun for spelunking. Enjoy.

NOTE: .NET beta 2 is required to run this utility.

0 comments



Wednesday, Aug 8, 2001, 12:00 AM in Tools


.NET XML Checker and Validator

Aug 8, 2001

xmlValid is simple command line utility that will check an xml file for well-formedness and, optionally, will validate it against a supplied XML schema file (xsd). I built it to check that my site's HTML files were well-formed (and therefore XHTML-compliance), but it's got all kinds of other uses, including checking .NET .config files. Source is included. Enjoy.

Usage: xmlValid.exe xmlFile [xsdFile]

Note that this utility requires .NET beta 2 to be installed.

0 comments



Tuesday, Aug 7, 2001, 12:00 AM in Tools


Setting the Completion Character

Aug 7, 2001

Whenever I set up a new machine (which happens a lot as WinXP and .NET go through their beta & RC cycles), I always need to manually set up the completion character (to TAB, of course) in the Registry. Shawn VanNess posted a .rgs file that would set this up without the lengthy search through the Registry. Inspired by Shawn, here's my own completionChar.reg that doesn't require a program to parse .rgs files (which doesn't come with Windows).

BTW, if you don't know about the command shell's Completion Character, stop right now, run the completionChar.reg file, start up a WinNT/Win2K/WinXP command shell, type "cd c:\p[TAB]" and watch while the shell expands it to "cd C:\Program Files\" for you. If you have other directories that start with "c:\p", continue to hit [TAB] to cycle through them. This works for any directory or file name and it boosts my productivity by about 100% on the command line. I can't live without it!

0 comments



Sunday, Aug 5, 2001, 12:00 AM in Tools


Moniker Wizard

Here's my moniker wizard that includes the framework used by the Basic Monikers.

0 comments



Saturday, Aug 4, 2001, 12:00 AM in Tools


Tim's COM+ Utilities

Aug 4, 2001

The great and powerful Tim Ewald (author of Transactional COM+: Building Scalable Applications and personal friend of mine) put together a handy little set of COM+ classes and utility functions in a concise header file that he has graciously allowed me to host. Among my favorites are IsInActivity, IsInTransaction, IsSecurityEnabled, GetCallersName,  IsCallerInRole, and parameterized versions of CoGetObjectContext and GetAspObject (which is even cooler than my CAspPtr). Download the code! Buy the book! Feed your brain!

0 comments



Friday, Aug 3, 2001, 12:00 AM in Tools


Command Line Parsing

Aug 3, 2001

I got tired of not having getopt under Win32 and the best version to port doesn't handle slashes (as per the Windows standard) or @files for arguments and it requires you to give away the source for every app that uses it, so, inspired by my friend Josh Gray,  I built my own. It supports typed flags and params, @file support and building full usages on the fly.

Plus, the latest version has support for parsing ANSI or Unicode argfiles, as provided by Johan Nilsson. Thanks, Johan! Also, I've added a contribution by Paul Westcott to support arguments with restricted values. Thanks, Paul! And, as if that weren't enough, Adis Delalic contributed a UML diagram to describe how the CLP is built. Wow.

And as if that weren't enough, Keith Brown ported the command line parser to VS.NET. Thanks, Keith!

0 comments



Thursday, Aug 2, 2001, 12:00 AM in Tools


Expando Objects

Aug 2, 2001

I've seen lots of interest lately in expando objects, e.g. objects that can add methods and properties on the fly. Joe Graf wrote a piece on IDispatchEx in MIND that was pretty interesting. My own implementation of IDispatchEx is available here. It supports expando objects that have no static properties or methods as well as those that do. Check out the DispExTest.js for a demonstration, dispeximpl.h, dynamemlist.h and dynamemlist.cpp for the implementation and MyExpando.h for the usage.

0 comments




23 older posts       25 newer posts

Powered By ASP.NET

Hosted by SecureWebs

Mensa

IEEE