![]() |
|
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]()
|
|
| PRF |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 135 Регистрация: 13.10.2007 Репутация: нет Всего: нет |
Здравствуйте!! У меня такой вопрос : "Как можно определить Service pack в windows??", для определения самой windows есть структура TOsVersionInfo, в справке нашел что существует идентичная структура + несколько полей структуры для определения Service Pack, структура имеет схожее имя TOsVersionInfoEX, но при объявлении переменной типа этой структуры(TOsVersionInfoEX) делфи пишет, что не существует такой, хотя в справке она есть и метод GetVersionEX. В делфи есть только TOsVersionInfo, TOsVersionInfoA, TOsVersionInfoW.
Подскажите какую структуру использовать, а точнее почему в справке есть, а на деле нет, мне не нужен сам код, просто не могу объявить переменную!!! Заранее спасибо!! Делфи 2007!! |
|||
|
||||
| Alix |
|
|||
|
L45 ![]() ![]() Профиль Группа: Участник Сообщений: 581 Регистрация: 4.5.2005 Где: Pskov/Spb Репутация: 3 Всего: 23 |
Не знаю как в 2007, а в 7 дельфе я не нашел описания расширенной структуры. Однако, никто не мешает написать ее самому, вот так она описана в MSDN:
-------------------- Знание только тогда знание, когда оно приобретено усилиями своей мысли, а не памятью (с) Л. Толстой High tech. Low live. (с) Gardner Dozois |
|||
|
||||
| PRF |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 135 Регистрация: 13.10.2007 Репутация: нет Всего: нет |
расширенную структуру я имел ввиду эту - а работать поля этой структуры будут соответствующим образом, как написано в MSDN??
Это сообщение отредактировал(а) PRF - 19.3.2008, 22:48 |
|||
|
||||
| Alix |
|
|||
|
L45 ![]() ![]() Профиль Группа: Участник Сообщений: 581 Регистрация: 4.5.2005 Где: Pskov/Spb Репутация: 3 Всего: 23 |
Когда ты передаешь эту структуру GetVersionEx, то она смотрит на значение ее поля dwOSVersionInfoSize и в зависимости от значения понимает, что перед ней - OSVERSIONINFOEX или просто OSVERSIONINFO. Поэтому перед вызовом нужно будет присвоить этому полю значение sizeof(TOSVersionInfoEx).
-------------------- Знание только тогда знание, когда оно приобретено усилиями своей мысли, а не памятью (с) Л. Толстой High tech. Low live. (с) Gardner Dozois |
|||
|
||||
| PRF |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 135 Регистрация: 13.10.2007 Репутация: нет Всего: нет |
Спасибо, попробую!!
|
|||
|
||||
| PRF |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 135 Регистрация: 13.10.2007 Репутация: нет Всего: нет |
Ребята чего то не получается, я написал эту структуру, вот код
что я не так делаю??? |
|||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 7 Всего: 158 |
|
|||
|
||||
| PRF |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 135 Регистрация: 13.10.2007 Репутация: нет Всего: нет |
А что вы скажете на изменение исходного подключаемого модуля WIndows.pas в котором находиться функция OsVErsionInfo, я просто к этой функции добавил недостающие поля(последнии поля для опредления сервис пака), и потом объявил переменную OsVersionInfo, все заработало!! можно так сделать??
|
|||
|
||||
| Alix |
|
|||
|
L45 ![]() ![]() Профиль Группа: Участник Сообщений: 581 Регистрация: 4.5.2005 Где: Pskov/Spb Репутация: 3 Всего: 23 |
это не верно, должно быть [0..127] или [1..128] ну и плюс то, что dumb написал. Добавлено через 1 минуту и 33 секунды сделать так можно, но не стоит менять исходники стандартных модулей, потому что тогда нет гарантий, что твоя программа хотя бы скомпилируется на другом компьютере, так что описывай структуру сам в своей программе. Добавлено через 5 минут и 41 секунду и еще лучше использовать тогда AnsiChar, если описывается OSVERSIONINFOA и WideChar, если OSVERSIONINFOW. По-умолчанию TOSVersionInfo = TOSVersionInfoA -------------------- Знание только тогда знание, когда оно приобретено усилиями своей мысли, а не памятью (с) Л. Толстой High tech. Low live. (с) Gardner Dozois |
|||
|
||||
| PRF |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 135 Регистрация: 13.10.2007 Репутация: нет Всего: нет |
если писать как dumb то выводит такую ошибку:
types of actual and formal var parameters much be identical |
|||
|
||||
| Alix |
|
|||
|
L45 ![]() ![]() Профиль Группа: Участник Сообщений: 581 Регистрация: 4.5.2005 Где: Pskov/Spb Репутация: 3 Всего: 23 |
ясно... в общем вот рабочий кусок кода:
-------------------- Знание только тогда знание, когда оно приобретено усилиями своей мысли, а не памятью (с) Л. Толстой High tech. Low live. (с) Gardner Dozois |
|||
|
||||
| Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 10 Всего: 133 |
Хм.
А что у нас тут: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\CSDVersion ? -------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
| PRF |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 135 Регистрация: 13.10.2007 Репутация: нет Всего: нет |
Poseidon спасибо, всем спасибо!! Кстати никто не может дать ссылку на подробную информацию о реестре, что где храниться, только чтобы подробно было!!
|
|||
|
||||
![]()
|
| Правила форума "Delphi: WinAPI и системное программирование" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |