Страница: 1 |
Страница: 1 |
Вопрос: Срочно нужна помощь, темы Винды.
Добавлено: 18.10.05 09:47
Автор вопроса: astoro | ICQ: 649109
Как узнать,
работает винда в классическом стиле оформления,
или в стиле ХР?
Ответы
Всего ответов: 12
Номер ответа: 1
Автор ответа:
astoro
ICQ: 649109
Вопросов: 31
Ответов: 391
Профиль | | #1
Добавлено: 18.10.05 09:48
Прошу прощения, узнать естественно, нужно на VB версии 6.0
Номер ответа: 2
Автор ответа:
«UL.eXe»
ICQ: 197.895.916.247
Вопросов: 72
Ответов: 540
Профиль | | #2
Добавлено: 18.10.05 11:13
В папке Resources, ессесно дир. Винды размещены темы (*.Theme), проще всего наверное будет проверить все файлы этой директории и узнать какой Theme файл используется!...
==
Ведь винда использует только один из этих файлов как тему оформления.
Номер ответа: 3
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #3
Добавлено: 18.10.05 12:25
Очень хотелось бы увидеть пример.
А как узнать, какая раскладка клавиатуры в винде?
Точно так же, никак. Потому что раскладка клавиатуры у каждого потока в винде своя.
И включенность визуальных стилей у каждого приложения тоже своя.
А для определения применимости стилей к своему собственному приложению используется IsAppThemed.
Номер ответа: 4
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #4
Добавлено: 18.10.05 12:52
может достаточно проверить запущина ли служба "Themes", если да, то XP в "XP-стиле", иначе - классический.
Номер ответа: 5
Автор ответа:
«UL.eXe»
ICQ: 197.895.916.247
Вопросов: 72
Ответов: 540
Профиль | | #5
Добавлено: 18.10.05 12:57
Точно так же, никак
)))
 ByVal HKL As Long, _
ByVal Flags As Long) As Long
Declare Function LoadKeyboardLayout Lib "user32" _
Alias "LoadKeyboardLayoutA" _
 ByVal pwszKLID As String, _
ByVal Flags As Long) As Long
Const KbdRu = "00000419"
Const KbdEn = "00000409"
И еще ее можно переключить
Dim hLayout As Long
hLayout = LoadKeyboardLayout(KbdRu, 0)
ActivateKeyboardLayout hLayout, 0
End Sub
Sub SwitchToEn()
Dim hLayout As Long
hLayout = LoadKeyboardLayout(KbdEn, 0)
ActivateKeyboardLayout hLayout, 0
End Sub
или я не так тебя понял?
Номер ответа: 6
Автор ответа:
Sur
ICQ: 1249088
Вопросов: 10
Ответов: 304
Web-сайт:
Профиль | | #6
Добавлено: 18.10.05 13:36
до кучи к IsAppThemed есть еще IsThemeActive.
А примерно, если установки виндов по-умолчанию, можно померить высоту заголовка окна - в XP стиле больше.
Номер ответа: 7
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #7
Добавлено: 18.10.05 13:46
Не вижу поводов к веселью.
В самом деле? Удивительно. Я каждый день узнаю что-то новое.
Да, и если ты прочитаешь сказанное мною немного внимательнее, ты увидишь, что раскладки в винде не существует по причине того, что она у каждого потока своя.
Была когда-то общая в win95, но это было давно.
Номер ответа: 8
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #8
Добавлено: 18.10.05 13:47
А если я этот параметр вручную изменю пикселей на 400?
Номер ответа: 9
Автор ответа:
User Unknown
Вечный Юзер!
ICQ: uu@jabber.cz
Вопросов: 120
Ответов: 3302
Профиль | | #9
Добавлено: 18.10.05 14:05
Тем не менее тот же Punto Switcher её (раскладку) определяет нормально...
По поводу темы - бред конечно. Нельзя ориентироваться только на дефолтные настройки из коробки.
Номер ответа: 10
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #10
Добавлено: 18.10.05 17:40
Включенность службы Themes не означает, что тема применена. Узнать тему определенного окна можно, используя функцию GetWindowTheme
Номер ответа: 11
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #11
Добавлено: 18.10.05 20:52
ещё наверника должно быть что-то в реестре, я не искал, но должно ж оно где-то запоминать...
По поводу раскладки, Punto Switcher определяет раскладку для активного окна, это объясняет то что иногда раскладка типа сама переключается, на самом деле само ничего небывает, просто у другого окна в данный момент стоит другая раскладка.
Когда мне нужно было определить раскладку, я брал активное окно и определял для него.
Вот функция котороя можно явно задать окно для которого следует возвратить раскладку.
Private Function GetLanguageInfo(ByVal hwnd As Long) As String
'Возвращает раскладку в указаном окне по hWnd
Dim sReturn As String, nRet As Long
Dim pID As Long, tId As Long, LCID As Long
tId = GetWindowThreadProcessId(hwnd, pID)
LCID = LoWord(GetKeyboardLayout(tId))
sReturn = String$(128, 0)
nRet = GetLocaleInfo(LCID, LOCALE_SENGLANGUAGE, sReturn, Len(sReturn))
If nRet > 0 Then GetLanguageInfo = Left$(sReturn, nRet - 1)
End Function
Надеюсь, API найдёте сами
Номер ответа: 12
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #12
Добавлено: 18.10.05 20:54
А, и ещё
If DWORD And &H8000& Then
LoWord = &H8000 Or (DWORD And &H7FFF&
Else
LoWord = DWORD And &HFFFF&
End If
End Function