У меня есть проект для отображения версии Windows с типом строки издания с Windows 95 на «Windows 8» с использованием Delphi XE2. Во-первых, я попробовал функцию «TOSVersion». Но проблема в том: „Тогда я ahve попробовал„Версия для Windows с выпуском
procedure TMainForm.BitBtn01Click(Sender: TObject);
var
VersionNameOfOperatingSystem : String;
begin
VersionNameOfOperatingSystem := TOSVersion.Name;
Edit01.Text := VersionNameOfOperatingSystem;
end
показывает только «Windows» в Windows 8 окружающей среды»и еще одна проблема в том, что Ii не может обнаружить“ Windows Edition, функция GetProductInfo“Но здесь другая проблема :
function GetProductInfo(dwOSMajorVersion, dwOSMinorVersion, dwSpMajorVersion,
dwSpMinorVersion: DWORD; pdwReturnedProductType: PDWORD): BOOL stdcall;
external kernel32;
procedure TMainForm.BitBtn01Click(Sender: TObject);
var
rpt: cardinal;
begin
if GetProductInfo(6, 0, 0, 0, @rpt) then Edit02.Text :=IntToStr(rpt);
end
и
function GetProductInfo(dwOSMajorVersion, dwOSMinorVersion, dwSpMajorVersion,
dwSpMinorVersion: DWORD; pdwReturnedProductType: PDWORD): BOOL stdcall;
external kernel32;
procedure TMainForm.BitBtn01Click(Sender: TObject);
var
rpt: cardinal;
begin
if GetProductInfo(6, 1, 0, 0, @rpt) then Edit02.Text :=IntToStr(rpt);
end
и
function GetProductInfo(dwOSMajorVersion, dwOSMinorVersion, dwSpMajorVersion,
dwSpMinorVersion: DWORD; pdwReturnedProductType: PDWORD): BOOL stdcall;
external kernel32;
procedure TMainForm.BitBtn01Click(Sender: TObject);
var
rpt: cardinal;
begin
if GetProductInfo(6, 2, 0, 0, @rpt) then Edit02.Text :=IntToStr(rpt);
end
и
function GetProductInfo(dwOSMajorVersion, dwOSMinorVersion, dwSpMajorVersion,
dwSpMinorVersion: DWORD; pdwReturnedProductType: PDWORD): BOOL stdcall;
external kernel32;
procedure TMainForm.BitBtn01Click(Sender: TObject);
var
rpt: cardinal;
begin
if GetProductInfo(6, 2, 2, 2, @rpt) then Edit02.Text :=IntToStr(rpt);
end
производит тот же результат, если я бегу скомпилированный исполняемый файл в Windows Vista Enterprise SP2 и то же самое не может быть использована более ранней версии Windows. Если я называю «TOSVersion» следующим
begin
TOSVersion.Platform of
pfWindows :
begin
.
.
.
.
end
else
beging
.
.
.
end
end;
и вызов «GetProductInfo», то я получаю «Ошибка» Показательно, что оба не могут назвать одновременно в нуль. Наконец-то я попробовал «Структура OSVERSIONINFO», чтобы определить, является ли это «Сервер» или нет, и «Функция GetVersionEx» для «Тип Windows XP Edition». Я совершенно смущен, как начать программирование. На этом форуме так много опытных кодеров. Любой может записать полную программу. Я googled, но все доступные программы до «Windows 7» не обновляются. И один доступный на этом форуме также относится к «Windows 7» и не обновляется. Пожалуйста, не говорите: «Мы не можем сидеть на вашей клавиатуре и вводить код для вас». Пожалуйста, помогите мне.
Вы просите нас написать полную программу для решения вашей конкретной проблемы. Это само определение слишком локализованного вопроса. Вся информация содержится в других ваших недавних вопросах. –
Снова я пробовал код Кена, и я получаю ошибку как «[Предупреждение DCC] Unit1.pas (148): W1036 Переменная 'dwOSMajorVersion', возможно, не была инициализирована« »[Предупреждение DCC] Unit1.pas (148): W1036 Переменная 'dwOSMinorVersion', возможно, не была инициализирована " " [Предупреждение DCC] Unit1.pas (148): W1036 Переменная 'dwSpMajorVersion', возможно, не была инициализирована " " [Предупреждение DCC] Unit1.pas (148): W1036 Variable ' dwSpMinorVersion ', возможно, не было инициализировано ". Но я также не могу показать строку «Результат» и «tmpStr». Если я определяю «Edit1.Text: = Result» и Edit2.Text: = tmpStr; дает ошибку. –
ОК, я попытался скомпилировать код Кена, он не компилируется, он плохой. Вот версия, которая компилируется. Я не тестировал его полностью: http://pastebin.com/RZd1Ag4u –