Click here to Skip to main content
13,554,428 members
Click here to Skip to main content
Add your own
alternative version


29 bookmarked
Posted 5 Apr 2009
Licenced CPOL

Vista logo certification for applications using C++ and C#

, 6 Apr 2009
Rate this:
Please Sign up or sign in to vote.
This library provides the Vista logo API implementation for TC8, 9, and 30. It also describe about TC1 and TC32.


There are so many articles on Vista Logo certification. But I think I have something more to write about it. Here, I have provided a DLL that covers almost everything from the implementation point of view related to Vista Logo certification. The package contains:, the DLL source,, the document for how to use, HelloLogoC#.rar, the example using the DLL in C#, and, an example for using the DLL in C++. Please follow the document to learn to use this DLL.


We know there are 32 test cases in Vista Logo. To obtain the Vista Logo certification, the application has to pass all the test cases. Don't worry, it is not so hard to get the logo. The application only needs to implement the following test cases: TC1, TC2, TC3, TC8, TC9, TC30, TC31, and TC32. The remaining test cases are related to the installer. Actually, you need to implement only TC1, TC8, TC9, and TC30 by code. This DLL will cover this for you. This code has already been tested and implemented.

Using the code

Please follow the document for better understanding. Only two method needs to be called from the DLL: isSuccess(…) and isRestartMessage (…). Here I will only show how to use the DLL in a C# application.

[DllImport("libvl.dll", CharSet = CharSet.Auto)]
public static extern int isSuccess( string aExeName, 
               string aWndText, 
               string aCmdLine, 
               bool aSupportConcurrentUser, 
               bool aSupportRemoteDesktop);
[DllImport("libvl.dll", CharSet = CharSet.Auto)]
static void Main(string[] argv)
        if (!File.Exists("Libvl.dll"))
            MessageBox.Show("The following Libvl.dll is missing " + 
                            "please reinstall the application");
    catch (Exception ex)
        throw; //*** DON'T "Throw ex" here! *** FOR TC 32

static void runMain(string[] argv)
    String lStrWndTxt = "HelloLogo";//This is the title of the
    if (isSuccess("HelloLogo.exe",lStrWndTxt, 
             "CommandLine",false,true) != 0) 
    Application.Run(new HelloLogo());

[DllImport("libvl.dll", CharSet = CharSet.Auto)]
public static extern int isRestartMessage(int aMessage, IntPtr lParam);

protected override void WndProc(ref Message m)
    base.WndProc(ref m);        // call default p
    if (isRestartMessage(m.Msg, m.LParam) > -1)//TC 30
        //This application is about to be shut down, so save state...
        if (this.InvokeRequired)
            this.BeginInvoke(new MethodInvoker(this.saveState));

private void saveState()
    //Write code in here to save the state
    //of the application just  before a restart


No updates done yet.


This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


About the Author

Bangladesh Bangladesh
No Biography provided

You may also be interested in...

Comments and Discussions

GeneralMy vote of 1 Pin
togga5-Aug-09 2:31
membertogga5-Aug-09 2:31 
GeneralNice article Pin
fatihaalam8-Apr-09 0:36
memberfatihaalam8-Apr-09 0:36 
Generaloff-topic question Pin
Jasper4C#6-Apr-09 3:30
memberJasper4C#6-Apr-09 3:30 
GeneralRe: off-topic question Pin
saiful_vonair6-Apr-09 3:59
membersaiful_vonair6-Apr-09 3:59 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Terms of Use | Mobile
Web03 | 2.8.180515.1 | Last Updated 6 Apr 2009
Article Copyright 2009 by saiful_vonair
Everything else Copyright © CodeProject, 1999-2018
Layout: fixed | fluid