Archive

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 (http://www.webtropy.com/articles/art7.asp) 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 (http://midget3d.com/gabe/AviLib.zip)

 

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

 

saveFileDialog.Filter="*.avi|*.avi";

saveFileDialog.ShowDialog();

string strAVI = saveFileDialog.FileName;

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

AviWriter aviWriter =

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

isRecording =

true;

while(isRecording)

{

webcamControl1.SaveBitmap(strBMP);

aviWriter.WriteFrame(

new Bitmap(strBMP));

Application.DoEvents();

}

aviWriter.Close();

 
 
 
Categories: Uncategorized

Compress an AVI movie using C#

May 11, 2006 1 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.SetDataSource(axQTControl1.Movie);

exp.DestinationFileName = toFileName;

exp.ShowProgressDialog =

true;

exp.BeginExport();

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)

{

htOut.Add(drIn[keyField].ToString(),drIn[valueField].ToString());

}

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