Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
Модератор
Эксперт .NET
3248 / 2909 / 448
Регистрация: 27.01.2014
Сообщений: 5,396
1

Манифест в VB6.exe нарушил работу палитры цветов в окне свойств

22.03.2014, 17:40. Просмотров 1459. Ответов 10
Метки нет (Все метки)


Подскажите как правильно врезать манифест в ресурсы VB6.exe.
Пробовал добавить ресурс "24\1\1033", контроллы меняют стиль, но одна загвоздочка - в окне Параметров какого либо контролла при выборе цвета, например для ForeColor, список системых отображается, а вот палитра с иконками цвета рисует пустой белый фон, но выбрать все же можно, но получается на-угад.!!! (
0
Миниатюры
Манифест в VB6.exe нарушил работу палитры цветов в окне свойств  
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.03.2014, 17:40
Ответы с готовыми решениями:

Некорректная работа палитры цветов фотошоп
Здравствуйте. У меня проблема с цветом в палитре цветов. Не могу задать нужный мне цвет. Целевой...

Нарушил работу папок
Проблема такая. Я решил поменять иконки папок по умолчанию. Полез в "Свойства папки/Типы файлов"....

Работа с colorbox - добавление своей палитры цветов
Доброго времени суток! Столкнулся с такой проблемой. Компонент ColorBox позволяет выбирать...

Вирус нарушил работу браузеров (2)
Здравствуйте! Проблема аналогичная той, что в соседней теме, началось вчера

10
Модератор
6702 / 2699 / 518
Регистрация: 24.04.2011
Сообщений: 5,025
Записей в блоге: 10
22.03.2014, 18:54 2
Цитата Сообщение от Юрий Комар Посмотреть сообщение
а вот палитра с иконками цвета рисует пустой белый фон
У меня так же стало после всех последних обновлений vb6.
Нужный цвет назначаю числами, вручную.
0
Модератор
Эксперт .NET
3248 / 2909 / 448
Регистрация: 27.01.2014
Сообщений: 5,396
22.03.2014, 19:14  [ТС] 3
запомнить бы их все еще ))))

Добавлено через 1 минуту
вот только добавлением файла с манифестом в каталог с ВБ не дает результата его присоединения. пришлось встроить в EXEшник
0
Модератор
8379 / 3150 / 823
Регистрация: 22.02.2013
Сообщений: 4,627
Записей в блоге: 78
22.03.2014, 19:26 4
Это известный баг.
Манифест можно вставлять уже в готовый EXE Отображение кириллицы (кодировка)
0
Модератор
Эксперт .NET
3248 / 2909 / 448
Регистрация: 27.01.2014
Сообщений: 5,396
23.03.2014, 08:52  [ТС] 5
Спасибо. Но именно в эксешник я и всатила, по другому не хотел приклеиваться.
0
Эксперт WindowsАвтор FAQ
17600 / 7443 / 884
Регистрация: 25.12.2011
Сообщений: 11,236
Записей в блоге: 16
31.08.2014, 18:02 6
А как создать ресурс с типом 24, как в этом проекте: https://www.cyberforum.ru/post5769261.html ???
Имеет ли этот способ недостатки по сравнению со способом через патчинг?
0
Модератор
8379 / 3150 / 823
Регистрация: 22.02.2013
Сообщений: 4,627
Записей в блоге: 78
31.08.2014, 19:34 7
Лучший ответ Сообщение было отмечено Dragokas как решение

Решение

Цитата Сообщение от Dragokas Посмотреть сообщение
А как создать ресурс с типом 24, как в этом проекте
Тот ресурс был сделан в другом редакторе.
Для добавления ресурса манифеста нужно тип CUSTOM поменять на "#24".
Цитата Сообщение от Dragokas Посмотреть сообщение
Имеет ли этот способ недостатки по сравнению со способом через патчинг?
Родной лучше, т.к. при каждой компиляции патчинг нужно проводить снова.
1
Эксперт WindowsАвтор FAQ
17600 / 7443 / 884
Регистрация: 25.12.2011
Сообщений: 11,236
Записей в блоге: 16
31.08.2014, 19:41 8
Спасибо, The trick. Работает.
0
Заблокирован
01.09.2014, 18:33 9
Тоже заработало ! ✰
хотелось бы добавить, при импорте манифеста, нужно измененный манифест
сначало сохранить в текстовом формате, (через блокнот можно)
а в поле выбора типа файла поставить .TXT

вот, тут я придумал, как добавлять в контейнер фрейма, динамично созданный
PictureBox, это для того чтоб избежать некоректных отображений кнопки и OptionButton
(странно что не мог найти пример который я уже показывал, наверное ктото снёс)

используется просто
FrameRePaint Me
или FrameRePaint Frame1
но у меня это используется в классе, я использую так..
Visual Basic
1
2
3
4
5
Private Sub Form_Load()
    With New cObj
        .FrameRePaint Me
    End With
End Sub
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
Option Explicit
Dim coFrames As New Collection
 
Private Function CoExists(coll As Collection, ByVal Key$) As Boolean
    On Error Resume Next
    CoExists = Not IsError(coll.Item(Key))
End Function
 
Public Function FrameRePaint(Obj As Object) As Long
    'Добавление пикчура в каждый контейнер фрейма
    'Арг: Obj - форма, или отдельный фрейм
    'возвращает число действий
    
    Const cLabName = "FrameRePaint_Label_"
    Const cPicName = "FrameRePaint_Picture_"
    Dim Item As Object, Child As Object, Pic As Object, Lab As Object
    Dim s$, FLeft&, FTop&, bFrame As Boolean
    FLeft = Screen.TwipsPerPixelX * 3
    On Error Resume Next
    If TypeName(Obj) = "Frame" Then
        Set Item = Obj: Set Obj = Item.Parent: bFrame = True
    End If
    s = cLabName & Obj.hWnd
    If Not CoExists(coFrames, s) Then
        Set Lab = Obj.Controls.Add("VB.Label", s, Obj): Lab.AutoSize = True
        coFrames.Add Lab, s
    Else: Set Lab = coFrames(s)
    End If: If bFrame Then GoSub GoFrame: Exit Function
    For Each Item In Obj
        If TypeName(Item) = "Frame" Then
GoFrame:
            s = cPicName & Obj.hWnd & Item.hWnd
            If Not CoExists(coFrames, s) Then
                Set Pic = Obj.Controls.Add("VB.PictureBox", s, Item): coFrames.Add Pic, s
                With Pic
                    .BorderStyle = 0: .BackColor = Item.BackColor: .Visible = 1
                End With
            Else: Set Pic = coFrames(s)
            End If: Set Lab.Font = Item.Font: Lab.Caption = Item.Caption
            FTop = Lab.Height / 1.2: Pic.BackColor = Item.BackColor
            Pic.Move FLeft, FTop, Item.Width - FLeft * 2, Item.Height - FTop - FLeft
            FrameRePaint = FrameRePaint + 1
            For Each Child In Obj
                If Child.Container.hWnd = Item.hWnd And Child.Name <> Pic.Name Then
                    Set Child.Container = Pic
                    Err.Clear: Child.Move Child.Left - FLeft, Child.Top - FTop
                    If Err.Number = 438 Then
                        With Child
                            .X1 = .X1 - FLeft: .X2 = .X2 - FLeft
                            .Y1 = .Y1 - FTop: .Y2 = .Y2 - FTop
        End With: End If: End If: Next: End If: If bFrame Then Return
    Next
End Function
0
Модератор
8379 / 3150 / 823
Регистрация: 22.02.2013
Сообщений: 4,627
Записей в блоге: 78
01.09.2014, 18:35 10
Цитата Сообщение от Антихакер32 Посмотреть сообщение
сначало сохранить в текстовом формате, (через блокнот можно)
а в поле выбора типа файла поставить .TXT
Этого недостаточно.
XML
1
encoding="UTF-8"
0
Заблокирован
01.09.2014, 21:03 11
Ну не знаю, я вот как сделал..
импортировал текстовый файл в котором код манифеста
но число байт в этого файла должно быть кратно четверке..
(это связанно с выравниванием в самом ресурсе)
можно дописать пробелов столько чтоб совпадало..

инициализируется в программе либо в первой форме, либо в Sub Main
Visual Basic
1
2
3
Option Explicit
Private Declare Sub InitCommonControls Lib "comctl32.dll" ()
Private Sub Form_Initialize(): InitCommonControls: End Sub
после чего нужно скомпилировать и наслаждаться
Windows-темой

Кстати, вместо ресурса, так-же можно прикрутить этот файл
в этой-же папке, имя должно совпадать с EXE-шной программой
например имя проги:..
SuperMario.exe
соответственно, имя с файлом должно быть таким.. SuperMario.exe.manifest

но инициализировать нужно так-же.
Можно вызвать из другой библиотеки
в которой есть эта апишка (InitCommonControls)

Добавлено через 21 минуту
..ладно, если еще появятся идеи выкладывайте..
например что сделать в этом коде который я не понимаю, чтоб не внедрять
пикчурбоксы?
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?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>
Добавлено через 3 минуты
или вот еще, что там такое дописать, чтоб программа инициализировалась
с повышенной привелегией ?

Добавлено через 2 минуты
попадалось такое чтение, что игры с манифестом могут привести даже к BSOD-у (к синему экрану)
.. поосторожнее

Добавлено через 14 минут
Цитата Сообщение от Pro_grammer Посмотреть сообщение
У меня так же стало после всех последних обновлений vb6.
Нужный цвет назначаю числами, вручную.
вот именно по этой причине, я стараюсь ничего не обновлять
кстати, палитра у меня видится нормально

Добавлено через 8 минут
Вот
Кликните здесь для просмотра всего текста




Добавлено через 14 минут
..а пока для прорисовки фрейма, так вызываю
Visual Basic
1
2
3
4
Option Explicit
Private Declare Sub InitCommonControls Lib "comctl32.dll" ()
Private Sub Form_Initialize(): InitCommonControls: End Sub
Private Sub Form_Load(): Choose(1, New cObj).FrameRePaint Me: End Sub
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.09.2014, 21:03

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

сколько будет весить графический файл размером 1024x1024 пикселей, кодированный без сжатия с использованием палитры из 65536 цветов
вопрос, СРОЧНО!!! сколько будет весить графический файл размером 1024x1024 пикселей, кодированный...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.