Page 1 of 3 123 LastLast
Results 1 to 40 of 98

Thread: [VB6] XP/Vista/Win7 Manifest Creator

  1. #1

    Thread Starter
    VB-aholic & Lovin' It LaVolpe's Avatar
    Join Date
    Oct 2007
    Location
    Beside Waldo
    Posts
    19,541

    [VB6] Manifest Creator for XP thru Win10

    RETIRED. No longer maintained. If still interested, look at its replacement here

    This project has a slight twist. See post #28 below for yet another easy option of inserting manifests into a resource file. And at this thread, Karim Wafi offers this code as a VB IDE add-in option, but as of this latest update, his project hasn't been updated to reflect latest changes herein.

    We know manifest files allow our forms to display with window themes. And we know there are 2 ways to make that happen.
    1) Including an external manifest file with our application
    2) Inserting that manifest file into a resource of our application

    Another plus to adding themes is that you can easily include alpha-blended icons to your buttons. See this post for an example

    This app allows both options above.

    But for option #2 above, it does not use rc.exe, no batch files, and is a bit customizable. And this is the best part.... This can be done before your exe is compiled so that the manifest is compiled with your exe. You don't have to go back later to insert the manifest using rc.exe & other techniques. How easy is that? And it can be undone too!
    Edited: Note, either manifest technique can cause crashes when compiled exe closes & it contained VB usercontrols. To rememdy this problem, the Sub Main created by the Manifest Creator now contains a LoadLibrary/FreeLibrary call. See the Change History below for a link that has information pertaining to this problem.

    Some quick notes.
    :: The attached project will create a manifest file and create a res file if needed. It can also overwrite an existing manifest file and insert into an existing res file. It can also delete embedded manifests from any VB resource file.
    :: See post #2 below for step-by-step procedure for embedding manifest files

    FAQ: "So, I want my app to be themed and don't want to include external manifest file(s) and I don't use a resource file. Does that mean I have to create a resource file just to embed the manifest file into my compiled application?"
    Answer: YES
    FAQ: "I copied sub main to the clipboard and pasted it into a module. I also changed my project to start with Sub Main vs. my main form. When I run the project, my main form does not show, the project simply starts & closes. Why?"
    Answer: You forgot to show your main form before exiting Sub Main.
    FAQ: "How do you get VB6 IDE to run using themed controls?
    Answer: Use a manifest file. See post #54 on page 2 for details

    You can see the differences below between unthemed controls & vista/xp themes
    Name:  manifestcreator.jpg
Views: 20931
Size:  50.8 KB

    P.S. Remember that including theme capability requires you to initialize the common controls before your app starts. This means adding a Sub Main to your project and having the project start with Sub Main. If you don't do this, your compiled app will not load & run if it contains a manifest file or embedded manifest.

    Comment update: The above comment regarding Sub Main no longer applies for modern O/S. This is because simply including a manifest has Windows initialize the common controls. Adding Sub Main for this purpose is safe regardless. However, whether or not to use the LoadLibrary tweak mentioned earlier is still a choice that should be considered.

    Edit History
    20 Dec 14
    :: Added Win10 compatibility & Win8.1+ Per-Monitor DPI Awareness items
    17 Nov 14
    :: Added few more sections, all are for systems > XP
    - O/S-app compatibility
    - autoElevate, disableTheming
    - printerDriverIsolation, disableWindowFiltering
    - highResolutionScrollingAware, ultraHighResolutionScrollingAware
    30 Dec 11
    :: Added options to include 2 new sections in the manifest (above screenshot not updated)
    - DPI-aware for Vista+
    - GDI+ v1.1 dependency. See post #53, page 2, for more info & a warning
    2 Oct 10
    :: Bonehead typo on my part. Declared function FreeLibraryA. There is no FreeLibraryA. Should be just FreeLibrary.
    2 Oct 10
    :: Added LoadLibrary/FreeLibrary calls to Sub Main code to help prevent crashes when themed & usercontrols exist in project. See this thread for some more info
    15 Jun 10
    :: Fixed version info read from a vbp file. See post 14 & 15 below
    :: Added more options/information for "Sub Main" when used
    10 Mar 10
    :: Added ability to delete manifest(s) from resource files
    :: Added ability to load key fields from vbp files
    :: Added ability to modify app version within the manifest (oversight on my part)
    :: Added ability to view external manifests
    :: Added ability to preview manifest

    Here is a complete, working example of a Sub Main procedure should you just want to copy & paste it to an existing project.
    Change Form1 in the sample code to your main form's name
    Code:
    Private Declare Function LoadLibraryA Lib "kernel32.dll" (ByVal lpLibFileName As String) As Long
    Private Declare Function FreeLibrary Lib "kernel32.dll" (ByVal hLibModule As Long) As Long
    Private Declare Function InitCommonControlsEx Lib "comctl32.dll" (iccex As InitCommonControlsExStruct) As Boolean
    Private Declare Sub InitCommonControls Lib "comctl32.dll"()
    Private Type InitCommonControlsExStruct
        lngSize As Long
        lngICC As Long
    End Type
    
    Private Sub Main()
        Dim iccex As InitCommonControlsExStruct, hMod As Long
        ' constant descriptions: http://msdn.microsoft.com/en-us/library/bb775507%28VS.85%29.aspx
        Const ICC_ANIMATE_CLASS As Long = &H80&
        Const ICC_BAR_CLASSES As Long = &H4&
        Const ICC_COOL_CLASSES As Long = &H400&
        Const ICC_DATE_CLASSES As Long = &H100&
        Const ICC_HOTKEY_CLASS As Long = &H40&
        Const ICC_INTERNET_CLASSES As Long = &H800&
        Const ICC_LINK_CLASS As Long = &H8000&
        Const ICC_LISTVIEW_CLASSES As Long = &H1&
        Const ICC_NATIVEFNTCTL_CLASS As Long = &H2000&
        Const ICC_PAGESCROLLER_CLASS As Long = &H1000&
        Const ICC_PROGRESS_CLASS As Long = &H20&
        Const ICC_TAB_CLASSES As Long = &H8&
        Const ICC_TREEVIEW_CLASSES As Long = &H2&
        Const ICC_UPDOWN_CLASS As Long = &H10&
        Const ICC_USEREX_CLASSES As Long = &H200&
        Const ICC_STANDARD_CLASSES As Long = &H4000&
        Const ICC_WIN95_CLASSES As Long = &HFF&
        Const ICC_ALL_CLASSES As Long = &HFDFF& ' combination of all values above
    
        With iccex
           .lngSize = LenB(iccex)
           .lngICC = ICC_STANDARD_CLASSES ' vb intrinsic controls (buttons, textbox, etc)
           ' if using Common Controls; add appropriate ICC_ constants for type of control you are using
           ' example if using CommonControls v5.0 Progress bar:
           ' .lngICC = ICC_STANDARD_CLASSES Or ICC_PROGRESS_CLASS
        End With
        On Error Resume Next ' error? InitCommonControlsEx requires IEv3 or above
        hMod = LoadLibraryA("shell32.dll") ' patch to prevent XP crashes when VB usercontrols present
        InitCommonControlsEx iccex
        If Err Then 
            InitCommonControls ' try Win9x version
            Err.Clear
        End If
        On Error GoTo 0
        '... show your main form next (i.e., Form1.Show)
        Form1.Show
        If hMod Then FreeLibrary hMod
    
    
    '** Tip 1: Avoid using VB Frames when applying XP/Vista themes
    '          In place of VB Frames, use pictureboxes instead.
    '          'bug' may no longer apply to Win7+
    '** Tip 2: Avoid using Graphical Style property of buttons, checkboxes and option buttons
    '          Doing so will prevent them from being themed.
    End Sub
    The zip file includes a resource file with just the manifest embedded into it. Unzip the project and compile it, then run it. It should be themed and run just fine.
    Attached Files Attached Files
    Last edited by LaVolpe; May 10th, 2020 at 10:40 AM. Reason: added new manifest sections
    Insomnia is just a byproduct of, "It can't be done"

    Classics Enthusiast? Here's my 1969 Mustang Mach I Fastback. Her sister '67 Coupe has been adopted

    Newbie? Novice? Bored? Spend a few minutes browsing the FAQ section of the forum.
    Read the HitchHiker's Guide to Getting Help on the Forums.
    Here is the list of TAGs you can use to format your posts
    Here are VB6 Help Files online


    {Alpha Image Control} {Memory Leak FAQ} {Unicode Open/Save Dialog} {Resource Image Viewer/Extractor}
    {VB and DPI Tutorial} {Manifest Creator} {UserControl Button Template} {stdPicture Render Usage}

  2. #2

    Thread Starter
    VB-aholic & Lovin' It LaVolpe's Avatar
    Join Date
    Oct 2007
    Location
    Beside Waldo
    Posts
    19,541

    Re: [VB6] XP/Vista Manifest Creator

    Sample Steps to Creating/Embedding Manifest Files

    Here is MSDN documentation on the proper formatting of an application manifest.

    You may ask why you would want to include a security section in the manifest... Suggest reading this MSDN page.

    You may ask why you would want to include a manifest for common controls (i.e., buttons, textboxes, MS common controls, etc). The answer is simply appearance. For operating systems that use themes, your compiled application will look like 98% of the other apps the user is used to. It won't appear out of place or "old". There are known incompatibilities between VB and themes. Don't use frames. Within your project, common controls v5 works with themes where common controls v6 don't. Using VB's Graphical Style property on command buttons, option buttons, checkboxes prevent theming for those specific controls. Some other "bugs" may crop up. But these are just a minor annoyance vs. a major inconvenience, in my opinion.

    Themes are applied to compiled applications ONLY. However, you can get a WYSIWYG version of it in IDE by having the IDE run themed. See post #54, page 2, for more information on theming the IDE

    Preface: If you update a resource file that is being referenced in an open VB project, the changes made may not be visible when you open the resource file via VB's Resource Editor. In that case, simply remove the resource file from the project and re-add it back to the project, or close & re-open your project. The changes will be seen. Not recommended to write to a resource file that you have modified with VB's Resource Editor and have not yet saved the changes; unexpected results may occur.

    If you do not already have an embedded manifest within your project's resource file
    1. Open the Manifest Creator
    2. Create a resource file and add it to your project if no resource file exists yet
    If you do not want controls themed, and only want one of the other manifest portions, skip steps 3 & 4 below
    3. Create a module in your project, if needed
    4. Click on the button "Sub Main To Clipboard"
    -- Paste text to your module.
    -- Ensure pasted API/Structure declarations are moved near top of the module.
    -- Add any additional ICC constants to the .lngICC = line of code. See comments in that code.
    -- In the Sub Main procedure, just prior to "FreeLibrary" call, add line of code to show your main form
    -- Add any other custom start-up code needed
    -- Save changes
    5. In bottom combobox, select "Create from VB File" and select your project's .vbp file. Press "Go"
    6. Adjust any settings/values in the Manifest Creator. If you want controls themed, ensure option to include Common Controls is checked.
    7. In bottom combobox, select "Write Manifest", press "Go"
    8. Select "Resource Files" in browse window's bottom combobox. Locate your project's .res file and click "Save"

    How to start your project with Sub Main? This must be done if you chose to include common controls in your embedded manifest
    a. You should have already completed steps 1-4 above.
    b. Open your project's Properties window. IDE menu: Project | [project name] Properties
    c. In the General tab, select "Sub Main" from the Startup Object combobox
    d. Close the properties window and save changes.

    If you already have a manifest embedded in your project's resource file and you want to change it
    1. Open the Manifest Creator
    2. Start with Step #5 above
    The old manifest will be replaced with the new manifest. Note that if you chose to include the Common Controls in the manifest, you must start your app with Sub Main, initializing common controls. See Steps 3 & 4 in previous paragraph.

    If you want to delete the embedded manifest from your project's resource file
    1. Open the Manifest Creator
    2. In bottom combobox, select "Delete Manifest", press "Go"
    3. Select "Resource Files" in browse window's bottom combobox. Locate your project's .res file and click "Open"
    You may or may not want to remove the Sub Main from your project, if it exists.
    Last edited by LaVolpe; Nov 17th, 2014 at 03:38 PM. Reason: updated dead link
    Insomnia is just a byproduct of, "It can't be done"

    Classics Enthusiast? Here's my 1969 Mustang Mach I Fastback. Her sister '67 Coupe has been adopted

    Newbie? Novice? Bored? Spend a few minutes browsing the FAQ section of the forum.
    Read the HitchHiker's Guide to Getting Help on the Forums.
    Here is the list of TAGs you can use to format your posts
    Here are VB6 Help Files online


    {Alpha Image Control} {Memory Leak FAQ} {Unicode Open/Save Dialog} {Resource Image Viewer/Extractor}
    {VB and DPI Tutorial} {Manifest Creator} {UserControl Button Template} {stdPicture Render Usage}

  3. #3
    New Member
    Join Date
    Mar 2010
    Posts
    2

    Re: [VB6] XP/Vista Manifest Creator

    Quote Originally Posted by LaVolpe View Post
    Unzip the project and compile it, then run it. It should be themed and run just fine.
    Hi, great project - maybe you should add which Components/References must be selected for the project to compile without errors?
    /Cunae

  4. #4

    Thread Starter
    VB-aholic & Lovin' It LaVolpe's Avatar
    Join Date
    Oct 2007
    Location
    Beside Waldo
    Posts
    19,541

    Re: [VB6] XP/Vista Manifest Creator

    Quote Originally Posted by Cunae View Post
    Hi, great project - maybe you should add which Components/References must be selected for the project to compile without errors?
    /Cunae
    Not sure I understand the suggestion. The checklist I posted in #2 above, if followed, does ensure compilation without errors. Because you have the option of including a Vista security and/or controls manifest, the options are fairly simple:
    1. Vista manifest, no special handling needed
    2. Controls manifest, include Sub Main with the code provided via the "Sub Main To Clipboard" button, and set your startup object to Sub Main.

    If you are asking which references you should be adding to your project (i.e., ADO, Scripting, etc)? Not applicable to this project. VB does that for you anyway by popping up a window saying you are missing a reference.
    Last edited by LaVolpe; Mar 30th, 2010 at 11:19 AM. Reason: typo
    Insomnia is just a byproduct of, "It can't be done"

    Classics Enthusiast? Here's my 1969 Mustang Mach I Fastback. Her sister '67 Coupe has been adopted

    Newbie? Novice? Bored? Spend a few minutes browsing the FAQ section of the forum.
    Read the HitchHiker's Guide to Getting Help on the Forums.
    Here is the list of TAGs you can use to format your posts
    Here are VB6 Help Files online


    {Alpha Image Control} {Memory Leak FAQ} {Unicode Open/Save Dialog} {Resource Image Viewer/Extractor}
    {VB and DPI Tutorial} {Manifest Creator} {UserControl Button Template} {stdPicture Render Usage}

  5. #5
    New Member
    Join Date
    Mar 2010
    Posts
    2

    Re: [VB6] XP/Vista Manifest Creator

    Ok, my intention was just to inform you my experience after I unzipped your Vista Manifest Creator project and then compiled it, compilation failed because of missing references/components ("Unzip the project and compile it, then run it.."). I did find out to select the necessary component and compile ok because as you say VB helps you by popping up a window, so I am happy and satisfied with your solution. I am seeing forward too to others testing it with Windows 7

  6. #6

    Thread Starter
    VB-aholic & Lovin' It LaVolpe's Avatar
    Join Date
    Oct 2007
    Location
    Beside Waldo
    Posts
    19,541

    Re: [VB6] XP/Vista Manifest Creator

    Thanx. I'll have to look at the project again; maybe I left in some reference I didn't need? Offhand I don't see it, do you recall what was missing? I'll unzip it to a new computer tomorrow and see if I can replicate a problem.

    And please let us know if it works with Win7. I don't have access to it for tests.
    Last edited by LaVolpe; Mar 30th, 2010 at 11:17 PM.
    Insomnia is just a byproduct of, "It can't be done"

    Classics Enthusiast? Here's my 1969 Mustang Mach I Fastback. Her sister '67 Coupe has been adopted

    Newbie? Novice? Bored? Spend a few minutes browsing the FAQ section of the forum.
    Read the HitchHiker's Guide to Getting Help on the Forums.
    Here is the list of TAGs you can use to format your posts
    Here are VB6 Help Files online


    {Alpha Image Control} {Memory Leak FAQ} {Unicode Open/Save Dialog} {Resource Image Viewer/Extractor}
    {VB and DPI Tutorial} {Manifest Creator} {UserControl Button Template} {stdPicture Render Usage}

  7. #7
    Frenzied Member
    Join Date
    Jan 2010
    Posts
    1,103

    Re: [VB6] XP/Vista Manifest Creator

    1.It's a very good example of using Unicode (W-Type) APIs to Read/Write file.
    2.It's a very good example to understand Resource File Structure.
    3.It's a very good example to know how to put/retrieve UDT in a file.

    Thanks.

  8. #8
    Frenzied Member
    Join Date
    Jan 2010
    Posts
    1,103

    Re: [VB6] XP/Vista Manifest Creator

    HTML Code:
    ReadFile hFileFrom, dcbHeaderSize, 4&, resDataL, ByVal 0&
        If resDataL <> 4& Then Exit Function
    If the last step is successful,resDataL will remain 4,so this checking will fail.

    Supposed to reset (???):
    HTML Code:
    resDataL=0&   'Reset
         ReadFile hFileFrom, dcbHeaderSize, 4&, resDataL, ByVal 0&
           If resDataL <> 4& Then Exit Function
    I attached a resource file which contain a manifest file but the function of view External Manifest fails.
    Attached Files Attached Files

  9. #9

    Thread Starter
    VB-aholic & Lovin' It LaVolpe's Avatar
    Join Date
    Oct 2007
    Location
    Beside Waldo
    Posts
    19,541

    Re: [VB6] XP/Vista Manifest Creator

    Jonney, what is in the resfile is not a manifest, not really. A manifest file will have a RT_MANIFEST resource type. That text in the res file is a CUSTOM resource type. It might as well be an email or ini file. Even though it is a manifest, it will never effect a compiled application. One cannot just throw a manifest in a CUSTOM resource and have Windows recognize it as a true manifest. To read CUSTOM resource file entries or any resource entries, really, one simply needs to process all the resource types. The project I wrote only messes with RT_MANIFEST resource types.

    Try creating a test project, one command button, adding that resfile & appropriate Startup code to the project and compiling it. The compiled project will not be themed if themes are active. Now add a manifest via this project, recompile, & it will be themed; your updated resfile will have 2 manifests in it: 1 that is a true manifest and one that is simply a custom, text resource.

    The bottom line is that the code is fine. If the ReadFile API fails, it should set resDataL to zero, else it will set it to how many bytes were read. Anything <> 4, in this case, is considered failure.
    Last edited by LaVolpe; Apr 4th, 2010 at 02:37 PM.
    Insomnia is just a byproduct of, "It can't be done"

    Classics Enthusiast? Here's my 1969 Mustang Mach I Fastback. Her sister '67 Coupe has been adopted

    Newbie? Novice? Bored? Spend a few minutes browsing the FAQ section of the forum.
    Read the HitchHiker's Guide to Getting Help on the Forums.
    Here is the list of TAGs you can use to format your posts
    Here are VB6 Help Files online


    {Alpha Image Control} {Memory Leak FAQ} {Unicode Open/Save Dialog} {Resource Image Viewer/Extractor}
    {VB and DPI Tutorial} {Manifest Creator} {UserControl Button Template} {stdPicture Render Usage}

  10. #10
    Frenzied Member
    Join Date
    Jan 2010
    Posts
    1,103

    Re: [VB6] XP/Vista Manifest Creator

    Thanks.
    "CUSTOM" could be else than Manifest XML script."RT_MANIFEST" (24) is the signature of Manifest resource type.

  11. #11
    New Member MrSmith.'s Avatar
    Join Date
    Nov 2009
    Posts
    14

    Re: [VB6] XP/Vista Manifest Creator

    Just to note, Works with 32-bit Windows 7 Ultimate. Great work LaVolpe

  12. #12

    Thread Starter
    VB-aholic & Lovin' It LaVolpe's Avatar
    Join Date
    Oct 2007
    Location
    Beside Waldo
    Posts
    19,541

    Re: [VB6] XP/Vista Manifest Creator

    Thank you MrSmith, I was curious. Maybe I should now change the post title to include Win7
    Insomnia is just a byproduct of, "It can't be done"

    Classics Enthusiast? Here's my 1969 Mustang Mach I Fastback. Her sister '67 Coupe has been adopted

    Newbie? Novice? Bored? Spend a few minutes browsing the FAQ section of the forum.
    Read the HitchHiker's Guide to Getting Help on the Forums.
    Here is the list of TAGs you can use to format your posts
    Here are VB6 Help Files online


    {Alpha Image Control} {Memory Leak FAQ} {Unicode Open/Save Dialog} {Resource Image Viewer/Extractor}
    {VB and DPI Tutorial} {Manifest Creator} {UserControl Button Template} {stdPicture Render Usage}

  13. #13
    New Member MrSmith.'s Avatar
    Join Date
    Nov 2009
    Posts
    14

    Re: [VB6] XP/Vista Manifest Creator

    Most definitely I will be using this very often, gives the application a refreshing look and is so easy to implement. Thank you.

  14. #14
    Addicted Member
    Join Date
    Jun 2010
    Posts
    182

    Re: [VB6] XP/Vista/Win7 Manifest Creator

    Hi,

    When arriving to Step 5 and loading my project file it read the version as 6.2.35.0 while properties of my exe show 6.2.0.35 - is this correct? I know VB6 doesn't allow you to set one of the version parts, which should be 'build' as it has fileds for major, minor and revision and the MSDN docs (as linked above) refer to
    the assembly version as 'major.minor.build.revision' so according to this MC have it wrong or?

  15. #15

    Thread Starter
    VB-aholic & Lovin' It LaVolpe's Avatar
    Join Date
    Oct 2007
    Location
    Beside Waldo
    Posts
    19,541

    Re: [VB6] XP/Vista/Win7 Manifest Creator

    I have to fix that. The code inside is simply reversing the last two portions. Until I post the patch, simply recommend editing the version info in the textbox. Sorry for the inconvenience.
    Insomnia is just a byproduct of, "It can't be done"

    Classics Enthusiast? Here's my 1969 Mustang Mach I Fastback. Her sister '67 Coupe has been adopted

    Newbie? Novice? Bored? Spend a few minutes browsing the FAQ section of the forum.
    Read the HitchHiker's Guide to Getting Help on the Forums.
    Here is the list of TAGs you can use to format your posts
    Here are VB6 Help Files online


    {Alpha Image Control} {Memory Leak FAQ} {Unicode Open/Save Dialog} {Resource Image Viewer/Extractor}
    {VB and DPI Tutorial} {Manifest Creator} {UserControl Button Template} {stdPicture Render Usage}

  16. #16
    Addicted Member
    Join Date
    Jun 2010
    Posts
    182

    Re: [VB6] XP/Vista/Win7 Manifest Creator

    No problem, I mostly wanter to be sure about it but also it doesn'y seem to matter as at least the styles applies with both version strings.

    But there is another reason as well, I have an Add-In vbAdvance that let me set this "zero masked" digit but in its documentation it refer to it as the revision and what VB6 call revision as build. I think they got it wrong though as according to the MSDN docs the 3rd integer is the build number.

    Now that doesn't matter so much but what matter is that you may like to concider adding support for it rather then just hard code it to "0"?

    They set this value as
    Code:
    RevisionVersion=n
    I have done it in my downloaded copy as
    Code:
    sVersion = "M.m.B.R"
    and in the For Loop
    Code:
    Case "revisionversion": sVersion = Replace$(sVersion, "B", Mid$(sLines(lLine), iPos + 1))
    Then after the loop
    Code:
    If InStr(sVersion, "B") Then sVersion = Replace$(sVersion, "B", "0")
    I don't know if there is any other tool offering this function but to cater fore that one could check for the [vbAdvance] ini section being present in vb project file.

    By the way, vbAdvance was previously a commersial Add-in but is now offered as an unsupported Freeware at http://vb.mvps.org/tools/vbAdvance/

    It has some really nice features and so far it seam to work fine even in Win7-64

  17. #17

    Thread Starter
    VB-aholic & Lovin' It LaVolpe's Avatar
    Join Date
    Oct 2007
    Location
    Beside Waldo
    Posts
    19,541

    Re: [VB6] XP/Vista/Win7 Manifest Creator

    7edm, not possible. I did fix the version info issue & updated project in post #1 above. But a "Build" option is not available in a VBP file. Looking at your post above, VB does not have RevisionVersion it has RevisionVer. Trying to add RevisionVersion to a vbp file and opening in VB produces expected "invalid key" error.

    Also note that what you may be looking at may not be a true VBP file, but rather a vbAdvanced file. From browsing the net, the only way to set the build number for an app is to do it after the fact; after compiled. I have no plans on modifying this for vbAdvanced files; but feel free to do so for your needs.
    Insomnia is just a byproduct of, "It can't be done"

    Classics Enthusiast? Here's my 1969 Mustang Mach I Fastback. Her sister '67 Coupe has been adopted

    Newbie? Novice? Bored? Spend a few minutes browsing the FAQ section of the forum.
    Read the HitchHiker's Guide to Getting Help on the Forums.
    Here is the list of TAGs you can use to format your posts
    Here are VB6 Help Files online


    {Alpha Image Control} {Memory Leak FAQ} {Unicode Open/Save Dialog} {Resource Image Viewer/Extractor}
    {VB and DPI Tutorial} {Manifest Creator} {UserControl Button Template} {stdPicture Render Usage}

  18. #18
    Addicted Member
    Join Date
    Jun 2010
    Posts
    182

    Re: [VB6] XP/Vista/Win7 Manifest Creator

    LV, vbAdvance create its own section in the VBP file, like this
    Code:
    [vbAdvance]
    IsConsole=0
    HasStubFile=0
    GenerateMap=0
    TSAware=0
    XPManifest=0
    ResBuildName=.\project.dll
    ReplaceIcon=0
    SendCommandArgs=0
    SymbDbgPref=0
    RevisionVersion=0
    and so does the CodeSmart 2009 add-in which I also have, it's fully valid. Exactly how it then add that value to the exe file I don't know, but it does and it works. What I tried to explain above was that while VB and MSDN docs label that unaccessable value 'build', vbAccess refer to it as 'revision' and the other way around for the other. So the labels for the 2 positions are reversed.

    But it's perfectly ok to keep it out of the project and anyone being in need of it (who uses vbAdvanced) can just patch with my code above, it works.

  19. #19

    Thread Starter
    VB-aholic & Lovin' It LaVolpe's Avatar
    Join Date
    Oct 2007
    Location
    Beside Waldo
    Posts
    19,541

    Re: [VB6] XP/Vista/Win7 Manifest Creator

    I see. Yes, there is some inconsistency with what VB calls a revision and what .Net & others call revisions. The patch I put into place simply changed sVersion from "M.m.R.0" to "M.m.0.R". Tweaking the code to look for the additional vbAdvance section would be simple enough for those that use vbAdvance. And if so, do recommend using "M.m.B.R" as you stated, defaulting to zero for B if no such build information exists in the vbp file. Thanx for the vbAdvance lesson; never used that tool.
    Last edited by LaVolpe; Jun 29th, 2010 at 01:06 PM. Reason: typo
    Insomnia is just a byproduct of, "It can't be done"

    Classics Enthusiast? Here's my 1969 Mustang Mach I Fastback. Her sister '67 Coupe has been adopted

    Newbie? Novice? Bored? Spend a few minutes browsing the FAQ section of the forum.
    Read the HitchHiker's Guide to Getting Help on the Forums.
    Here is the list of TAGs you can use to format your posts
    Here are VB6 Help Files online


    {Alpha Image Control} {Memory Leak FAQ} {Unicode Open/Save Dialog} {Resource Image Viewer/Extractor}
    {VB and DPI Tutorial} {Manifest Creator} {UserControl Button Template} {stdPicture Render Usage}

  20. #20
    New Member
    Join Date
    Apr 2010
    Posts
    15

    Re: [VB6] XP/Vista/Win7 Manifest Creator

    This seems such an excellent project - I just cant get it to work: VB6 SP6b - Vista home

    1 download zip and exctect to c:\ \Manifest folder
    2. open in VB6 (as admin)
    3. complie to c:\ \Manifest
    4. close
    5. run c:\ \Manifest\ManifestCreator (as admin)
    6. ex's name "ManifestCreator"
    7. description "Manifest Creator"
    8. tick include common controls
    9. level as invoker
    10 UI access = false
    11. res language English (United kingdom)
    12 sub main to clipboard
    13. create from vbp file (select prjManefiests)
    (fields created, resource file referenced)
    14. write manifest - (first time it created a new resource file)
    (Maniftest inserted)
    15. close exe
    16 open manifest proj
    17 complie
    18 run
    19 - app looks escactly as it did before - ie. no xp/vist theme

    20 open proj in vb - manfest with node 24 - ukenglish and nothing else?

    21. read manifest:

    <?xml version="1.0" encoding="UTF-8"?>
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
    <assemblyIdentity
    version="1.1.0.0"
    processorArchitecture="X86"
    name="Manifest Creator"
    type="win32"
    />
    <description>Manifest Creation Application</description>
    <dependency>
    <dependentAssembly>
    <assemblyIdentity
    type="win32"
    name="Microsoft.Windows.Common-Controls"
    version="6.0.0.0"
    processorArchitecture="X86"
    publicKeyToken="6595b64144ccf1df"
    language="*"
    />
    </dependentAssembly>
    </dependency>
    <!-- Identify the application security requirements: Vista and above -->
    <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
    <requestedPrivileges>
    <requestedExecutionLevel
    level="asInvoker"
    uiAccess="false"
    />
    </requestedPrivileges>
    </security>
    </trustInfo>
    </assembly>

  21. #21

    Thread Starter
    VB-aholic & Lovin' It LaVolpe's Avatar
    Join Date
    Oct 2007
    Location
    Beside Waldo
    Posts
    19,541

    Re: [VB6] XP/Vista/Win7 Manifest Creator

    Been away for a bit, but back now. Couple questions for verification
    1. Your resource file, with the manifest in it, is referenced in your project?
    -- Open it from inside your project and ensure you have a resource section named: 24
    2. Did you tell your project to start with Sub Main? << I suspect this is the problem
    3. If so, do you have themes applied in Vista?
    4. If so, you are saying that none of the buttons, textboxes are themed? If they are, what exactly isn't themed?
    Last edited by LaVolpe; Jun 29th, 2010 at 01:05 PM.
    Insomnia is just a byproduct of, "It can't be done"

    Classics Enthusiast? Here's my 1969 Mustang Mach I Fastback. Her sister '67 Coupe has been adopted

    Newbie? Novice? Bored? Spend a few minutes browsing the FAQ section of the forum.
    Read the HitchHiker's Guide to Getting Help on the Forums.
    Here is the list of TAGs you can use to format your posts
    Here are VB6 Help Files online


    {Alpha Image Control} {Memory Leak FAQ} {Unicode Open/Save Dialog} {Resource Image Viewer/Extractor}
    {VB and DPI Tutorial} {Manifest Creator} {UserControl Button Template} {stdPicture Render Usage}

  22. #22
    New Member
    Join Date
    Apr 2010
    Posts
    15

    Re: [VB6] XP/Vista/Win7 Manifest Creator

    1. I believe so - I'm doing my tests with the Manfiest Creator project as downloaded - seems to have this
    2. I believe so - I'm doing my tests with the Manfiest Creator project as downloaded - seems to do this
    3. Err... Well I have a customised desk top - (wall paper) other than that is the standard vista theme as I understand it
    4. Non, no buttons, no text boxes, no check boxes -it looks exactly as it did when first downloaded.

    I am puzzled, thanks for the reply so far.

    Ian

  23. #23

    Thread Starter
    VB-aholic & Lovin' It LaVolpe's Avatar
    Join Date
    Oct 2007
    Location
    Beside Waldo
    Posts
    19,541

    Re: [VB6] XP/Vista/Win7 Manifest Creator

    Quote Originally Posted by exgliderpilot View Post
    2. I believe so - I'm doing my tests with the Manfiest Creator project as downloaded - seems to do this

    I am puzzled, thanks for the reply so far.

    Ian
    Manifest Creator doesn't do this, you have to do this with VB project properties.
    See post #2 above, the section that starts with: "How to start your project with Sub Main?"
    Also, ensure you have a Sub Main in a module as described in Post #2 above. Recommend re-reading Post #2 and follow its instructions exactly. Do not deviate.
    Last edited by LaVolpe; Jun 30th, 2010 at 10:05 AM.
    Insomnia is just a byproduct of, "It can't be done"

    Classics Enthusiast? Here's my 1969 Mustang Mach I Fastback. Her sister '67 Coupe has been adopted

    Newbie? Novice? Bored? Spend a few minutes browsing the FAQ section of the forum.
    Read the HitchHiker's Guide to Getting Help on the Forums.
    Here is the list of TAGs you can use to format your posts
    Here are VB6 Help Files online


    {Alpha Image Control} {Memory Leak FAQ} {Unicode Open/Save Dialog} {Resource Image Viewer/Extractor}
    {VB and DPI Tutorial} {Manifest Creator} {UserControl Button Template} {stdPicture Render Usage}

  24. #24
    New Member
    Join Date
    Apr 2010
    Posts
    15

    Re: [VB6] XP/Vista/Win7 Manifest Creator

    thanks - i'll look again i thought manefest creator did start with sub main...apologies if i'm wrong

  25. #25

    Thread Starter
    VB-aholic & Lovin' It LaVolpe's Avatar
    Join Date
    Oct 2007
    Location
    Beside Waldo
    Posts
    19,541

    Re: [VB6] XP/Vista/Win7 Manifest Creator

    No apologies necessary. In order for the Manifest Creator to edit your project to force it to start with Sub Main, the creator would have to modify the .VBP file and/or create/modify a .BAS file. I chose not to automate it to that level -- too much effort, room for problems, for such little gain.
    Insomnia is just a byproduct of, "It can't be done"

    Classics Enthusiast? Here's my 1969 Mustang Mach I Fastback. Her sister '67 Coupe has been adopted

    Newbie? Novice? Bored? Spend a few minutes browsing the FAQ section of the forum.
    Read the HitchHiker's Guide to Getting Help on the Forums.
    Here is the list of TAGs you can use to format your posts
    Here are VB6 Help Files online


    {Alpha Image Control} {Memory Leak FAQ} {Unicode Open/Save Dialog} {Resource Image Viewer/Extractor}
    {VB and DPI Tutorial} {Manifest Creator} {UserControl Button Template} {stdPicture Render Usage}

  26. #26
    New Member
    Join Date
    Apr 2010
    Posts
    15

    Re: [VB6] XP/Vista/Win7 Manifest Creator

    Hi, Thanks for the reply - now I'm totaly confused...
    here's what I see: http://creamteadiet.blogspot.com/201...confusion.html
    and as i understand it that is the manifest creator project starting with sub main???
    PS you may need to click on the image to get it full size...
    Last edited by exgliderpilot; Jul 1st, 2010 at 11:13 AM. Reason: added info and typo

  27. #27

    Thread Starter
    VB-aholic & Lovin' It LaVolpe's Avatar
    Join Date
    Oct 2007
    Location
    Beside Waldo
    Posts
    19,541

    Re: [VB6] XP/Vista/Win7 Manifest Creator

    Oh good screenshot. I thought you were trying to apply a manifest to one of your projects, not the creator itself. The creator should be themed once it is compiled. Just so we are on the same page, recommend re-downloading the project from post #1 and just compile it; don't modify anything. Then open the compiled exe and see if it is themed. If not, we can discuss that.

    To apply a manifest to one of your existing themes, use the steps in Post #2.
    Insomnia is just a byproduct of, "It can't be done"

    Classics Enthusiast? Here's my 1969 Mustang Mach I Fastback. Her sister '67 Coupe has been adopted

    Newbie? Novice? Bored? Spend a few minutes browsing the FAQ section of the forum.
    Read the HitchHiker's Guide to Getting Help on the Forums.
    Here is the list of TAGs you can use to format your posts
    Here are VB6 Help Files online


    {Alpha Image Control} {Memory Leak FAQ} {Unicode Open/Save Dialog} {Resource Image Viewer/Extractor}
    {VB and DPI Tutorial} {Manifest Creator} {UserControl Button Template} {stdPicture Render Usage}

  28. #28
    PowerPoster
    Join Date
    Feb 2006
    Posts
    24,482

    Re: [VB6] XP/Vista/Win7 Manifest Creator

    For trivial manifests with little more than a CC6 selection assembly entry and a trustInfo entry you can edit them by hand using Notepad. Just be sure you pad the file to a multiple of 4 bytes as measured after saving them in UTF-8 format. Re-edit adding blank spaces to the end if required for padding.

    Then you can add this as a Custom resource using VB6's Resource Editor, then edit the new resource's Properties to Type: #24 and Id: #1 as shown in the capture.

    I was surprised this worked myself.
    Attached Images Attached Images  

  29. #29
    New Member
    Join Date
    Apr 2010
    Posts
    15

    Re: [VB6] XP/Vista/Win7 Manifest Creator

    Hi LaVolpe, Did as you asked - compliled exe has theme. So now I'm going to repeat applying the exe to the (newly) downloaded project. It may take a day or two as customer is rattling my cage over something else at this very moment. PS thanks for the help so far.
    Last edited by exgliderpilot; Jul 6th, 2010 at 04:20 AM. Reason: PS

  30. #30

    Thread Starter
    VB-aholic & Lovin' It LaVolpe's Avatar
    Join Date
    Oct 2007
    Location
    Beside Waldo
    Posts
    19,541

    Re: [VB6] XP/Vista/Win7 Manifest Creator

    @exgliderpilot (post #29): Thought it would & should also work for your projects if you follow steps in post#2
    @dilettante (post #28). Interesting indeed, will have to try this too.
    Insomnia is just a byproduct of, "It can't be done"

    Classics Enthusiast? Here's my 1969 Mustang Mach I Fastback. Her sister '67 Coupe has been adopted

    Newbie? Novice? Bored? Spend a few minutes browsing the FAQ section of the forum.
    Read the HitchHiker's Guide to Getting Help on the Forums.
    Here is the list of TAGs you can use to format your posts
    Here are VB6 Help Files online


    {Alpha Image Control} {Memory Leak FAQ} {Unicode Open/Save Dialog} {Resource Image Viewer/Extractor}
    {VB and DPI Tutorial} {Manifest Creator} {UserControl Button Template} {stdPicture Render Usage}

  31. #31
    Lively Member
    Join Date
    Sep 2009
    Posts
    95

    [VB6] XP/Vista/Win7 Manifest Creator

    Hello LaVolpe, thank very much for all your work!

    I like the fact, that your tool also supports the admin rights thing.
    But it is a little complicated to use.

    Would it be possible for you, to make an IDE addin like one of these:
    * XP Style (http://www.vb-zentrum.de/Tools.html or http://www.vbarchiv.net/download/dow...yle-addin.html)
    * vbAdvance

    First I did like vbAdvance more, because it is possible to use a res file (I guess vbAcvance adds the manifest to that resource file before each compilation) - XP Style does not work, if a resource file is already added to the project.
    But in one project, vbAcvance did make my application to crash at start up, when "adding XP manifest resource" was activated.

    I'll bet you are able to bring all advantages together.
    _______________________________________________

    Something else:

    If I add a manifest to my projects, which contain UserControls, they do all crash at program shut down, if I run them on other systems (Windows XP/Vista/7 wants to send an error report to Microsoft & executable cannot be deleted any more).
    But it does not happen on my system (maybe because uxtheme.dll is patched... I have no clue ).

    This already happens, if I start a new project with code to init common controls, add a resource file with included manifest and a new empty UserControl. Can you reproduce this behavior? Do you have any idea, how to solve this problem?

  32. #32

    Thread Starter
    VB-aholic & Lovin' It LaVolpe's Avatar
    Join Date
    Oct 2007
    Location
    Beside Waldo
    Posts
    19,541

    Re: [VB6] XP/Vista/Win7 Manifest Creator

    I don't think it is hard to use. Just add a res file to your project and use this project or dilettante's method to insert a manifest into it. You can modify the project as needed to work with vbAdvance .vbw files. If vbAdvance can't remove an existing manifest from the res file, that is their shortcoming; you could use this project to remove the resfile though. I don't use vbAdvance and don't want to install it just to work around its shortcomings. I think you can understand. Take the time to modify the code and upload it here as a "vbAdvance-aware" version.

    As for your other questions regarding the crashes & usercontrols, post that on the forum so more people can have opportunity to offer solutions from their experiences.
    Insomnia is just a byproduct of, "It can't be done"

    Classics Enthusiast? Here's my 1969 Mustang Mach I Fastback. Her sister '67 Coupe has been adopted

    Newbie? Novice? Bored? Spend a few minutes browsing the FAQ section of the forum.
    Read the HitchHiker's Guide to Getting Help on the Forums.
    Here is the list of TAGs you can use to format your posts
    Here are VB6 Help Files online


    {Alpha Image Control} {Memory Leak FAQ} {Unicode Open/Save Dialog} {Resource Image Viewer/Extractor}
    {VB and DPI Tutorial} {Manifest Creator} {UserControl Button Template} {stdPicture Render Usage}

  33. #33
    Fanatic Member coolcurrent4u's Avatar
    Join Date
    Apr 2008
    Location
    *****
    Posts
    993

    Re: [VB6] XP/Vista/Win7 Manifest Creator

    Nice one LaVolpe

    But am having a problem using the toolbar in v5sp2 of vb6. How do you make the regions of buttons in the tool bar control transparent. I am using magenta as the basckground color of my bitmap icon images. please check the attache. the issue occurs wjem you add manifest to project files
    Attached Images Attached Images  
    Last edited by coolcurrent4u; Sep 7th, 2010 at 06:13 PM.
    Programming is all about good logic. Spend more time here


    (Generate pronounceable password) (Generate random number c#) (Filter array with another array)

  34. #34

    Thread Starter
    VB-aholic & Lovin' It LaVolpe's Avatar
    Join Date
    Oct 2007
    Location
    Beside Waldo
    Posts
    19,541

    Re: [VB6] XP/Vista/Win7 Manifest Creator

    coolcurrent4u. I don't follow. What does it look like without a manifest? Please post this in the VB6 forum with more details so I & others might be able to help.
    Insomnia is just a byproduct of, "It can't be done"

    Classics Enthusiast? Here's my 1969 Mustang Mach I Fastback. Her sister '67 Coupe has been adopted

    Newbie? Novice? Bored? Spend a few minutes browsing the FAQ section of the forum.
    Read the HitchHiker's Guide to Getting Help on the Forums.
    Here is the list of TAGs you can use to format your posts
    Here are VB6 Help Files online


    {Alpha Image Control} {Memory Leak FAQ} {Unicode Open/Save Dialog} {Resource Image Viewer/Extractor}
    {VB and DPI Tutorial} {Manifest Creator} {UserControl Button Template} {stdPicture Render Usage}

  35. #35
    PowerPoster
    Join Date
    Feb 2006
    Posts
    24,482

    Re: [VB6] XP/Vista/Win7 Manifest Creator

    Possible workaround.

    Be sure to UseMaskColor in your ImageList, and make the call:
    Code:
    Private Const CLR_NONE As Long = &HFFFFFFFF
    Private Declare Function ImageList_SetBkColor Lib "comctl32" ( _
        ByVal hIml As Long, _
        ByVal clrBk As Long) As Long
    
    Public Sub SetImageListTransp(ByVal hImageList As Long)
        ImageList_SetBkColor hImageList, CLR_NONE
    End Sub
    ... passing in the handle of the ImageList.

    This should make the ImageList's background transparent, since we don't have a BackStyle property we can use.

  36. #36
    Fanatic Member coolcurrent4u's Avatar
    Join Date
    Apr 2008
    Location
    *****
    Posts
    993

    Re: [VB6] XP/Vista/Win7 Manifest Creator

    Quote Originally Posted by dilettante View Post
    Possible workaround.

    Be sure to UseMaskColor in your ImageList, and make the call:
    Code:
    Private Const CLR_NONE As Long = &HFFFFFFFF
    Private Declare Function ImageList_SetBkColor Lib "comctl32" ( _
        ByVal hIml As Long, _
        ByVal clrBk As Long) As Long
    
    Public Sub SetImageListTransp(ByVal hImageList As Long)
        ImageList_SetBkColor hImageList, CLR_NONE
    End Sub
    ... passing in the handle of the ImageList.

    This should make the ImageList's background transparent, since we don't have a BackStyle property we can use.
    Your solution does not seem to work for me. I have openned a thread for this topic here
    Here
    Programming is all about good logic. Spend more time here


    (Generate pronounceable password) (Generate random number c#) (Filter array with another array)

  37. #37
    New Member
    Join Date
    Sep 2010
    Posts
    5

    Re: [VB6] XP/Vista/Win7 Manifest Creator

    Hi,

    I could not understand how to add the resource file as said in step two :

    "2. Create a resource file and add it to your project if no resource file exists yet"

    Thanks

  38. #38

    Thread Starter
    VB-aholic & Lovin' It LaVolpe's Avatar
    Join Date
    Oct 2007
    Location
    Beside Waldo
    Posts
    19,541

    Re: [VB6] XP/Vista/Win7 Manifest Creator

    Well, there are a few ways in this case

    1) Non-traditional, simply select "Write Manifest" in the bottom combobox, after filling in the rest of the form. In the dialog box that pops up, select "Resource Files" in file type box, navigate to the folder of your project, provide a file name for the res file & click ok. The manifest creator creates the res file. You'll still need to add it to your project. See next step(s)

    2) Add a resource file to your project using your menus: Project | Add New Resource File

    3) Right click in your project explorer and select menus: Add | Resource File
    Insomnia is just a byproduct of, "It can't be done"

    Classics Enthusiast? Here's my 1969 Mustang Mach I Fastback. Her sister '67 Coupe has been adopted

    Newbie? Novice? Bored? Spend a few minutes browsing the FAQ section of the forum.
    Read the HitchHiker's Guide to Getting Help on the Forums.
    Here is the list of TAGs you can use to format your posts
    Here are VB6 Help Files online


    {Alpha Image Control} {Memory Leak FAQ} {Unicode Open/Save Dialog} {Resource Image Viewer/Extractor}
    {VB and DPI Tutorial} {Manifest Creator} {UserControl Button Template} {stdPicture Render Usage}

  39. #39

    Thread Starter
    VB-aholic & Lovin' It LaVolpe's Avatar
    Join Date
    Oct 2007
    Location
    Beside Waldo
    Posts
    19,541

    Re: [VB6] XP/Vista/Win7 Manifest Creator

    Project updated to help prevent crashes when themed exe containing VB usercontrols closes. See project history and comments in post #1 for more info. This update was in response to post #31 above.
    Last edited by LaVolpe; Oct 2nd, 2010 at 02:44 PM.
    Insomnia is just a byproduct of, "It can't be done"

    Classics Enthusiast? Here's my 1969 Mustang Mach I Fastback. Her sister '67 Coupe has been adopted

    Newbie? Novice? Bored? Spend a few minutes browsing the FAQ section of the forum.
    Read the HitchHiker's Guide to Getting Help on the Forums.
    Here is the list of TAGs you can use to format your posts
    Here are VB6 Help Files online


    {Alpha Image Control} {Memory Leak FAQ} {Unicode Open/Save Dialog} {Resource Image Viewer/Extractor}
    {VB and DPI Tutorial} {Manifest Creator} {UserControl Button Template} {stdPicture Render Usage}

  40. #40
    Software Carpenter dee-u's Avatar
    Join Date
    Feb 2005
    Location
    Pinas
    Posts
    11,123

    Re: [VB6] XP/Vista/Win7 Manifest Creator

    8. Select "Resource Files" in browse window's bottom combobox. Locate your project's .res file and click "Save"
    I cannot understand the above instruction, I cannot find "Resource Files" in the combobox?
    Regards,


    As a gesture of gratitude please consider rating helpful posts. c",)

    Some stuffs: Mouse Hotkey | Compress file using SQL Server! | WPF - Rounded Combobox | WPF - Notify Icon and Balloon | NetVerser - a WPF chatting system

Page 1 of 3 123 LastLast

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width