<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-29510823</id><updated>2011-11-28T00:12:09.777Z</updated><title type='text'>IT-DEV blog</title><subtitle type='html'>Welcome to my code blog. You'll find mainly VB.NET orientated but you'll find a bit of C# in there if you're lucky.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://it-dev-blog.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29510823/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://it-dev-blog.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Richard Kiernan</name><uri>http://www.blogger.com/profile/14769655934347457215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>7</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-29510823.post-8129956552520658196</id><published>2009-08-27T10:21:00.001Z</published><updated>2009-08-27T10:21:22.972Z</updated><title type='text'>Cost of Raising an Exception</title><content type='html'>&lt;p&gt;Here’s an interesting bit of code that highlights the true costs when raising exceptions:&lt;/p&gt;  &lt;p&gt;&lt;font size="1" face="Courier New"&gt;Sub Main() &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="1" face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Dim sw As New Stopwatch     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; sw.Start()      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Dim obj As String      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; For i As Integer = 0 To 10000      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Try      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Dim myObj As Object = Guid.NewGuid &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="1" face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; obj = myObj &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="1" face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Catch ex As Exception &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="1" face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; End Try     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Next &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="1" face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; sw.Stop()     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Console.WriteLine(sw.ElapsedMilliseconds)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; sw.Reset()      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; sw.Start()      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; For i As Integer = 0 To 10000      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Try      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Dim myObj As Object = Guid.NewGuid &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="1" face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; obj = CType(myObj, Guid).ToString &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="1" face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Catch ex As Exception &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="1" face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; End Try &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="1" face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Next &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="1" face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; sw.Stop()     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Console.WriteLine(sw.ElapsedMilliseconds)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Console.ReadLine()      &lt;br /&gt; End Sub &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;The timings on my laptop were 30000ms for loop 1 i.e. where we’re trying to cause exceptions and just 6ms for loop 2 where we casting types correctly!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29510823-8129956552520658196?l=it-dev-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://it-dev-blog.blogspot.com/feeds/8129956552520658196/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29510823&amp;postID=8129956552520658196&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29510823/posts/default/8129956552520658196'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29510823/posts/default/8129956552520658196'/><link rel='alternate' type='text/html' href='http://it-dev-blog.blogspot.com/2009/08/cost-of-raising-exception.html' title='Cost of Raising an Exception'/><author><name>Richard Kiernan</name><uri>http://www.blogger.com/profile/14769655934347457215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29510823.post-3199338183723188832</id><published>2009-08-26T20:29:00.001Z</published><updated>2009-08-26T20:29:23.697Z</updated><title type='text'>Filestreams and freetext search</title><content type='html'>&lt;p&gt;File streams in SQL 2008 provide a nice way of storing large blobs of data in the database without impacting database size. However creating them manually is not something that interests most programmers who want to use SMO.&lt;/p&gt;  &lt;p&gt;So how can we create these through code?&lt;/p&gt;  &lt;p&gt;The first thing you need to do is enable FILESTREAMS if they’re not already. Do this from SQL Server Configuration Manager:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_XpXDaFBrb70/SpWbC8n_ZZI/AAAAAAAAARE/jJQ2m6rNmoU/s1600-h/image%5B10%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_XpXDaFBrb70/SpWbEdOFLlI/AAAAAAAAARI/aQA_cvzlGw4/image_thumb%5B4%5D.png?imgmax=800" width="641" height="192" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Select Properties from the action menu&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_XpXDaFBrb70/SpWbFfnmqaI/AAAAAAAAARM/T4F1K-UF0vU/s1600-h/image%5B2%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_XpXDaFBrb70/SpWbGBYZiuI/AAAAAAAAARQ/oWmeFaH-_60/image_thumb.png?imgmax=800" width="222" height="244" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Enable Filestreams &amp;amp; restart the database if needed.&lt;/p&gt;  &lt;p&gt;You now need to enable Filestream access (Server Properties-&amp;gt;Advanced) on the server from SQL Management studio.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_XpXDaFBrb70/SpWbHTikpQI/AAAAAAAAARU/LXrLd8hi_RY/s1600-h/image%5B16%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_XpXDaFBrb70/SpWbIvR-NcI/AAAAAAAAARY/mZnjyT4clMU/image_thumb%5B14%5D.png?imgmax=800" width="630" height="198" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;We’re now ready to start creating a database with a filestream and some tables:&lt;/p&gt;  &lt;h4&gt;Create The Database:&lt;/h4&gt;  &lt;p&gt;You can look at the article by &lt;a href="http://vinothnat.blogspot.com/2009/01/creating-database-with-filestream-using.html" target="_blank"&gt;S.Vinothkumar&lt;/a&gt; or use the code based on his work below:&lt;/p&gt;  &lt;p&gt;&lt;font size="1" face="Courier New"&gt;Sub CreateDatabaseWithStream(ByVal dbName As String, ByVal serverName As String, ByVal dbPath As String) &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="1" face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160; Dim mdfFile As String = IO.Path.Combine(dbPath, dbName &amp;amp; &amp;quot;.mdf&amp;quot;)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Dim ldfFile As String = IO.Path.Combine(dbPath, dbName &amp;amp; &amp;quot;_log.ldf&amp;quot;)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Dim FilesDir As String = IO.Path.Combine(dbPath, dbName &amp;amp; &amp;quot;_filestream&amp;quot;) &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="1" face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160; Dim server As New Microsoft.SqlServer.Management.Smo.Server(serverName)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Dim database As Database = New Database(server, dbName)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; database.FileGroups.Add(New FileGroup(database, &amp;quot;PRIMARY&amp;quot;))      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; database.FileGroups.Add(New FileGroup(database, &amp;quot;FileStream&amp;quot; &amp;amp; dbName, True))      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Dim dtPrimary As DataFile = New DataFile(database.FileGroups(&amp;quot;PRIMARY&amp;quot;), &amp;quot;PriValue&amp;quot;, mdfFile)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; database.FileGroups(&amp;quot;PRIMARY&amp;quot;).Files.Add(dtPrimary)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; database.FileGroups(&amp;quot;FileStream&amp;quot; &amp;amp; dbName).Files.Add(New DataFile(database.FileGroups(&amp;quot;FileStream&amp;quot; &amp;amp; dbName), &amp;quot;FileStream&amp;quot; &amp;amp; dbName &amp;amp; &amp;quot; Values&amp;quot;, FilesDir))      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Dim logFile As LogFile = New LogFile(database, &amp;quot;PriValue_log&amp;quot;, ldfFile)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; database.LogFiles.Add(logFile)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; database.Create()      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; database.Refresh()      &lt;br /&gt;End Sub &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;h4&gt;Add A Table:&lt;/h4&gt;  &lt;p&gt;we now need to create a table with some columns, a data column and a type column.&lt;/p&gt;  &lt;p&gt;The function below does this, the important things to remember are to set the id as a unqiue key.&lt;/p&gt;  &lt;p&gt;&lt;font size="1" face="Courier New"&gt;Sub CreateTable(ByVal db As Database, ByVal tableName As String) &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="1" face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Dim tb As New Table(db, tableName)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Dim col As Column      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; col = New Column(tb, &amp;quot;rowid&amp;quot;, DataType.UniqueIdentifier)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; col.Identity = False      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; col.Nullable = False      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; col.RowGuidCol = True      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Dim Dc As DefaultConstraint = col.AddDefaultConstraint(&amp;quot;DF_RowGuid&amp;quot;)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Dc.Text = &amp;quot;NEWID()&amp;quot;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; tb.Columns.Add(col)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; tb.Create() &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="1" face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Dim idx As New Index(tb, &amp;quot;AK_&amp;quot; &amp;amp; Now.Ticks)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Dim icol1 As IndexedColumn      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; icol1 = New IndexedColumn(idx, &amp;quot;rowid&amp;quot;, False)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; idx.IndexedColumns.Add(icol1)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; idx.IndexKeyType = IndexKeyType.DriUniqueKey      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; idx.IsClustered = True      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; idx.Create() &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="1" face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; col = New Column(tb, &amp;quot;filedata&amp;quot;, DataType.VarBinaryMax, True)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; col.Identity = False      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; col.Nullable = True      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; tb.Columns.Add(col)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; col = New Column(tb, &amp;quot;ext&amp;quot;, DataType.VarChar(255))      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; col.Identity = False      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; col.Nullable = True      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; tb.Columns.Add(col)&amp;#160; &lt;br /&gt;&lt;/font&gt;&lt;font size="1" face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; tb.Alter()     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; db.Alter()      &lt;br /&gt;&amp;#160; End Sub&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="1" face="Courier New"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;h4&gt;Create The Text Index:&lt;/h4&gt;  &lt;p&gt;Once we have our database then it’s time to create a our freetext index. You can do this simply by create a new freetext catalog for our new database, this is well documented &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sqlserver.management.smo.server.fulltextservice.aspx" target="_blank"&gt;here&lt;/a&gt; but in summary is creates a new catalog against the specified database.&lt;/p&gt;  &lt;p&gt;&lt;font size="1" face="Courier New"&gt;dim ftc as New FullTextCatalog(db, &amp;quot;Test_Catalog&amp;quot;)     &lt;br /&gt;&lt;/font&gt;&lt;font size="1" face="Courier New"&gt;ftc.IsDefault = True     &lt;br /&gt;&lt;/font&gt;&lt;font size="1" face="Courier New"&gt;ftc.Create()     &lt;br /&gt;&lt;/font&gt;&lt;font size="1" face="Courier New"&gt;Dim fti As FullTextIndex     &lt;br /&gt;&lt;/font&gt;&lt;font size="1" face="Courier New"&gt;fti = New FullTextIndex(tb)     &lt;br /&gt;Dim ftic As FullTextIndexColumn      &lt;br /&gt;ftic = New FullTextIndexColumn(fti, &amp;quot;filedata&amp;quot;)      &lt;br /&gt;ftic.TypeColumnName = &amp;quot;ext&amp;quot;      &lt;br /&gt;ftic.Language = &amp;quot;English&amp;quot;      &lt;br /&gt;fti.IndexedColumns.Add(ftic)      &lt;br /&gt;fti.ChangeTracking = ChangeTracking.Automatic      &lt;br /&gt;fti.UniqueIndexName = idx.Name      &lt;br /&gt;fti.CatalogName = &amp;quot;Test_Catalog&amp;quot;      &lt;br /&gt;&lt;/font&gt;&lt;font size="1" face="Courier New"&gt;fti.Create()&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;So with everything setup the next thing to do is load your data into the table – make sure that you set the extension and the text indexing engine will do the rest. Then just use contains TSQL contains to mine the text catalog.&lt;/p&gt;  &lt;p&gt;&lt;font size="1" face="Courier New"&gt;DECLARE @SearchWord nvarchar(30)     &lt;br /&gt;SET @SearchWord = 'test'      &lt;br /&gt;SELECT id,name      &lt;br /&gt;FROM files      &lt;br /&gt;WHERE CONTAINS(filedata, @SearchWord); &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="1" face="Courier New"&gt;&lt;font size="3" face="Verdana"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="1" face="Courier New"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29510823-3199338183723188832?l=it-dev-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://it-dev-blog.blogspot.com/feeds/3199338183723188832/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29510823&amp;postID=3199338183723188832&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29510823/posts/default/3199338183723188832'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29510823/posts/default/3199338183723188832'/><link rel='alternate' type='text/html' href='http://it-dev-blog.blogspot.com/2009/08/filestreams-and-freetext-search.html' title='Filestreams and freetext search'/><author><name>Richard Kiernan</name><uri>http://www.blogger.com/profile/14769655934347457215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_XpXDaFBrb70/SpWbEdOFLlI/AAAAAAAAARI/aQA_cvzlGw4/s72-c/image_thumb%5B4%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29510823.post-7290348559980681689</id><published>2009-08-06T20:39:00.001Z</published><updated>2009-08-06T20:39:32.818Z</updated><title type='text'>Rail Time!</title><content type='html'>&lt;p&gt;If you used MyRail for the iPhone then check this link out&lt;/p&gt;  &lt;p&gt;&lt;a title="http://railtimes.it-dev.co.uk/railtimes/" href="http://railtimes.it-dev.co.uk/railtimes/"&gt;http://railtimes.it-dev.co.uk/railtimes/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_XpXDaFBrb70/Sns_fwkOJiI/AAAAAAAAAQ8/EBSMygnZpQ8/s1600-h/image%5B2%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_XpXDaFBrb70/Sns_gwstjvI/AAAAAAAAARA/WoUU5kjRi7I/image_thumb.png?imgmax=800" width="152" height="244" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;It’s a web app with a simple interface that I knocked together to make searching train times simple and flexible.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29510823-7290348559980681689?l=it-dev-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://it-dev-blog.blogspot.com/feeds/7290348559980681689/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29510823&amp;postID=7290348559980681689&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29510823/posts/default/7290348559980681689'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29510823/posts/default/7290348559980681689'/><link rel='alternate' type='text/html' href='http://it-dev-blog.blogspot.com/2009/08/rail-time.html' title='Rail Time!'/><author><name>Richard Kiernan</name><uri>http://www.blogger.com/profile/14769655934347457215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_XpXDaFBrb70/Sns_gwstjvI/AAAAAAAAARA/WoUU5kjRi7I/s72-c/image_thumb.png?imgmax=800' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29510823.post-2953865426433261712</id><published>2009-04-22T07:50:00.001Z</published><updated>2009-05-18T21:39:19.269Z</updated><title type='text'>DavCopy for Humyo</title><content type='html'>&lt;p&gt;&lt;a href="http://www.humyo.com/" target="_blank"&gt;Humyo&lt;/a&gt; is so cool - the server side support for image and video is so neat. &lt;/p&gt;  &lt;p&gt;After using it for a weeks or two I realised that the client saps bandwidth on an already slow ADSL connection and doesn’t do what I want it to do. So for those interested, I’ve built my own sync app that runs on .NET 2.0 and uses the WebDAV interface over https. &lt;/p&gt;  &lt;p&gt;What it does do:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Local folder/file to remote folder &lt;/li&gt;    &lt;li&gt;Remote folder to local folder &lt;/li&gt;    &lt;li&gt;Sets time stamps correctly (why do &lt;a href="http://www.webdav.org/" target="_blank"&gt;WebDAV&lt;/a&gt; interfaces not support this!!!) &lt;/li&gt;    &lt;li&gt;Tells you what it’s doing &lt;/li&gt;    &lt;li&gt;It’s free &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;What it doesn’t do&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Have a UI – it’s command line &lt;/li&gt;    &lt;li&gt;Cost anything for non commercial users &lt;/li&gt;    &lt;li&gt;Make tea,coffee or any other hot or cold beverage &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://www.it-dev.co.uk/Solutions/Products/DavCopy/tabid/70/Default.aspx" target="_blank"&gt;DavCopy Link&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29510823-2953865426433261712?l=it-dev-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://it-dev-blog.blogspot.com/feeds/2953865426433261712/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29510823&amp;postID=2953865426433261712&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29510823/posts/default/2953865426433261712'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29510823/posts/default/2953865426433261712'/><link rel='alternate' type='text/html' href='http://it-dev-blog.blogspot.com/2009/04/davcopy-for-humyo.html' title='DavCopy for Humyo'/><author><name>Richard Kiernan</name><uri>http://www.blogger.com/profile/14769655934347457215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29510823.post-115637195537090647</id><published>2006-08-23T22:25:00.000Z</published><updated>2006-08-23T22:27:59.323Z</updated><title type='text'>Render HTML To Image</title><content type='html'>&lt;div class=Section1&gt;  &lt;p class=MsoNormal&gt;&lt;font size=3 face="Times New Roman"&gt;&lt;span lang=EN-GB style='font-size:12.0pt'&gt;This is a piece of .NET 2.0 code I&amp;#8217;ve been toying with for ages and finally had some time to get it working &amp;#8211; thanks to the many other people who&amp;#8217;ve posted articles relating to this task. Lots of people seem to be selling components that do this but it&amp;#8217;s such a fundamentally basic task I reckon it&amp;#8217;s better to share this with everyone as it has so many uses.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=3 face="Times New Roman"&gt;&lt;span lang=EN-GB style='font-size:12.0pt'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 color=blue face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"; color:blue'&gt;Imports&lt;/span&gt;&lt;/font&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt; mshtml&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 color=blue face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"; color:blue'&gt;Imports&lt;/span&gt;&lt;/font&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt; System.Runtime.InteropServices&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 color=blue face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"; color:blue'&gt;Public&lt;/span&gt;&lt;/font&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Class&lt;/span&gt;&lt;/font&gt; getWebPageThumb&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Dim&lt;/span&gt;&lt;/font&gt; MyWebBrowser &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; System.Windows.Forms.WebBrowser = _&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;New&lt;/span&gt;&lt;/font&gt; System.Windows.Forms.WebBrowser&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Guid(&lt;font color=maroon&gt;&lt;span style='color:maroon'&gt;&amp;quot;3050f669-98b5-11cf-bb82-00aa00bdce0b&amp;quot;&lt;/span&gt;&lt;/font&gt;), _&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; InterfaceType(ComInterfaceType.InterfaceIsIUnknown), _&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ComVisible(&lt;font color=blue&gt;&lt;span style='color:blue'&gt;True&lt;/span&gt;&lt;/font&gt;), _&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ComImport()&amp;gt; _&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Interface&lt;/span&gt;&lt;/font&gt; IHTMLElementRender&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Sub&lt;/span&gt;&lt;/font&gt; DrawToDC(&amp;lt;[In]()&amp;gt; _&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;ByVal&lt;/span&gt;&lt;/font&gt; hDC &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; IntPtr)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Sub&lt;/span&gt;&lt;/font&gt; SetDocumentPrinter(&amp;lt;[In](), MarshalAs(UnmanagedType.BStr)&amp;gt; _&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;ByVal&lt;/span&gt;&lt;/font&gt; bstrPrinterName &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;String&lt;/span&gt;&lt;/font&gt;, &amp;lt;[In]()&amp;gt; _&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;ByVal&lt;/span&gt;&lt;/font&gt; hDC &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; IntPtr)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;End&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Interface&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 color=blue face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"; color:blue'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Public&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Function&lt;/span&gt;&lt;/font&gt; getImage(&lt;font color=blue&gt;&lt;span style='color:blue'&gt;ByVal&lt;/span&gt;&lt;/font&gt; url &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;String&lt;/span&gt;&lt;/font&gt;, &lt;font color=blue&gt;&lt;span style='color:blue'&gt;ByVal&lt;/span&gt;&lt;/font&gt; thumbSize &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; Size) &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; Image&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Dim&lt;/span&gt;&lt;/font&gt; imageThumb &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; Image = &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Nothing&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MyWebBrowser.Url = &lt;font color=blue&gt;&lt;span style='color:blue'&gt;New&lt;/span&gt;&lt;/font&gt; Uri(url)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Dim&lt;/span&gt;&lt;/font&gt; startTime &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Date&lt;/span&gt;&lt;/font&gt; = Now&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;While&lt;/span&gt;&lt;/font&gt; MyWebBrowser.ReadyState &amp;lt;&amp;gt; WebBrowserReadyState.Complete&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Application.DoEvents()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Threading.Thread.Sleep(100)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;If&lt;/span&gt;&lt;/font&gt; Now.Subtract(startTime).TotalMinutes &amp;gt; 1 &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Then&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Exit&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;While&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;End&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;While&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MyWebBrowser.Size = &lt;font color=blue&gt;&lt;span style='color:blue'&gt;New&lt;/span&gt;&lt;/font&gt; Size(800, 1200)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Dim&lt;/span&gt;&lt;/font&gt; document &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; IHTMLDocument2 = _&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;CType&lt;/span&gt;&lt;/font&gt;(MyWebBrowser.Document.DomDocument, IHTMLDocument2)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;If&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Not&lt;/span&gt;&lt;/font&gt; (document &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Is&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Nothing&lt;/span&gt;&lt;/font&gt;) &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Then&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Dim&lt;/span&gt;&lt;/font&gt; element &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; IHTMLElement = &lt;font color=blue&gt;&lt;span style='color:blue'&gt;CType&lt;/span&gt;&lt;/font&gt;(document.body, IHTMLElement)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;If&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Not&lt;/span&gt;&lt;/font&gt; (element &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Is&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Nothing&lt;/span&gt;&lt;/font&gt;) &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Then&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 color=blue face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"; color:blue'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Dim&lt;/span&gt;&lt;/font&gt; render &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; hostingForm.IHTMLElementRender _&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = &lt;font color=blue&gt;&lt;span style='color:blue'&gt;CType&lt;/span&gt;&lt;/font&gt;(element, hostingForm.IHTMLElementRender)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;If&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Not&lt;/span&gt;&lt;/font&gt; (render &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Is&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Nothing&lt;/span&gt;&lt;/font&gt;) &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Then&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Dim&lt;/span&gt;&lt;/font&gt; bm &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; Bitmap = &lt;font color=blue&gt;&lt;span style='color:blue'&gt;New&lt;/span&gt;&lt;/font&gt; Bitmap(1024, 1024)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Dim&lt;/span&gt;&lt;/font&gt; g &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; System.Drawing.Graphics&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; g = System.Drawing.Graphics.FromImage(bm)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; g.SmoothingMode = Drawing2D.SmoothingMode.HighQuality&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Try&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Dim&lt;/span&gt;&lt;/font&gt; hdcDestination &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; IntPtr = g.GetHdc&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; render.DrawToDC(hdcDestination)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=blue&gt;&lt;span style='color:blue'&gt;Dim&lt;/span&gt;&lt;/font&gt; hdcMemory &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; IntPtr = GDI32.CreateCompatibleDC(hdcDestination)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-left:144.0pt;text-autospace:none'&gt;&lt;font size=1 color=blue face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family: "Courier New";color:blue'&gt;Dim&lt;/span&gt;&lt;/font&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt; bitmap &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; IntPtr = GDI32.CreateCompatibleBitmap(hdcDestination, _&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-left:144.0pt;text-indent:36.0pt;text-autospace: none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family: "Courier New"'&gt;MyWebBrowser.ClientRectangle.Width, MyWebBrowser.ClientRectangle.Height)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;If&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Not&lt;/span&gt;&lt;/font&gt; (bitmap = IntPtr.Zero) &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Then&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Dim&lt;/span&gt;&lt;/font&gt; hOld &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; IntPtr = &lt;font color=blue&gt;&lt;span style='color:blue'&gt;CType&lt;/span&gt;&lt;/font&gt;(GDI32.SelectObject(hdcMemory, bitmap), IntPtr)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GDI32.BitBlt(hdcMemory, 0, 0, MyWebBrowser.ClientRectangle.Width, _&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-left:144.0pt;text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;MyWebBrowser.ClientRectangle.Height, hdcDestination, 0, 0, _&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-left:144.0pt;text-autospace:none'&gt;&lt;font size=1 color=blue face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family: "Courier New";color:blue'&gt;CType&lt;/span&gt;&lt;/font&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;(GDI32.TernaryRasterOperations.SRCCOPY, &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Integer&lt;/span&gt;&lt;/font&gt;))&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GDI32.SelectObject(hdcMemory, hOld)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GDI32.DeleteDC(hdcMemory)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=blue&gt;&lt;span style='color:blue'&gt;Dim&lt;/span&gt;&lt;/font&gt; myBmp &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; Bitmap = &lt;font color=blue&gt;&lt;span style='color:blue'&gt;New&lt;/span&gt;&lt;/font&gt; Bitmap(1024, 1024)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; g.ReleaseHdc(hdcDestination)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; g.DrawImage(myBmp, &lt;font color=blue&gt;&lt;span style='color:blue'&gt;New&lt;/span&gt;&lt;/font&gt; Point(0, 0))&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; imageThumb = bm.GetThumbnailImage(thumbSize.Width, thumbSize.Height, &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Nothing&lt;/span&gt;&lt;/font&gt;, &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Nothing&lt;/span&gt;&lt;/font&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;End&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;If&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Finally&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;CType&lt;/span&gt;&lt;/font&gt;(g, IDisposable).Dispose()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;End&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Try&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;End&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;If&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;End&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;If&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;End&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;If&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Return&lt;/span&gt;&lt;/font&gt; imageThumb&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;End&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Function&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 color=blue face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"; color:blue'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 color=blue face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"; color:blue'&gt;End&lt;/span&gt;&lt;/font&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Class&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=1 face="Times New Roman"&gt;&lt;span lang=EN-GB style='font-size:8.0pt'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 color=blue face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"; color:blue'&gt;Class&lt;/span&gt;&lt;/font&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt; GDI32&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Enum&lt;/span&gt;&lt;/font&gt; TernaryRasterOperations &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Integer&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SRCCOPY = 13369376 &lt;font color=green&gt;&lt;span style='color:green'&gt;'dest = source&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SRCPAINT = 15597702 &lt;font color=green&gt;&lt;span style='color:green'&gt;'dest = source OR dest&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SRCAND = 8913094 &lt;font color=green&gt;&lt;span style='color:green'&gt;'dest = source AND dest&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SRCINVERT = 6684742 &lt;font color=green&gt;&lt;span style='color:green'&gt;'dest = source XOR dest&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SRCERASE = 4457256 &lt;font color=green&gt;&lt;span style='color:green'&gt;'dest = source AND (NOT dest )&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NOTSRCCOPY = 3342344 &lt;font color=green&gt;&lt;span style='color:green'&gt;'dest = (NOT source)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NOTSRCERASE = 1114278 &lt;font color=green&gt;&lt;span style='color:green'&gt;'dest = (NOT src) AND (NOT dest) &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MERGECOPY = 12583114 &lt;font color=green&gt;&lt;span style='color:green'&gt;'dest = (source AND pattern)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MERGEPAINT = 12255782 &lt;font color=green&gt;&lt;span style='color:green'&gt;'dest = (NOT source) OR dest&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PATCOPY = 15728673 &lt;font color=green&gt;&lt;span style='color:green'&gt;'dest = pattern&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PATPAINT = 16452105 &lt;font color=green&gt;&lt;span style='color:green'&gt;'dest = DPSnoo&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PATINVERT = 5898313 &lt;font color=green&gt;&lt;span style='color:green'&gt;'dest = pattern XOR dest&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DSTINVERT = 5570569 &lt;font color=green&gt;&lt;span style='color:green'&gt;'dest = (NOT dest)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BLACKNESS = 66 &lt;font color=green&gt;&lt;span style='color:green'&gt;'dest = BLACK&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WHITENESS = 16711778 &lt;font color=green&gt;&lt;span style='color:green'&gt;'dest = WHITE&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 color=green face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"; color:green'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;End&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Enum&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 color=blue face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"; color:blue'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Public&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Shared&lt;/span&gt;&lt;/font&gt; SRCCOPY &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Integer&lt;/span&gt;&lt;/font&gt; = &amp;amp;HCC0020&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=green&gt;&lt;span style='color:green'&gt;' BitBlt dwRop parameter &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 color=green face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"; color:green'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;DllImport(&lt;font color=maroon&gt;&lt;span style='color:maroon'&gt;&amp;quot;gdi32.dll&amp;quot;&lt;/span&gt;&lt;/font&gt;)&amp;gt; _&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Public&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Shared&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Function&lt;/span&gt;&lt;/font&gt; BitBlt(&lt;font color=blue&gt;&lt;span style='color:blue'&gt;ByVal&lt;/span&gt;&lt;/font&gt; hObject &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; IntPtr, &lt;font color=blue&gt;&lt;span style='color:blue'&gt;ByVal&lt;/span&gt;&lt;/font&gt; nXDest &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Integer&lt;/span&gt;&lt;/font&gt;, &lt;font color=blue&gt;&lt;span style='color:blue'&gt;ByVal&lt;/span&gt;&lt;/font&gt; nYDest &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Integer&lt;/span&gt;&lt;/font&gt;, &lt;font color=blue&gt;&lt;span style='color:blue'&gt;ByVal&lt;/span&gt;&lt;/font&gt; nWidth &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Integer&lt;/span&gt;&lt;/font&gt;, &lt;font color=blue&gt;&lt;span style='color:blue'&gt;ByVal&lt;/span&gt;&lt;/font&gt; nHeight &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Integer&lt;/span&gt;&lt;/font&gt;, &lt;font color=blue&gt;&lt;span style='color:blue'&gt;ByVal&lt;/span&gt;&lt;/font&gt; hObjectSource &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; IntPtr, &lt;font color=blue&gt;&lt;span style='color:blue'&gt;ByVal&lt;/span&gt;&lt;/font&gt; nXSrc &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Integer&lt;/span&gt;&lt;/font&gt;, &lt;font color=blue&gt;&lt;span style='color:blue'&gt;ByVal&lt;/span&gt;&lt;/font&gt; nYSrc &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Integer&lt;/span&gt;&lt;/font&gt;, &lt;font color=blue&gt;&lt;span style='color:blue'&gt;ByVal&lt;/span&gt;&lt;/font&gt; dwRop &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Integer&lt;/span&gt;&lt;/font&gt;) &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Boolean&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;End&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Function&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;DllImport(&lt;font color=maroon&gt;&lt;span style='color:maroon'&gt;&amp;quot;gdi32.dll&amp;quot;&lt;/span&gt;&lt;/font&gt;)&amp;gt; _&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Public&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Shared&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Function&lt;/span&gt;&lt;/font&gt; CreateCompatibleBitmap(&lt;font color=blue&gt;&lt;span style='color:blue'&gt;ByVal&lt;/span&gt;&lt;/font&gt; hDC &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; IntPtr, &lt;font color=blue&gt;&lt;span style='color:blue'&gt;ByVal&lt;/span&gt;&lt;/font&gt; nWidth &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Integer&lt;/span&gt;&lt;/font&gt;, &lt;font color=blue&gt;&lt;span style='color:blue'&gt;ByVal&lt;/span&gt;&lt;/font&gt; nHeight &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Integer&lt;/span&gt;&lt;/font&gt;) &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; IntPtr&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;End&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Function&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;DllImport(&lt;font color=maroon&gt;&lt;span style='color:maroon'&gt;&amp;quot;gdi32.dll&amp;quot;&lt;/span&gt;&lt;/font&gt;)&amp;gt; _&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Public&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Shared&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Function&lt;/span&gt;&lt;/font&gt; CreateCompatibleDC(&lt;font color=blue&gt;&lt;span style='color:blue'&gt;ByVal&lt;/span&gt;&lt;/font&gt; hDC &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; IntPtr) &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; IntPtr&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;End&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Function&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;DllImport(&lt;font color=maroon&gt;&lt;span style='color:maroon'&gt;&amp;quot;gdi32.dll&amp;quot;&lt;/span&gt;&lt;/font&gt;)&amp;gt; _&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Public&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Shared&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Function&lt;/span&gt;&lt;/font&gt; DeleteDC(&lt;font color=blue&gt;&lt;span style='color:blue'&gt;ByVal&lt;/span&gt;&lt;/font&gt; hDC &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; IntPtr) &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Boolean&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;End&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Function&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;DllImport(&lt;font color=maroon&gt;&lt;span style='color:maroon'&gt;&amp;quot;gdi32.dll&amp;quot;&lt;/span&gt;&lt;/font&gt;)&amp;gt; _&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Public&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Shared&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Function&lt;/span&gt;&lt;/font&gt; DeleteObject(&lt;font color=blue&gt;&lt;span style='color:blue'&gt;ByVal&lt;/span&gt;&lt;/font&gt; hObject &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; IntPtr) &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Boolean&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;End&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Function&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;DllImport(&lt;font color=maroon&gt;&lt;span style='color:maroon'&gt;&amp;quot;gdi32.dll&amp;quot;&lt;/span&gt;&lt;/font&gt;)&amp;gt; _&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Public&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Shared&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Function&lt;/span&gt;&lt;/font&gt; SelectObject(&lt;font color=blue&gt;&lt;span style='color:blue'&gt;ByVal&lt;/span&gt;&lt;/font&gt; hDC &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; IntPtr, &lt;font color=blue&gt;&lt;span style='color:blue'&gt;ByVal&lt;/span&gt;&lt;/font&gt; hObject &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; IntPtr) &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; IntPtr&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;End&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Function&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 color=blue face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"; color:blue'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;font size=1 color=blue face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"; color:blue'&gt;End&lt;/span&gt;&lt;/font&gt;&lt;font size=1 face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New"'&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Class&lt;/span&gt;&lt;/font&gt; &lt;font color=green&gt;&lt;span style='color:green'&gt;'GDI32 &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=1 face="Times New Roman"&gt;&lt;span lang=EN-GB style='font-size:8.0pt'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29510823-115637195537090647?l=it-dev-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://it-dev-blog.blogspot.com/feeds/115637195537090647/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29510823&amp;postID=115637195537090647&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29510823/posts/default/115637195537090647'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29510823/posts/default/115637195537090647'/><link rel='alternate' type='text/html' href='http://it-dev-blog.blogspot.com/2006/08/render-html-to-image_23.html' title='Render HTML To Image'/><author><name>Richard Kiernan</name><uri>http://www.blogger.com/profile/14769655934347457215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29510823.post-115558650601052545</id><published>2006-08-14T20:08:00.000Z</published><updated>2006-08-14T20:50:34.453Z</updated><title type='text'>SQL 2005 CLR Pivot Update</title><content type='html'>Here's an update to my SQL Pivot function but running it on the database under the CLR. Unfortunately you have to push in the source sql which is a bit naff but quite effective. You'll need to enable the EXTERNAL permissions and enable the CLR.&lt;br /&gt;&lt;br /&gt;EXEC sp_configure 'clr enabled', 1&lt;br /&gt;&lt;br /&gt;RECONFIGURE WITH OVERRIDE&lt;br /&gt;&lt;br /&gt;ALTER DATABASE &lt;dbname&gt;SET TRUSTWORTHY ON&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:78%;"&gt;Imports System&lt;br /&gt;Imports System.Data&lt;br /&gt;Imports System.Data.SqlClient&lt;br /&gt;Imports System.Data.SqlTypes&lt;br /&gt;Imports Microsoft.SqlServer.Server&lt;br /&gt;&lt;br /&gt;Partial Public Class StoredProcedures&lt;br /&gt;&amp;lt;microsoft.sqlserver.server.sqlprocedure()&amp;gt; _&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:78%;"&gt;Public Shared Sub CLRPivot(ByVal srcQuery As String, ByVal pivotColumn As String, ByVal pivotKeyColumn As String, ByVal pivotValueColumn As String, ByVal separatorStr As String)&lt;br /&gt;Dim p As SqlPipe = SqlContext.Pipe&lt;br /&gt;Dim connection As SqlConnection = New SqlConnection("context connection=true")&lt;br /&gt;Dim connection2 As SqlConnection = New SqlConnection("Server=localhost;Database=&lt;db&gt;;Trusted_Connection=True;")&lt;br /&gt;connection2.Open()&lt;br /&gt;Try&lt;br /&gt;connection.Open()&lt;br /&gt;Dim sqlCommand As SqlCommand = New SqlCommand(srcQuery)&lt;br /&gt;sqlCommand.Connection = connection&lt;br /&gt;Dim sqlReader As SqlDataReader = sqlCommand.ExecuteReader&lt;br /&gt;Dim source As DataTable = New DataTable&lt;br /&gt;source.Load(sqlReader)&lt;br /&gt;Dim dest As DataTable = New DataTable&lt;br /&gt;dest.Columns.Add(pivotColumn)&lt;br /&gt;For Each r As DataRow In source.Rows&lt;br /&gt;If r.IsNull(pivotKeyColumn) = False Then&lt;br /&gt;If dest.Columns.Contains(r.Item(pivotKeyColumn).ToString) = False Then dest.Columns.Add(r.Item(pivotKeyColumn).ToString)&lt;br /&gt;End If&lt;br /&gt;Next&lt;br /&gt;Dim dv As DataView = New DataView(source, "", pivotColumn, DataViewRowState.CurrentRows)&lt;br /&gt;Dim curPivotRowItem As String = Nothing&lt;br /&gt;Dim pivotedRow As DataRow = Nothing&lt;br /&gt;For Each r As DataRowView In dv&lt;br /&gt;If curPivotRowItem &lt;&gt; r.Item(pivotColumn).ToString Then&lt;br /&gt;curPivotRowItem = r.Item(pivotColumn).ToString&lt;br /&gt;pivotedRow = dest.NewRow&lt;br /&gt;dest.Rows.Add(pivotedRow)&lt;br /&gt;pivotedRow.Item(pivotColumn) = curPivotRowItem&lt;br /&gt;End If&lt;br /&gt;If IsDBNull(r.Item(pivotValueColumn)) = False Then&lt;br /&gt;Try&lt;br /&gt;pivotedRow.Item(r.Item(pivotKeyColumn).ToString) += r.Item(pivotValueColumn).ToString &amp; separatorStr&lt;br /&gt;Catch ex As Exception&lt;br /&gt;End Try&lt;br /&gt;End If&lt;br /&gt;Next&lt;br /&gt;Dim tmpName As String = "#" &amp;amp; Guid.NewGuid.ToString.Replace("-", "")&lt;br /&gt;Dim sql As String = "CREATE TABLE " &amp;amp; tmpName&lt;br /&gt;sql += "("&lt;br /&gt;For Each col As DataColumn In dest.Columns&lt;br /&gt;sql += String.Format("[{0}] varchar(2000),", col.ColumnName)&lt;br /&gt;Next&lt;br /&gt;sql = sql.Substring(0, sql.Length - 1)&lt;br /&gt;sql += ")"&lt;br /&gt;Dim createTemp As SqlCommand = New SqlCommand(sql)&lt;br /&gt;createTemp.Connection = connection2&lt;br /&gt;createTemp.ExecuteNonQuery()&lt;br /&gt;&lt;br /&gt;Dim Copy As SqlBulkCopy = New SqlBulkCopy(connection2)&lt;br /&gt;Copy.DestinationTableName = tmpName&lt;br /&gt;Copy.WriteToServer(dest)&lt;br /&gt;Dim retReaderCommand As SqlCommand = New SqlCommand(String.Format("SELECT * FROM [{0}]", tmpName))&lt;br /&gt;retReaderCommand.Connection = connection2&lt;br /&gt;p.Send(retReaderCommand.ExecuteReader)&lt;br /&gt;Catch ex As Exception&lt;br /&gt;p.Send(ex.Message)&lt;br /&gt;End Try&lt;br /&gt;End Sub&lt;br /&gt;End Class&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29510823-115558650601052545?l=it-dev-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://it-dev-blog.blogspot.com/feeds/115558650601052545/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29510823&amp;postID=115558650601052545&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29510823/posts/default/115558650601052545'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29510823/posts/default/115558650601052545'/><link rel='alternate' type='text/html' href='http://it-dev-blog.blogspot.com/2006/08/sql-2005-clr-pivot-update.html' title='SQL 2005 CLR Pivot Update'/><author><name>Richard Kiernan</name><uri>http://www.blogger.com/profile/14769655934347457215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29510823.post-115530258967824021</id><published>2006-08-11T13:13:00.000Z</published><updated>2006-08-11T14:11:54.480Z</updated><title type='text'>SQL 2005 DataTable Pivots</title><content type='html'>When I saw the SQL 2005 PIVOT function I thought great at last an easy way to PIVOT on the DB, but to be honest it sucks for anything but basic operations. I then thought I'd have ago at integration services - nice piece of software but still falls short in terms of the PIVOT function.&lt;br /&gt;&lt;br /&gt;One of the fundamental issues with pivotting large lumps of data is that you don't know the number of columns you're going to end up.&lt;br /&gt;&lt;br /&gt;The only sane way to do this is to code it into a custom assembly.&lt;br /&gt;&lt;br /&gt;This is my take on it wrapped into a function.&lt;br /&gt;&lt;br /&gt;Public Function PivotDataTable(ByVal source As DataTable, ByVal pivotCol As String, ByVal keyCol As String, ByVal pivotValueCol As String, ByVal separatorStr As String) As DataTable&lt;br /&gt;Dim dest As DataTable = New DataTable&lt;br /&gt;dest.Columns.Add(pivotCol)&lt;br /&gt;For Each r As DataRow In source.Rows&lt;br /&gt;If r.IsNull(keyCol) = False Then&lt;br /&gt;If dest.Columns.Contains(r.Item(keyCol)) = False Then&lt;br /&gt;dest.Columns.Add(r.Item(keyCol))&lt;br /&gt;End If&lt;br /&gt;End If&lt;br /&gt;Next&lt;br /&gt;Dim dv As DataView = New DataView(source, "", pivotCol, DataViewRowState.CurrentRows)&lt;br /&gt;Dim curPivotRowItem As String = Nothing&lt;br /&gt;Dim pivotedRow As DataRow = Nothing&lt;br /&gt;For Each r As DataRowView In dv&lt;br /&gt;If curPivotRowItem &lt;&gt; r.Item(pivotCol).ToString Then&lt;br /&gt;curPivotRowItem = r.Item(pivotCol).ToString&lt;br /&gt;pivotedRow = dest.NewRow&lt;br /&gt;dest.Rows.Add(pivotedRow)&lt;br /&gt;pivotedRow.Item(pivotCol) = curPivotRowItem&lt;br /&gt;End If&lt;br /&gt;If IsDBNull(r.Item(pivotValueCol)) = False Then&lt;br /&gt;pivotedRow.Item(r.Item(keyCol)) += r.Item(pivotValueCol) &amp; separatorStr&lt;br /&gt;End If&lt;br /&gt;Next&lt;br /&gt;Return dest&lt;br /&gt;End Function&lt;br /&gt;&lt;br /&gt;The function is based around the pretense that all fields are nvarchar of some sort. As with all Pivot examples I've seen, the weekness in the functions is the use case scenario, so i'll try and help you all with a decent example.&lt;br /&gt;&lt;br /&gt;Take a source table that looks like this: &lt;table style="WIDTH: 400px; HEIGHT: 100px"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;TableIDColumn&lt;/td&gt;&lt;td&gt;PivotColumn&lt;/td&gt;&lt;td&gt;PivotkeyCol&lt;/td&gt;&lt;td&gt;pivotValueColumn&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;Bar&lt;/td&gt;&lt;td&gt;a&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;BarFoo&lt;/td&gt;&lt;td&gt;b&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;Foo&lt;/td&gt;&lt;td&gt;c&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;Bar&lt;/td&gt;&lt;td&gt;d&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;FooBar&lt;/td&gt;&lt;td&gt;e&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;we're now going to pivot the table about the PivotColumn column such that a new column will be created for every distinct entry in PivotkeyCol column and the value in the pivotValueColumn will be placed in the new row and column entry.&lt;br /&gt;so that we will end up with the following table:&lt;br /&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;PivotColumn&lt;/td&gt;&lt;td&gt;Bar&lt;/td&gt;&lt;td&gt;BarFoo&lt;/td&gt;&lt;td&gt;Foo&lt;/td&gt;&lt;td&gt;FooBar&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;a&lt;/td&gt;&lt;td&gt;null&lt;/td&gt;&lt;td&gt;null&lt;/td&gt;&lt;td&gt;null&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;null&lt;/td&gt;&lt;td&gt;b&lt;/td&gt;&lt;td&gt;c&lt;/td&gt;&lt;td&gt;null&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;d&lt;/td&gt;&lt;td&gt;null&lt;/td&gt;&lt;/td&gt;&lt;td&gt;null&lt;/td&gt;&lt;td&gt;e&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29510823-115530258967824021?l=it-dev-blog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://it-dev-blog.blogspot.com/feeds/115530258967824021/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29510823&amp;postID=115530258967824021&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29510823/posts/default/115530258967824021'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29510823/posts/default/115530258967824021'/><link rel='alternate' type='text/html' href='http://it-dev-blog.blogspot.com/2006/08/sql-2005-datatable-pivots.html' title='SQL 2005 DataTable Pivots'/><author><name>Richard Kiernan</name><uri>http://www.blogger.com/profile/14769655934347457215</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
