Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Мне бы манифест добавит к проекту VB6. Добавлено: 12.07.04 01:58  

Автор вопроса:  NorN | Web-сайт: replace.com.ru
Мне бы манифест добавит к проекту VB6. Если кто знает, как сделать это, чтобы программа нормально работала и отображала стиль WinXP, помогите.
Вообще-то получается это дело если впихнут манифест, ну или положить его рядом с exe файлам, и включить рижим совместимости с Windows 98,ME, а вот как без этого обойтись, как сделать правильно и корректно?

Ответить

  Ответы Всего ответов: 12  

Номер ответа: 1
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #1
Добавлено: 12.07.04 02:07
На сколько мне известно - никак, если конечно же только не воспользоваться редактором ресурсов от VC :)

Ответить

Номер ответа: 2
Автор ответа:
 cresta



Вопросов: 117
Ответов: 1538
 Профиль | | #2 Добавлено: 12.07.04 03:13
С манифестом надо поосторожнее: бывает, если установлены какие-либо темы на ХР (например из пакета ASUS), некоторые стандартные контролы могут выглядеть очень непривлекательно :( Сам нарывался на такое. Часто этим грешат радиобуттоны, чекбоксы и менюшки. А вообще, если хочется красоты, то понастоящему привлекательный дизайн надо рисовать вручную, не полагаясь на всякие манифесты. имхо.

Ответить

Номер ответа: 3
Автор ответа:
 kmk



Вопросов: 16
Ответов: 18
 Профиль | | #3 Добавлено: 12.07.04 08:25
Привет!

Вот пример

'В модуле
Function XPStyle(Optional AutoRestart As Boolean = True, Optional CreateNew As Boolean) As Boolean
InitCommonControls
On Error Resume Next
Dim XML As String
Dim ManifestCheck As String
Dim strManifest As String
Dim FreeFileNo As Integer

If AutoRestart = True Then CreateNew = False


XML = ("<?xml version=""1.0"" encoding=""UTF-8"" standalone=""yes""?> " & vbCrLf & "<assembly " & vbCrLf & " xmlns=""urn:schemas-microsoft-com:asm.v1"" " & vbCrLf & " manifestVersion=""1.0"">" & vbCrLf & "<assemblyIdentity " & vbCrLf & " processorArchitecture=""x86"" " & vbCrLf & " version=""EXEVERSION""" & vbCrLf & " type=""win32""" & vbCrLf & " name=""EXENAME""/>" & vbCrLf & " <description>EXEDESCRIBTION</description>" & vbCrLf & " <dependency>" & vbCrLf & " <dependentAssembly>" & vbCrLf & " <assemblyIdentity" & vbCrLf & " type=""win32""" & vbCrLf & " name=""Microsoft.Windows.Common-Controls""" & vbCrLf & " version=""6.0.0.0""" & vbCrLf & " publicKeyToken=""6595b64144ccf1df""" & vbCrLf & " language=""*""" & vbCrLf & " processorArchitecture=""x86""/>" & vbCrLf & " </dependentAssembly>" & vbCrLf & " </dependency>" & vbCrLf & "</assembly>" & vbCrLf & "";)

strManifest = App.Path & "\" & App.EXEName & ".exe.manifest" 'set the name of the manifest
ManifestCheck = Dir(strManifest, vbNormal + vbSystem + vbHidden + vbReadOnly + vbArchive) 'check the app manifest file.
If ManifestCheck = "" Or CreateNew = True Then 'if not found.. make a new one
XML = Replace(XML, "EXENAME", App.EXEName & ".exe";) 'Replaces the string "EXENAME" with the program's exe file name.
XML = Replace(XML, "EXEVERSION", App.Major & "." & App.Minor & "." & App.Revision & ".0";) 'Replaces the "EXEVERSION" string.
XML = Replace(XML, "EXEDESCRIBTION", App.FileDescription) 'Replaces the app Describtion.
FreeFileNo = FreeFile 'get the next avilabel file
If ManifestCheck <> "" Then
SetAttr strManifest, vbNormal
Kill strManifest
End If
Open strManifest For Binary As #(FreeFileNo) 'open the file
Put #(FreeFileNo), , XML 'uses 'put' to set the file content.. note that 'put' (binary mode) is much faster than 'print'(output mode)
Close #(FreeFileNo) 'close the file.
SetAttr strManifest, vbHidden + vbSystem
If ManifestCheck = "" Then
XPStyle = False 'return false.. this means that the file does not exist
Else
XPStyle = True
End If
If AutoRestart = True Then 'if in automode (default), the program will restart.
Shell App.Path & "\" & App.EXEName & ".exe " & Command$, vbNormalFocus 'restart the program and bypass command line parameters (if any)
End 'end the session.
End If
Else 'the manifest file exists.
XPStyle = True 'return true.
End If
End Function

'на форме прописать

Private Sub Form_Initialize()
XPStyle True, True
App.Title = "Имя Приложения"
End Sub

после создания ехе работает как в ХР

Ответить

Номер ответа: 4
Автор ответа:
 kmk



Вопросов: 16
Ответов: 18
 Профиль | | #4 Добавлено: 12.07.04 08:31
Збыл еще набо в модуле прописать

Declare Function InitCommonControls Lib "Comctl32.dll" () As Long

Ответить

Номер ответа: 5
Автор ответа:
 kmk



Вопросов: 16
Ответов: 18
 Профиль | | #5 Добавлено: 12.07.04 08:33
И опять забыл. Тяжко после выходных))
В модуле еще
Sub cMain()
    InitCommonControls
    XPStyle
End Sub

Ответить

Номер ответа: 6
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #6
Добавлено: 12.07.04 10:46
2 kmk, по-моему он уже знает как использовать манифест, он попросту хочет узнать как это сделать без выкрутасов, редактирования exe файлов или .manifest'ов...

Ответить

Номер ответа: 7
Автор ответа:
 NorN



Вопросов: 7
Ответов: 15
 Web-сайт: replace.com.ru
 Профиль | | #7
Добавлено: 12.07.04 11:24
Не, всё правильно "Он" знает :-), только понимаете чего, в VB6 у меня не проходит как в VB7 добавить ресурс. Видимо VB6 стара для этого :-\. Попробую как рекомендовал КМК.

Ответить

Номер ответа: 8
Автор ответа:
 Андрей Никитин



ICQ: 325172082 

Вопросов: 3
Ответов: 81
 Профиль | | #8 Добавлено: 12.07.04 12:28
Я для себя сделал "шаблон" ресурса, где есть только ресурс с номером 24 (это и есть манифест). А потом уже в vb6 обычным образом подключаю этот ресурc (+ InitCommonControls) и добавляю в ресурс остальные ресурсы (простите за каламбур) :). Если надо могу выслать "шаблон" - не надо будет делать самому.

Ответить

Номер ответа: 9
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #9 Добавлено: 13.07.04 02:41
А я для целей использую PE Explorer..
Он манифест в ехе зашивает.. Проблем пока не было.

Ответить

Номер ответа: 10
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #10
Добавлено: 13.07.04 02:52
А я вообще не зашиваю в свои проекты манифест, и вообще не пользуюсь темами :))

Ответить

Номер ответа: 11
Автор ответа:
 Matrix



Вопросов: 34
Ответов: 62
 Web-сайт: delta-net.narod.ru
 Профиль | | #11
Добавлено: 13.07.04 15:22
а чего как сложно-то??
Я делаю всегда так:
1) Использую common controls 5.0
2) В General формы ставлю Private Declare Function InitCommonControls Lib "Comctl32.dll" () As Long
3) В Form_Initialize() пишу Dim x As Long
x = InitCommonControls
4) Компилирую, кладу в папку манифаест
5) Наслаждаюсь :)

Ответить

Номер ответа: 12
Автор ответа:
 Matrix



Вопросов: 34
Ответов: 62
 Web-сайт: delta-net.narod.ru
 Профиль | | #12
Добавлено: 13.07.04 15:23
а чего как сложно-то??
Я делаю всегда так:
1) Использую common controls 5.0
2) В General формы ставлю Private Declare Function InitCommonControls Lib "Comctl32.dll" () As Long
3) В Form_Initialize() пишу Dim x As Long
x = InitCommonControls
4) Компилирую, кладу в папку манифаест
5) Наслаждаюсь :)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам