V
Vyacheslavovich
На разных платформах при попытке получить версию платформы выдаёт ошибку: Попытка чтения или записи в защищённую память.... Может кто-нить глянет, где ошибка?? И как функция GetVersionEx работает в Windows 7 x64???
Код:
Public Class Form1
Public Structure OSVERSIONINFO
Dim dwPlatformId As Integer
End Structure
Declare Function GetVersionEx Lib "kernel32.dll" Alias "GetVersionExA" (ByVal lpVersionInformation As OSVERSIONINFO) As Integer
Declare Function GetWindowsDirectory Lib "kernel32.dll" Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, ByRef nSize As Integer) As Integer
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim windir As String ' получаем путь папки Windows
Dim slength As Integer ' получаем длину возвращаемой строки
windir = Space(255) ' отводим место для получения строки в буфере
slength = GetWindowsDirectory(windir, 255) ' узнаем путь папки
windir = (windir) ' получаем имя из буфера
TextBox1.Text = "Корневой каталог: " + windir
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim OS As OSVERSIONINFO
Dim strName As String = ""
GetVersionEx(OS)
Select Case OS.dwPlatformId
Case 0
strName = "Windows 32s "
Case 1
strName = "Windows 95/98"
Case 2
strName = "Windows NT"
End Select
TextBox2.Text = "Платформа: " + strName
End Sub
End Class