Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 |

 

  Вопрос: Вопросы, вопросы, вопросы... Добавлено: 25.01.06 16:48  

Автор вопроса:  Tamplier | ICQ: 298742928 
Недавно бил вопрос: как определить цветовую схему? Но он был неправильно сформулирован. Как определить, какой стиль сейчас включен? Допустим, классический или стандартный синий, или серебрянный?

Как определить часовой пояс, который сейчас выбран? Пробова через GetTimezoneInfo, но там ничего не понятно.

Можно ли по времени создания файла определить отношение версий? Допустим, мне надо программным путем выяснить версию comctl32.dll, как определить версию продукта (не файла!!!) я не нашел, но мне пришла в голову идея: а что если сравнить время создания библиотеки? Если оно меньше определенного, то соответственно считать версию меньше... Можно так? И какие еще варианты?

Вопрос по смене цвета меню все еще остается в силе. Кто знает Shark'a - просьба сообщить, потому что у он писал библиотеку Form_Action, в которой есть эта функция, а вся библиотека мне не нужна, только эта функция.

Ответить

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

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



Вопросов: 0
Ответов: 1876


 Профиль | | #1 Добавлено: 25.01.06 17:32
Как определить, какой стиль сейчас включен? Допустим, классический или стандартный синий, или серебрянный?

Их гораздо больше - каждый будешь определять?
IsAppThemed() посмотри, единственное что могу сказать.

Как определить часовой пояс, который сейчас выбран? Пробова через GetTimezoneInfo, но там ничего не понятно.

Что именно непонятно? Простейшая функция.
Option Explicit

Private Declare Function GetTimeZoneInformation Lib "kernel32.dll" (ByRef lpTimeZoneInformation As TIME_ZONE_INFORMATION) As Long

Private Type SYSTEMTIME
  wYear As Integer
  wMonth As Integer
  wDayOfWeek As Integer
  wDay As Integer
  wHour As Integer
  wMinute As Integer
  wSecond As Integer
  wMilliseconds As Integer
End Type

Private Type TIME_ZONE_INFORMATION
  Bias As Long
  StandardName(32 * 2) As Byte
  StandardDate As SYSTEMTIME
  StandardBias As Long
  ;DaylightName(32 * 2) As Byte
  ;DaylightDate As SYSTEMTIME
  ;DaylightBias As Long
End Type

Private Sub Form_Load()
  Dim t As TIME_ZONE_INFORMATION
  
  GetTimeZoneInformation t
  
  MsgBox StrConv(StrConv(t.StandardName, vbUnicode), vbFromUnicode)
End Sub


Если оно меньше определенного, то соответственно считать версию меньше... Можно так? И какие еще варианты?

Можно долго постигать всю отстойность этого способа, но так и не постичь - уж слишком она велика.

Ответить

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



Вопросов: 24
Ответов: 332
 Профиль | | #2 Добавлено: 25.01.06 21:37
Посмотри примерчик, как на меня, ОЧЕНЬ полезный http://www.mentalis.org/php/redirect/redirect.php?action=download&id=371

Ответить

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


 

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

Вопросов: 236
Ответов: 8362
 Профиль | | #3 Добавлено: 25.01.06 21:40
копать, копать, и ещё раз копать реестр! Про версию библиотеки я не
совсем понял, версию чего (как не файлы) ты хочешь получить с этого
файла? Версию продукта в котором библиотека является составной?

Ответить

Номер ответа: 4
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #4
Добавлено: 26.01.06 09:33
как определить версию продукта (не файла!!!)

Многие компиляторы зашивают в exe (иногда в dll) стандартную структуру VERSIONINFO, там можно почерпнуть и о производителе и о версии файла, и о версии продукта. Если, конечно, производитель сам пожелал там сообщить эти сведения. Копать в сторону работы с ресурсами чужих приложений.

Ответить

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



ICQ: 284036855 

Вопросов: 35
Ответов: 155
 Web-сайт: www.ma26.ru
 Профиль | | #5
Добавлено: 26.01.06 22:49
Что то я не пойму какую библиотеку я писал

Ответить

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



ICQ: 298742928 

Вопросов: 58
Ответов: 340
 Профиль | | #6 Добавлено: 27.01.06 15:51
Shark, возожно, есть еще один такой. Эти библиотеки я взял с этого сайта. DllCollection.

Многие компиляторы зашивают в exe (иногда в dll) стандартную структуру VERSIONINFO...

Втом-то и вся фигня, что объявить ссылку на comctl32.dll я не могу! :(

Можно долго постигать всю отстойность этого способа, но так и не постичь - уж слишком она велика.

Другие варианты?

Про версию библиотеки я не
совсем понял, версию чего (как не файлы) ты хочешь получить с этого
файла? Версию продукта в котором библиотека является составной?

Если на comctl32.dll, как и на некоторых других библиотеках сделать правый клик, в свойствах во вкладке "Версия" есть два пункта, кроме прочих: "версия файла" и "версия продукта". Меня итересует версия продукта. Версию файла определить - не проблема.

Что именно непонятно? Простейшая функция.

непонятно, откуда, собственно брать информацию о том, сколько часов и куда данный часовой пояс от Гринвича

Ответить

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



Вопросов: 0
Ответов: 1876


 Профиль | | #7 Добавлено: 27.01.06 16:51
Втом-то и вся фигня, что объявить ссылку на comctl32.dll я не могу! :(

Зачем она тебе объяснил бы ещё...

Другие варианты?

Читать мануал чаще. Во избежание вопросов, сверхподробно освещённых в нём.
Option Explicit

Private Declare Function GetFileVersionInfo Lib "version.dll" Alias "GetFileVersionInfoA" (ByVal lptstrFilename As String, ByVal dwHandle As Long, ByVal dwLen As Long, ByRef lpData As Any) As Long
Private Declare Function GetFileVersionInfoSize Lib "version.dll" Alias "GetFileVersionInfoSizeA" (ByVal lptstrFilename As String, ByRef lpdwHandle As Long) As Long
Private Declare Function VerQueryValue Lib "version.dll" Alias "VerQueryValueA" (ByRef pBlock As Any, ByVal lpSubBlock As String, ByRef lplpBuffer As Long, ByRef puLen As Long) As Long
Private Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (ByRef Destination As Any, ByRef Source As Any, ByVal Length As Long)

Private Type VS_FIXEDFILEINFO
  dwSignature As Long
  dwStrucVersion As Long ' e.g. 0x00000042 = "0.42"
  dwFileVersionMS As Long ' e.g. 0x00030075 = "3.75"
  dwFileVersionLS As Long ' e.g. 0x00000031 = "0.31"
  dwProductVersionMS As Long ' e.g. 0x00030010 = "3.10"
  dwProductVersionLS As Long ' e.g. 0x00000031 = "0.31"
  dwFileFlagsMask As Long ' = 0x3F for version "0.42"
  dwFileFlags As Long ' e.g. VFF_DEBUG Or VFF_PRERELEASE
  dwFileOS As Long ' e.g. VOS_DOS_WINDOWS16
  dwFileType As Long ' e.g. VFT_DRIVER
  dwFileSubtype As Long ' e.g. VFT2_DRV_KEYBOARD
  dwFileDateMS As Long ' e.g. 0
  dwFileDateLS As Long ' e.g. 0
End Type

Private Sub Form_Load()
  Dim b() As Byte, t As Long, s As Long, v As VS_FIXEDFILEINFO
  
  ReDim b(1 To GetFileVersionInfoSize("comctl32.dll", 0))
  GetFileVersionInfo "comctl32.dll", 0, UBound(b) - LBound(b) + 1, b(LBound(b))
  
  VerQueryValue b(LBound(b)), "\", t, s
  CopyMemory v, ByVal t, Len(v)
  
  MsgBox Hex$(v.dwFileVersionMS)
End Sub


непонятно, откуда, собственно брать информацию о том, сколько часов и куда данный часовой пояс от Гринвича

Как правило, после чтения мануалов такие вопросы пропадают.
Первый член структуры, называемый bias, содержит разницу от UTC в минутах. Для меня это минус 660.

Ответить

Номер ответа: 8
Автор ответа:
 Tamplier



ICQ: 298742928 

Вопросов: 58
Ответов: 340
 Профиль | | #8 Добавлено: 28.01.06 13:30
Спасибо. Испытаю - скажу, оно или нет.

А где эти мануалы брать-то? В мсдн? Я в инет попадаю не так часто, а рабираться во всем времени не очень-то есть.

Ответить

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



Вопросов: 0
Ответов: 1876


 Профиль | | #9 Добавлено: 28.01.06 14:31
Открыл msdn. Сохранил страницы. Потом читаешь.

Пошёл в ларёк. Купил msdn. Читаешь постоянно.

Ответить

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


 

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

Вопросов: 236
Ответов: 8362
 Профиль | | #10 Добавлено: 29.01.06 01:28
Пошёл в ларёк. Купил msdn и пиво. Читаешь постоянно, под пиво....

Ответить

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



ICQ: 298742928 

Вопросов: 58
Ответов: 340
 Профиль | | #11 Добавлено: 29.01.06 15:11
Прикалисты нафик :)

Ответить

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



Вопросов: 60
Ответов: 808
 Профиль | | #12 Добавлено: 03.02.06 18:40
GetSysColor а потом анализ результата в Select Case

Ответить

Номер ответа: 13
Автор ответа:
 GSerg



Вопросов: 0
Ответов: 1876


 Профиль | | #13 Добавлено: 04.02.06 05:22
Более дурацкий способ трудно представить.

Ответить

Страница: 1 |

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



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