Skip to main content

Posts

Showing posts from 2010

How to extract data from MS Word dropdown fields

When converting a Word form to a web form, I was looking for a way to extract the items of the dropdown fields found in the Word document to avoid typing them manually in my web app. I found that you can access the field definitions from C# by using the Word  Interop COM library. The following is a program that extracts each item in the dropdown boxes and prints them to the screen: using System; using System.Collections.Generic; using System.Linq; using System.Text; using Microsoft.Office.Interop.Word; namespace WordDataExtractTest { class Program { static void Main(string[] args) { Application wordapp = new Application(); var strDocName = "doc_file_with_form.doc"; var doc = wordapp.Documents.Open(strDocName); foreach( FormField form_field in doc.FormFields) { if (form_field.Type == WdFieldType.wdFieldFormDropDown) { Ad

How to get the raw data posted to a Java Servlet

While working in porting GeneCMS to Google App Engine and Silverlight , I stumble at one annoying problem: how to get the raw data that was sent by the browser via a POST. In this GeneCMS port, the silverlight client actually generates all the HTML that the server used to generate. The raw generated HTML is then sent to the GAE application, with some metadata about the generated pages. The GAE servlet then reads the posted data as a string and extract the individual generated pages. Each generated page is then saved into the GAE database to allow the CMS to server the pages. After tweking around in the wrong places, I finally found out that HttpServletRequest’s getInputStream method is an input stream to the raw data posted. So I modified my servlet to get the POST data into a string like this: String posted_data = ""; BufferedReader in = new BufferedReader(new InputStreamReader( request.getInputStream())); String line = in.readLine(); while (line != null) { posted

How to watch for a file in a folder in VBS and handle locked files

The following Visual Basic Script allows you to  monitor a folder for new files. The script will try to process the file if the file is still locked by the application that created the file, an error will occur and the script will handle it by waiting a growing amount of time and then retrying to use the file. The script will also send an email alert about the error raised: strComputer = "." strPathToWatch = "C:\backups\" Sub SendMailMessage(to_address, subject, msg) dim sch, cdoConfig, cdoMessage sch = "http://schemas.microsoft.com/cdo/configuration/" Set cdoConfig = CreateObject("CDO.Configuration") With cdoConfig.Fields .Item(sch & "sendusing") = 2 ' cdoSendUsingPort .Item(sch & "smtpserver") = "yoursmtpserver" .update End With Set cdoMessage = CreateObject("CDO.Message") With cdoMessage Set .Configuration = cdoConfig

Class to get Live Photo and Album Information in .NET

Thanks to the Windows Live Spaces Photo Album plugin project at CodePlex, I was able to abstract the code to get Album and Pictures information from a Live Spaces account. This class serves as a helper when generating javascript code for slideshows containing photos stored at Live Spaces. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Xml; using HtmlAgilityPack; using System.Web; namespace LivePhotoDataProvider { public class AlbumInfo { public string URL { get; set; } public string Name { get; set; } } public class PhotoInfo { public string FullSizeURL { get; set; } } public class LivePhotoData { public List<AlbumInfo> GetAlbums(string live_spaces_link) { List<AlbumInfo> albums = new List<AlbumInfo>(); XmlDocument doc = new XmlDocument(); try { doc.Load(live_spaces_link);

Using SQL Server’s XML features as a fast ORM

When you need load POCO objects from a SQL Server database in a faster way than LinqToSQL, you may consider using  SQL Server’s XML features.  The FOR XML PATH command can be a really powerful tool to convert your relational data into XML that C# can de-serialize into C# plain objects. The key is to find how C# serializes objects to XML. In order to do that, I did a small test: public class Store { public string Name { get; set; } public int Sales { get; set; } public List<StoreContact> StoreContact { get; set; } } public class StoreContact { public int ContactId { get; set; } public int ContactTypeID { get; set; } } public static void TestSaveToXML(string path) { XmlSerializer serializer = new XmlSerializer(typeof(List<Store>)); TextWriter writer = new StreamWriter(path); List<Store> stores = new List<Store&g

Model Generator Helper Released

Model Generator Helper is a small program that will allow you to easily create view models from your logic models by copying the logic model's properties and the properties' attributes. The original purpose of the program was to copy the validation annotations to my view models so that I would not have to copy and paste them. The program can also read the ColumnAttribute of Linq2SQL generated classes and create DataAnnotation attributes for them (e.g.: Requires attribute and the StringLength attribute). Sometimes you want to pass to your views a class different from your raw classes generated from the database. For example, lets say we have this logical model classes: class Payment { [Max(1200)] public int Amount {get; set;} public int PersonID {get; set;} } class Person { [ StringLength (50)] public string Name {get; set;} public int PersonID {get; set;} } And you need a View model for your view that allows the user to edit the name of the pe

Send Email from C# using Outlook's COM late binding

The following sample code shows how to send emails from Outlook and Exchange using C#. This code works with any version of Outlook because it uses Late Binding to automate Outlook. Parts of the code where taken from other websites. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Reflection; using System.Threading; namespace LateBindingTest { class OutlookEmailerLateBinding { private object oApp; private object oNameSpace; private object oOutboxFolder; public OutlookEmailerLateBinding() { Type outlook_app_type; object[] parameter = new object[1]; //Get the excel object outlook_app_type = Type.GetTypeFromProgID("Outlook.Application"); //Create instance of excel oApp = Activator.CreateInstance(outlook_app_type); //Set the parameter which u want to set parameter[0] = "MAPI"

Batch file to encrypt connection string section

Many times I have to use SQL Authentication instead of Windows Aunthentication when developing ASP.NET web apps. To encrypt the connection string used you can use the following batch file to encrypt the connection string sections of any asp.net web app: echo Please enter folder where webconfig is: :input set INPUT= set /P INPUT=Type input: %=% if "%INPUT%"=="" goto input echo Folder where webconfig is: %INPUT% aspnet_regiis.exe -pef connectionStrings %INPUT% pause Make sure you have aspnet_regiis.exe's folder in your PATH environment variable.

Sending/Receiving Faxes as Emails in Windows

Most Fax server software allows you to send/receive faxes through email. While looking at the alternatives, I could not find any free, Windows based solution that suited my needs. Most of the software I looked at requires you to have a dedicated smtp server or DNS settings in your local network. I developed Email-to-Fax Server to work with an already established SMTP and POP server (it requires an email account) and decided to make it open sourced at CodePlex . Email-to-Fax Server’s foundation is the excellent Fax .NET library . The program is developed in C# and uses the internal Windows's Fax services as its foundation. Email-to-Fax Server is a windows application that does the following: Sends email attachments as faxes. Sends faxes received as email attachments to a specified address or addresses. It obtains emails from a POP email account and sends the emails' attachments as faxes to the fax number specified in the subject line. It uses a SMTP account to