Automatically changes controls to XP themed style in XP based OS.
2005-12-13 13:45
459 查看
'**************************************
'Windows API/Global Declarations for :_
' Automatically Create Manifest File _
'**************************************
Private Declare Function GetVersionExA Lib "kernel32" (lpVersionInformation As OSVERSIONINFO) As Integer
Private Declare Function InitCommonControls Lib "Comctl32.dll" () As Long
Private Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128
End Type
'**************************************
' Name: _ Automatically Create Manifest
' File _
' Description:Automatically changes cont
' rols to XP themed style in XP based OS.
' By: KRYO_11
'
'
' Inputs:None
'
' Returns:None
'
'Assumes:None
'
'Side Effects:None
'This code is copyrighted and has limite
' d warranties.
'Please see http://www.Planet-Source-Cod ' e.com/xq/ASP/txtCodeId.51893/lngWId.1/qx
' /vb/scripts/ShowCode.htm
'for details.
'**************************************
Public Function CreateManifest() As Boolean
On Error Resume Next
Dim EXEPath As String
'Get The EXE Path
EXEPath = App.Path & IIf(Right(App.Path, 1) = "/", vbNullString, "/")
EXEPath = EXEPath & App.EXEName & IIf(LCase(Right(App.EXEName, 4)) = ".exe", ".manifest", ".exe.manifest")
'Checks if the manifest has already been
' created
If Dir(EXEPath, vbReadOnly Or vbSystem Or vbHidden) <> vbNullString Then GoTo ErrorHandler
'Makes sure you are using windows xp
If WinVersion = "Windows XP" Then
Dim iFileNumber As Integer
iFileNumber = FreeFile
'Save the .manifest file
Open EXEPath For Output As #iFileNumber
Print #iFileNumber, FormatManifest
CreateManifest = True
Else
Kill EXEPath
End If
'set the file to be hidden
Close #iFileNumber
SetAttr EXEPath, vbHidden Or vbSystem Or vbReadOnly Or vbArchive
ErrorHandler:
Call InitCommonControls
End Function
'get windows version (from Microsoft.com
' )
Private Function WinVersion() As String
Dim osinfo As OSVERSIONINFO
Dim retvalue As Integer
osinfo.dwOSVersionInfoSize = 148
osinfo.szCSDVersion = Space$(128)
retvalue = GetVersionExA(osinfo)
With osinfo
Select Case .dwPlatformId
Case 1
If .dwMinorVersion = 0 Then
WinVersion = "Windows 95"
ElseIf .dwMinorVersion = 10 Then
WinVersion = "Windows 98"
End If
Case 2
If .dwMajorVersion = 3 Then
WinVersion = "Windows NT 3.51"
ElseIf .dwMajorVersion = 4 Then
WinVersion = "Windows NT 4.0"
ElseIf .dwMajorVersion >= 5 Then
WinVersion = "Windows XP"
End If
Case Else
WinVersion = "Failed"
End Select
End With
End Function
'Create the string for the manifest file
'
Private Function FormatManifest() As String
Dim Header As String
Header = "<?xml version=" & Chr(34) & "1.0" & Chr(34) & " encoding=" & Chr(34) & "UTF-8" & Chr(34) & " standalone=" & Chr(34) & "yes" & Chr(34) & "?>"
Header = Header & vbCrLf & "<assembly xmlns=" & Chr(34) & "urn:schemas-microsoft-com:asm.v1" & Chr(34) & " manifestVersion=" & Chr(34) & "1.0" & Chr(34) & ">"
Header = Header & vbCrLf & "<assemblyIdentity"
Header = Header & vbCrLf & "version=" & Chr(34) & "1.0.0.0" & Chr(34)
Header = Header & vbCrLf & "processorArchitecture=" & Chr(34) & "X86" & Chr(34)
Header = Header & vbCrLf & "name=" & Chr(34) & "Microsoft.VisualBasic6.IDE" & Chr(34)
Header = Header & vbCrLf & "type=" & Chr(34) & "win32" & Chr(34)
Header = Header & vbCrLf & "/>"
Header = Header & vbCrLf & "<description>Microsoft Visual Basic 6 IDE</description>"
Header = Header & vbCrLf & "<dependency>"
Header = Header & vbCrLf & "<dependentAssembly>"
Header = Header & vbCrLf & "<assemblyIdentity"
Header = Header & vbCrLf & "type=" & Chr(34) & "win32" & Chr(34)
Header = Header & vbCrLf & "name=" & Chr(34) & "Microsoft.Windows.Common-Controls" & Chr(34)
Header = Header & vbCrLf & "version=" & Chr(34) & "6.0.0.0" & Chr(34)
Header = Header & vbCrLf & "processorArchitecture=" & Chr(34) & "X86" & Chr(34)
Header = Header & vbCrLf & "publicKeyToken=" & Chr(34) & "6595b64144ccf1df" & Chr(34)
Header = Header & vbCrLf & "language=" & Chr(34) & "*" & Chr(34)
Header = Header & vbCrLf & "/>"
Header = Header & vbCrLf & "</dependentAssembly>"
Header = Header & vbCrLf & "</dependency>"
Header = Header & vbCrLf & "</assembly>"
FormatManifest = Header
End Function
'Windows API/Global Declarations for :_
' Automatically Create Manifest File _
'**************************************
Private Declare Function GetVersionExA Lib "kernel32" (lpVersionInformation As OSVERSIONINFO) As Integer
Private Declare Function InitCommonControls Lib "Comctl32.dll" () As Long
Private Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128
End Type
'**************************************
' Name: _ Automatically Create Manifest
' File _
' Description:Automatically changes cont
' rols to XP themed style in XP based OS.
' By: KRYO_11
'
'
' Inputs:None
'
' Returns:None
'
'Assumes:None
'
'Side Effects:None
'This code is copyrighted and has limite
' d warranties.
'Please see http://www.Planet-Source-Cod ' e.com/xq/ASP/txtCodeId.51893/lngWId.1/qx
' /vb/scripts/ShowCode.htm
'for details.
'**************************************
Public Function CreateManifest() As Boolean
On Error Resume Next
Dim EXEPath As String
'Get The EXE Path
EXEPath = App.Path & IIf(Right(App.Path, 1) = "/", vbNullString, "/")
EXEPath = EXEPath & App.EXEName & IIf(LCase(Right(App.EXEName, 4)) = ".exe", ".manifest", ".exe.manifest")
'Checks if the manifest has already been
' created
If Dir(EXEPath, vbReadOnly Or vbSystem Or vbHidden) <> vbNullString Then GoTo ErrorHandler
'Makes sure you are using windows xp
If WinVersion = "Windows XP" Then
Dim iFileNumber As Integer
iFileNumber = FreeFile
'Save the .manifest file
Open EXEPath For Output As #iFileNumber
Print #iFileNumber, FormatManifest
CreateManifest = True
Else
Kill EXEPath
End If
'set the file to be hidden
Close #iFileNumber
SetAttr EXEPath, vbHidden Or vbSystem Or vbReadOnly Or vbArchive
ErrorHandler:
Call InitCommonControls
End Function
'get windows version (from Microsoft.com
' )
Private Function WinVersion() As String
Dim osinfo As OSVERSIONINFO
Dim retvalue As Integer
osinfo.dwOSVersionInfoSize = 148
osinfo.szCSDVersion = Space$(128)
retvalue = GetVersionExA(osinfo)
With osinfo
Select Case .dwPlatformId
Case 1
If .dwMinorVersion = 0 Then
WinVersion = "Windows 95"
ElseIf .dwMinorVersion = 10 Then
WinVersion = "Windows 98"
End If
Case 2
If .dwMajorVersion = 3 Then
WinVersion = "Windows NT 3.51"
ElseIf .dwMajorVersion = 4 Then
WinVersion = "Windows NT 4.0"
ElseIf .dwMajorVersion >= 5 Then
WinVersion = "Windows XP"
End If
Case Else
WinVersion = "Failed"
End Select
End With
End Function
'Create the string for the manifest file
'
Private Function FormatManifest() As String
Dim Header As String
Header = "<?xml version=" & Chr(34) & "1.0" & Chr(34) & " encoding=" & Chr(34) & "UTF-8" & Chr(34) & " standalone=" & Chr(34) & "yes" & Chr(34) & "?>"
Header = Header & vbCrLf & "<assembly xmlns=" & Chr(34) & "urn:schemas-microsoft-com:asm.v1" & Chr(34) & " manifestVersion=" & Chr(34) & "1.0" & Chr(34) & ">"
Header = Header & vbCrLf & "<assemblyIdentity"
Header = Header & vbCrLf & "version=" & Chr(34) & "1.0.0.0" & Chr(34)
Header = Header & vbCrLf & "processorArchitecture=" & Chr(34) & "X86" & Chr(34)
Header = Header & vbCrLf & "name=" & Chr(34) & "Microsoft.VisualBasic6.IDE" & Chr(34)
Header = Header & vbCrLf & "type=" & Chr(34) & "win32" & Chr(34)
Header = Header & vbCrLf & "/>"
Header = Header & vbCrLf & "<description>Microsoft Visual Basic 6 IDE</description>"
Header = Header & vbCrLf & "<dependency>"
Header = Header & vbCrLf & "<dependentAssembly>"
Header = Header & vbCrLf & "<assemblyIdentity"
Header = Header & vbCrLf & "type=" & Chr(34) & "win32" & Chr(34)
Header = Header & vbCrLf & "name=" & Chr(34) & "Microsoft.Windows.Common-Controls" & Chr(34)
Header = Header & vbCrLf & "version=" & Chr(34) & "6.0.0.0" & Chr(34)
Header = Header & vbCrLf & "processorArchitecture=" & Chr(34) & "X86" & Chr(34)
Header = Header & vbCrLf & "publicKeyToken=" & Chr(34) & "6595b64144ccf1df" & Chr(34)
Header = Header & vbCrLf & "language=" & Chr(34) & "*" & Chr(34)
Header = Header & vbCrLf & "/>"
Header = Header & vbCrLf & "</dependentAssembly>"
Header = Header & vbCrLf & "</dependency>"
Header = Header & vbCrLf & "</assembly>"
FormatManifest = Header
End Function
相关文章推荐
- SiteMap Controls: How to add a duplicate link in the web.sitemap
- MyEclipse部署项目出错:Deployment is out of date due to changes in the
- Responding to resource changes in the Eclipse workspace
- How to change the Push and Pop animations in a navigation based app
- How to set the DefaultButton in a Page Based on ASP.NET Master Page
- Fixing Windows XP Annoyances: How to Fix the Most Annoying Things About the Windows OS.
- SiteMap Controls: How to add a duplicate link in the web.sitemap
- How to tell if you’re running the 32 bit or 64 bit kernel in Mac OS X Snow Leopard
- How to build the environment of XPCOM in Windows XP
- MESSAGE The workspace exited with unsaved changes in the previous session; refreshing workspace to r
- Tomcat发布项目出错:Deployment is out of date due to changes in the underlying project contents...
- MyEclipse中无法部署项目到tomcat中的解决方法( deployment is out of date due to changes in the underlying ......)
- [Oracle Mgmt]Use RMAN to Duplicate Database in the Same Host (Based on Windows Platform)
- Changes to the Meta-Object System in Qt 5
- Deployment is out of date due to changes in the underlying project contents. You'll need to manually 'Redeploy' the project to u
- How to find child controls that are located in the template of a parent control
- The workspace exited with unsaved changes in the previous session; refreshing workspace to recover changes
- 解决 deployment is out of dete due to changes in the underlying project contents youll need to
- Android:Changes to the SecretKeyFactory API in Android 4.4
- os引导程序boot从扇区拷贝os加载程序loader文件到内存(boot copy kernel to mem in the same method)