Страница: 1 |
Попробуй следующее: Public Type OSVERSIONINFO OSV.dwOSVersionInfoSize = Len(OSV) GetVersionEx OSV Далее тебе нужно следующее OSV.dwPlatformId - здесь и записан код типа ОС 1-Win9x&ME 2-WinNT Но ведь есть еще встроенная в VB6 функция! Environ(11) или Environ("OS") WinXP в режиме совместимости надувает обе эти функции. Попробуй читать из реестра (HKLM\Software\Microsoft\Windows\CurrentVersion), либо можно это сделать на асме взяв стартовое значение регистра cs, если не ошибаюсь. Кроме всего прочего, насколько я помню, у WinNT хандлы процессов идут положительные, а у Win9x - отрицательные. Ты ,Sharp, уж извини, но на моей памяти ты уже второй раз с этим асмом! НЕ ВСЕ ЕГО ЗНАЮТ! Дык учи. Без знания асма - программист не программист Private Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" (lpVersionInformation As OSVERSIONINFO) As Long Private Type OSVERSIONINFO dwOSVersionInfoSize As Long dwMajorVersion As Long dwMinorVersion As Long dwBuildNumber As Long dwPlatformId As Long szCSDVersion As String * 128 End Type 'Windows version constants Private Const WIN_VER_MAJ_9XNT4 = 4 'Windows 95/98/ME/NT4 Private Const WIN_VER_MAJ_NT3 = 3 'Windows NT3 Private Const WIN_VER_MAJ_2KXP = 5 'Windows NT5 Private Const WIN_VER_MIN_95 = 0 'Win95 minor Private Const WIN_VER_MIN_98 = 10 'Win98 minor Private Const WIN_VER_MIN_ME = 90 'WinME minor Private Const WIN_VER_MIN_NT3 = 51 'WinNT3.51 minor Private Const WIN_VER_MIN_NT4 = 0 'WinNT4 minor Private Const WIN_VER_MIN_2K = 0 'Win2k minor Private Const WIN_VER_MIN_XP = 1 'WinXP(Whistler) minor 'Platform ID Private Const VER_PLATFORM_WIN32s = 0 'Win32s Private Const VER_PLATFORM_WIN32_WINDOWS = 1 'Windows 9x Private Const VER_PLATFORM_WIN32_NT = 2 'Windows NT Private Sub Get_OperatingSystem() Dim StrTemp As String Dim StrSP As String Dim osInfo As OSVERSIONINFO Dim lngL As Long On Error GoTo ErrorHandler strSysInfo = strSysInfo '& "" 'Preset the size of the structure osInfo.dwOSVersionInfoSize = Len(osInfo) lngL = GetVersionEx(osInfo) If lngL <> 0 Then Select Case osInfo.dwMajorVersion Case WIN_VER_MAJ_9XNT4 If osInfo.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS Then 'Windows 9x Kernel, figure out which edition If osInfo.dwMinorVersion = WIN_VER_MIN_95 Then StrTemp = "Windows 95 " ElseIf osInfo.dwMinorVersion = WIN_VER_MIN_98 Then StrTemp = "Windows 98 " ElseIf osInfo.dwMinorVersion = WIN_VER_MIN_ME Then StrTemp = "Windows ME " Else StrTemp = "Unknown Microsoft Windows 9x system " End If Else 'NT4 kernel If osInfo.dwMinorVersion = WIN_VER_MIN_NT4 Then StrTemp = "Windows NT 4 " Else StrTemp = "Unknown NT 4-based version " End If End If Case WIN_VER_MAJ_NT3 StrTemp = "Windows NT 3." & osInfo.dwMinorVersion & " " Case WIN_VER_MAJ_2KXP If osInfo.dwMinorVersion = WIN_VER_MIN_2K Then StrTemp = "Windows 2000 " ElseIf osInfo.dwMinorVersion = WIN_VER_MIN_XP Then StrTemp = "Windows XP " Else StrTemp = "Unknown Windows NT 5 system " End If Case Else StrTemp = "Unknown Windows system" End Select 'Get service pack level information StrSP = " " & StripTerm(osInfo.szCSDVersion) StrTemp = StrTemp & StrSP & vbCrLf 'strip the rest of the buffer 'get only the actual data StrTemp = StrTemp & " " & CStr(osInfo.dwMajorVersion) & "." & Format(CStr(osInfo.dwMinorVersion), "00") & "." & CStr(osInfo.dwBuildNumber) & vbCrLf Else StrTemp = "Unable to get version information. GetVersionEx returned " & lngL & vbCrLf End If 'Сообщение об Операционной системе и версии strSysInfo = strSysInfo & StrTemp Exit Sub ErrorHandler: strSysInfo = strSysInfo & "Error Get_OperatingSystem" & vbCrLf End Sub Professional или Home? Какую ось ставил для совместимости? 2lostdragon2000: не нравится мне твой код Нехороший он какой-то... У меня Professional Слушай! на теме ActiveX DLL я сказал, что нельзя без АПИ в VB6 менять обой Я был не прав? Любопытно... Я тоже проверял на WinXP Pro А с чем был режим совместимости? Можно и без API (по крайней мере в 98) - обои прописаны, кажется, в system.ini Я откомпилировал ЕХЕ с тремя строчками Private sub Command1_Click() msgbox Environ("os") end sub А потом запустил этот ЕХЕ со всеми видами совместимости (Win95,Win98/ME,Win2000,Win NT 4 ) Проверять ломает, поверим на слово Страница: 1 |
Вопрос: как определить програмно тип windows ?
Добавлено: 21.03.04 00:20
Автор вопроса: MasterYan | Web-сайт:
как определить програмно тип windows ?
Ответы
Всего ответов: 12
Номер ответа: 1
Автор ответа:
Alex(S)
Вопросов: 8
Ответов: 31
Web-сайт:
Профиль | | #1
Добавлено: 21.03.04 01:08
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128
End Type
Public Declare Function GetVersionEx Lib "Kernel32" Alias "GetVersionExA" (ByRef lpVersionInformation As OSVERSIONINFO) As Long
Номер ответа: 2
Автор ответа:
dNW
Вопросов: 30
Ответов: 683
Профиль | | #2
Добавлено: 21.03.04 11:07
Номер ответа: 3
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #3
Добавлено: 21.03.04 19:51
Номер ответа: 4
Автор ответа:
dNW
Вопросов: 30
Ответов: 683
Профиль | | #4
Добавлено: 22.03.04 15:52
Номер ответа: 5
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #5
Добавлено: 22.03.04 17:34
Номер ответа: 6
Автор ответа:
lostdragon2000
Вопросов: 4
Ответов: 7
Web-сайт:
Профиль | | #6
Добавлено: 25.03.04 08:12
Номер ответа: 7
Автор ответа:
dNW
Вопросов: 30
Ответов: 683
Профиль | | #7
Добавлено: 26.03.04 16:00
То Sharp: Ни фига! мой ХР не врет функцие Environ в режиме совместимости! Всегда Win_NT!
Номер ответа: 8
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #8
Добавлено: 27.03.04 21:05
Номер ответа: 9
Автор ответа:
dNW
Вопросов: 30
Ответов: 683
Профиль | | #9
Добавлено: 28.03.04 09:02
Номер ответа: 10
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #10
Добавлено: 28.03.04 10:57
Номер ответа: 11
Автор ответа:
dNW
Вопросов: 30
Ответов: 683
Профиль | | #11
Добавлено: 28.03.04 11:49
Номер ответа: 12
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #12
Добавлено: 28.03.04 18:57