Archive for May, 2006

ASP.NET Crash on “OnBubbleEvent”

May 26, 2006 Leave a comment
When debugging an ASP.NET application, I suddenly got an "Object Not Set to a reference of an object" error on OnBubbleEvent, which leads into unmanaged code in the .NET framework.
Simple solution, CTRL-ALT-DELETE, hit asp_wp.exe, and kill the process.
It works fine afterwards.
Categories: Uncategorized

Capturing a webcam to an AVI file

May 24, 2006 Leave a comment
I previously wrote an application which captures a webcam in VB.NET ( However, this only shows a webcam, and has no facilities to record. Therefore, I added a new function to save bitmaps

Public Sub SaveBitmap(ByVal filename As String)

SendMessage(lwndC, WM_CAP_FILE_SAVEDIB, 0&, filename)

End Sub


Where WM_CAP_FILE_SAVEDIB is defined as WM_USER+25

– It also requires an overloaded SendMessage declaration, which accepts a string as it’s final parameter.


I then found some CS code which converts BMP files to AVI (


then used this to write bitmaps to disk, and build them into an AVI




string strAVI = saveFileDialog.FileName;

string strBMP = saveFileDialog.FileName.Replace(".avi",".bmp");

AviWriter aviWriter =

new AviWriter(strAVI, AviCompression.None, 24, 320, 240);

isRecording =






new Bitmap(strBMP));




Categories: Uncategorized

Compress an AVI movie using C#

May 11, 2006 Leave a comment
I was looking for a way to compress an AVI file down without loosing quality, and to do so programatically, in C#. All I found on the web, were commercial components. However, I just found out you can use QuickTime in C#, to compress the files down in size.

private bool ConvertToQuickTime(AxQTOControlLib.AxQTControl Control,string fromFileName,string toFileName)


this.axQTControl1.URL = fromFileName;

if (!axQTControl1.Movie.CanExport) return false;

QTOLibrary.QTQuickTime qt;

qt = axQTControl1.QuickTime;

if (qt.Exporters.Count == 0) qt.Exporters.Add();

QTOLibrary.QTExporter exp;

exp = qt.Exporters[1];

// Set exporter type: AVI, 3G, MPEG-4, PNG, etc.

exp.TypeName = "QuickTime Movie";


exp.DestinationFileName = toFileName;

exp.ShowProgressDialog =



return true;


Categories: Uncategorized

Converting HHC files to HTML files

May 3, 2006 Leave a comment
Categories: Uncategorized

Converting a DataTable to a Hashtable

May 3, 2006 Leave a comment
This is a handly little C# function to convert a DataTable to a HashTable
(Give credit to this website if you use it!)

private Hashtable convertDataTableToHashTable(DataTable dtIn,string keyField,string valueField)


Hashtable htOut = new Hashtable();

foreach(DataRow drIn in dtIn.Rows)




return htOut;


Categories: Uncategorized

Parsing WindJet routes

May 1, 2006 Leave a comment
Probobly a particularly niche field, but I just developed some code to parse airline routes from the website VolaWindJet.

private string GetWindJetRoutes(string HTML)


string outRoutes = "";

// Step 1. Delete between FL_Departure> and /SELECT

string strOutboundRoutes = DeleteBetween(HTML,"FL_Departure>","/SELECT");

MatchCollection mcDepIata = Regex.Matches(strOutboundRoutes,"value=(?<FromIata>[A-Z]{3})");

// Step 2. extract ToIata Array

string strRegex = @"arrayVoli[(?<IDFrom>d+)][(?<IDTo>d+)]=new.Option(‘w.*'(?<ToIata>w{3})";

MatchCollection mcDestIata = Regex.Matches(HTML,strRegex);

for(int iMatch=0;iMatch<mcDestIata.Count;iMatch++)


int intIDFrom = Convert.ToInt32(mcDestIata[iMatch].Groups["IDFrom"].Value);

string strFromIata = mcDepIata[intIDFrom-1].Groups["FromIata"].Value;

string strToIata = mcDestIata[iMatch].Groups["ToIata"].Value;

outRoutes += "’" + strFromIata + "’,’" + strToIata + "’rn";


return outRoutes;



Might be of interest to someone out there…. (or if not, my own personal reference)

Categories: Uncategorized