Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 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
В папке Resources, ессесно дир. Винды размещены темы (*.Theme), проще всего наверное будет проверить все файлы этой директории и узнать какой Theme файл используется!...

Очень хотелось бы увидеть пример.


Как узнать,

А как узнать, какая раскладка клавиатуры в винде?
Точно так же, никак. Потому что раскладка клавиатуры у каждого потока в винде своя.
И включенность визуальных стилей у каждого приложения тоже своя.
А для определения применимости стилей к своему собственному приложению используется 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
А как узнать, какая раскладка клавиатуры в винде?
Точно так же, никак


:))))

Declare Function ActivateKeyboardLayout Lib "user32" _
    ;(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"


И еще ее можно переключить :)

Sub SwitchToRu()
    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-сайт: sur.hotbox.ru/
 Профиль | | #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
А примерно, если установки виндов по-умолчанию, можно померить высоту заголовка окна - в XP стиле больше.

А если я этот параметр вручную изменю пикселей на 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-сайт: sharpc.livejournal.com
 Профиль | | #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
А, и ещё

Private Function LoWord(DWORD As Long) As Integer
If DWORD And &H8000& Then
LoWord = &H8000 Or (DWORD And &H7FFF&;)
Else
LoWord = DWORD And &HFFFF&
End If
End Function

Ответить

Страница: 1 |

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



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