#include "resource.h"

#define APSTUDIO_READONLY_SYMBOLS
#include "winres.h"
#undef APSTUDIO_READONLY_SYMBOLS

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENC)
#ifdef _WIN32
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_CAN
#pragma code_page(1252)
#endif //_WIN32

#ifdef APSTUDIO_INVOKED

1 TEXTINCLUDE 
BEGIN
    "resource.h\0"
END

2 TEXTINCLUDE 
BEGIN
    "#include ""winres.h""\r\n"
    "\0"
END

3 TEXTINCLUDE 
BEGIN
    "1 TYPELIB ""IECrossfireExtension.tlb""\r\n"
    "\0"
END

#endif    // APSTUDIO_INVOKED

VS_VERSION_INFO VERSIONINFO
 FILEVERSION 1,0,0,1
 PRODUCTVERSION 1,0,0,1
 FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
 FILEFLAGS 0x1L
#else
 FILEFLAGS 0x0L
#endif
 FILEOS 0x4L
 FILETYPE 0x2L
 FILESUBTYPE 0x0L
BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "040904e4"
        BEGIN
            VALUE "CompanyName", "Eclipse Foundation\0"
            VALUE "FileDescription", "Crossfire Server for Internet Explorer BHO\0"
            VALUE "FileVersion", "0.9\0"
            VALUE "LegalCopyright", "Copyright (c) 2012 IBM Corp.  All Rights Reserved.\0"
            VALUE "InternalName", "IECrossfireExtension\0"
            VALUE "OriginalFilename", "IECrossfireExtension.dll\0"
            VALUE "ProductName", "Crossfire Server for Internet Explorer\0"
            VALUE "ProductVersion", "0,0,0,0\0"
        END
    END
    BLOCK "VarFileInfo"
    BEGIN
        VALUE "Translation", 0x409, 1252
    END
END

IDR_IECrossfireExtension REGISTRY                "IECrossfireExtension.rgs"
IDR_IECrossfireBHO      REGISTRY                "IECrossfireBHO.rgs"
IDR_EXPLORERBAR         REGISTRY                "ExplorerBar.rgs"

STRINGTABLE 
BEGIN
    IDS_PROJNAME            "IECrossfireExtension"
END

#endif    // English resources

#ifndef APSTUDIO_INVOKED
1 TYPELIB "IECrossfireExtension.tlb"

#endif    // not APSTUDIO_INVOKED

