New release of code samples from Microsoft All-In-One Code Framework (2010-12-13)

The code samples in Microsoft All-In-One Code Framework are updated on 2010-12-13.

Download address: https://1code.codeplex.com/releases/view/57459#DownloadId=185534

Updated code sample index categorized by technologies: https://1code.codeplex.com/wikipage?title=All-In-One%20Code%20Framework%20Sample%20Catalog (it also allows you to download individual code samples instead of the entire All-In-One Code Framework sample package.)

If it’s the first time that you hear about Microsoft All-In-One Code Framework, please watch the introduction video on YouTube https://www.youtube.com/watch?v=cO5Li3APU58, or read the introduction on our homepage https://1code.codeplex.com/,  and this Port25 article https://port25.technet.com/archive/2010/01/18/the-all-in-one-code-framework.aspx

--------------

New ASP.NET Code Samples

VBASPNETAJAXWebChat and CSASPNETAJAXWebChat

Most of you have some experience in chatting with friends on the web. So you may want to know how to make a web chat application, it seems to be quite complicated. But ASP.NET gives you the power to buiild a chat room easily. In this code sample, we will construct our own web chat room with the amazing AJAX feature.

The principle is simple relatively. As we all know, a base chat application need 4 base controls: one List control to show the chat room members, one List control to show the message list, one TextBox control to input messages and one button to send message. User inputs his message in the textbox first and then presses Send button, it will send the message to the server. The message list will update every 2 seconds to get the newest message list in the chat room from the server.

We need to know, it is hard for us to make an AJAX web chat application like a windows form application because we cannot keep the connection after one web request ended. So a lot of events which communicates between client side and server side cannot be realized. The common workaround is to make web requests in every some seconds to check whether the server side has been updated. But another technique called COMET makes it possible. But it is different with AJAX and will not be talked in details in this KB. For more details about COMET, we can get some clues from the Reference.

 

CSASPNETCurrentOnlineUserList and VBASPNETCurrentOnlineUserList

This sample demos a system that needs to display a list of current online users' information. As a matter of fact, Membership.GetNumberOfUsersOnline Method  can get the number of online users and there is a convenient approach to check whether the user is online by using Membership.GetUser(string userName).IsOnline property,however many asp.net projects are not using membership.So in this case,the sample shows how to display a list of current online users' information without using membership provider.

It is not difficult to check whether the user is online by using session.Many projects tend to be used “Session_End” event to mark a user as “Offline”,however ,it may not be a good idea,because it can’t detect the user status accurately. In addition, "Session_End" event is only available in the "InProc" session mode. If you are storing session states in the State Server or SQL Server, "Session_End" event will never fire.
To handle this issue, we need to save the user online status to a  global DataTable or  DataBase. In the sample application, define a global DataTable to store the information of online users.Use XmlHttpRequest in the pages to update and check user's last active time at intervals and also retrieve information on how many users are still online. The sample project can auto delete offline users' information from a global DataTable by checking users’ last active time.

A step-by-step guide illustrating how to display a list of current online users' information without using membership provider:

1. Login page.


Let user sign in and add current user’s information to a global datatable while Initialize the global datatable which used to store information of current online users.

2. Current online user list page.

Use XmlHttpRequest in this page to update and check user's last active time at intervals and also retrieve information on how many users are still online.

3. If user closes the page without clicking  the sign out link button ,the sample project can auto mark the user as offline and delete offline users' information from a global DataTable which used to store information of current online users  by checking users’ last active time. Then the current online user list will be like this:

 

CSASPNETIPtoLocation

This sample demonstrates how to find the geographical location from an IP address. As we know, it is not hard for us to get the IP address of visitors via Request.ServerVariable property, but it is really difficult for us to know where they come from. To achieve this feature, the sample uses a free third party web service from https://freegeoip.appspot.com/, which returns the information about an IP address we send to the server in the format of XML, JSON or CSV. It makes all things easier.

 

CSASPNETBackgroundWorker

Sometimes we do an operation which needs long time to complete. It will stop the response and the page is blank until the operation finished. In this case, we want the operation to run in the background, and in the page, we want to display the progress of the running operation. Therefore, the user can know the operation is running and can know the progress.

CSASPNETInheritingFromTreeNode

In windows forms TreeView, each tree node has a property called "Tag" which can be used to store a custom object. Many customers want to implement the same tag feature in ASP.NET TreeView. This project creates a custom TreeView control named "CustomTreeView" to achieve this goal.

CSASPNETRemoteUploadAndDownload and VBASPNETRemoteUploadAndDownload

This code sample was created in response to a code sample request in our new code sample request frunction for customers.

The code samples demonstrate uploading files to and downloading files from a remote HTTP or FTP server. In .NET Framework 2.0 and higher versions, there are some lightweight class libraries which support HTTP and FTP protocol transmission. By using these classes, we can achieve this programming requirement.

 

CSASPNETImageEditUpload and VBASPNETImageEditUpload

This demo will shows how to insert, edit and update a common image with the type of "jpg", "png", "gif" or "bmp" . We mainly use two different SqlDataSources with the same database to bind to GridView and FormView in order to establish the “cascading” effort. Besides we apply our self-made ImageHanlder to encoding or decoding images of different types, and use context to output the stream of images. We will explicitly assign the binary streams of images through the event of “FormView_ItemInserting” or “Form_ItemUpdating” to synchronize the stream both in what we can see on an aspx page as well as in what’s really stored in the database.

 

WebBrowser Control, Network and other Windows General New Code Samples

 

CSWebBrowserSuppressError and VBWebBrowserSuppressError

The sample demonstrates how to make WebBrowser suppress errors, such as script error, navigation error and so on.

 

CSWebBrowserWithProxy and VBWebBrowserWithProxy

The sample demonstrates how to make WebBrowser use a proxy server.

 

CSWebDownloadProgress and VBWebDownloadProgress

The sample demonstrates how to show progress during the download. It also supplies the features to Start, Pause, Resume and Cancel a download.

 

CppSetDesktopWallpaper , CSSetDesktopWallpaper and VBSetDesktopWallpaper

This code sample application allows you select an image, view a preview (resized smaller to fit if necessary), select a display style among Tile, Center, Stretch, Fit (Windows 7 and later) and Fill (Windows 7 and later), and set the image as the Desktop wallpaper.

CSWindowsServiceRecoveryProperty and VBWindowsServiceRecoveryProperty

CSWindowsServiceRecoveryProperty example demonstrates how to use ChangeServiceConfig2 to configure the service "Recovery" properties in C#. This example operates all the options you can see on the service "Recovery" tab, including setting the "Enable actions for stops with errors" option in Windows Vista and later operating systems. This example also include how to grant the shut down privilege to the process, so that we can configure a special option in the "Recovery" tab - "Restart Computer Options...".

 

New Office Development Code Samples

 

CSOneNoteRibbonAddIn and VBOneNoteRibbonAddIn

The code sample demonstrates a OneNote 2010 COM add-in that implements IDTExtensibility2. The add-in also supports customizing the Ribbon by implementing the IRibbonExtensibility interface. It is a skeleton OneNote add-in that developers can extend it to implement more functions. The code sample was requested by a customer in our code sample request service. We expect that this could help developers in the community.

 

New Windows Shell Code Samples

 

CppShellExtPreviewHandler , CSShellExtPreviewHandler and VBShellExtPreviewHandler

In the past two months, we released the code samples of Windows Context Menu Handler, Infotip Handler, and Thumbnail Handler. This is the fourth part of the shell extension series: Preview Handler.

The code samples demo the C++, C# and VB.NET implementation of a preview handler for a new file type registered with the .recipe extension. Preview handlers are called when an item is selected to show a lightweight, rich, read-only preview of the file's contents in the view's reading pane. This is done without launching the file's associated application. Windows Vista and later operating systems support preview handlers.

To be a valid preview handler, several interfaces must be implemented. This includes IPreviewHandler (shobjidl.h); IInitializeWithFile, IInitializeWithStream, or IInitializeWithItem (propsys.h); IObjectWithSite (ocidl.h); and IOleWindow (oleidl.h). There are also optional interfaces, such as IPreviewHandlerVisuals (shobjidl.h), that a preview handler can implement to provide extended support. Windows API Code Pack for Microsoft .NET Framework makes the implementation of these interfaces very easy in .NET.

The example preview handler provides previews for .recipe files. The .recipe file type is simply an XML file registered as a unique file name extension. It includes the title of the recipe, its author, difficulty, preparation time, cook time, nutrition information, comments, an embedded preview image, and so on. The preview handler extracts the title, comments, and the embedded image, and display them in a preview window.

 

In response to many customers' request, we added setup projects in every shell extension samples in this release. Those setup projects allow you to deploy the shell extensions to your end users' machines.

----------

Download address: https://1code.codeplex.com/releases/view/57459#DownloadId=185534

Updated code sample index categorized by technologies: https://1code.codeplex.com/wikipage?title=All-In-One%20Code%20Framework%20Sample%20Catalog (it also allows you to download individual code samples instead of the entire All-In-One Code Framework sample package.)

If you have any feedback for us, please email: onecode@microsoft.com. We look forward to your comments.