16+
ComputerPrice
НА ГЛАВНУЮ СТАТЬИ НОВОСТИ О НАС




Яндекс цитирования


Версия для печати

Модуль поиска не установлен.

Delphi решает проблемы с видеокартой

08.07.2003

Георгий Чухин <mipstudio@fromru.com>

Предыстория

Казалось бы, в чем связь между Delphi и видеокартой? Нет, драйверов мы писать не будем, для наглядности возможной проблемы расскажу вам случай из жизни. В один прекрасный день, после установки какой-то низкосортной игрушки на свой ноутбук, эта игра начала злостно издеваться над разрешением экрана. Ладно, всякое бывает, - удалить игру и нет проблем, но не тут-то было: после перезагрузки экран остался черным и загораться не хотел. Проблема была очевидна, ноутбук работал, просто после экстренной перезагрузки осталось то разрешение, которое не было рассчитано на видеокарту настольного помощника. Изменить настройки экрана наощупь было невозможно, спасало только то, что на компьютере стояло две операционных системы, мне надо было восстановить Windows 98, а Windows XP был цел. Напрашивается вопрос: почему бы не использовать Windows XP для продолжения работы, но у меня, как и у любого человека, сложились свои вкусы в работе с компьютером, к тому же в родимом 98-м были автоматизированы все пароли в Интернете и еще множество мелочей, за которые я так полюбил именно эту ось. Из Windows XP я написал программу, которая должна загружаться каждый раз при включении Windows 98, с помощью которой можно вслепую выбрать допустимое разрешение.

Как всегда, справку к некоторым строчкам я выделяю двумя косыми чертами, как это принято в Delphi.

Код программы
unit Unit1;

interface // Стандартная часть любой программы на Delphi

uses
   Windows, Messages, SysUtils, Classes, Graphics, //Объявляем все используемые библиотеки
   Controls, Forms, Dialogs, //
   StdCtrls; //

type
   TForm1 = class(TForm)
     ListBox1: TListBox;

     procedure Create(Sender: TObject);
     procedure Press(Sender: TObject; var Key:
  Char);

   private
     { Private declarations }
     modes:array[0..255] of TDevMode; // Массив значений видеорежимов
   public
     { Public declarations }
   end;

var
   Form1: TForm1;
implementation
{$R *.DFM}

procedure TForm1.Create(Sender: TObject); // Создание формы
var
i:integer;
begin
beep; // Как только программа запустится, звучит сигнал
listbox1.Items.clear; // Значения полей обнуляются
i := 0;
  while EnumDisplaySettings(nil, i, Modes[i]) do
  begin
  Listbox1.items.add(inttostr(Modes[i]. dmBitsPerPel)+' '+ //в поле добавляем
  inttostr(Modes[i].dmPelsWidth)+' '+ // возможные значения
     inttostr(Modes[i].dmPelsHeight)+' '); //настроек экрана width height bits
     inc(i);
     form1.Caption := 'www.mipstudio.ru' //Даем заголовок форме
   end;
end;

procedure TForm1.Press(Sender: TObject; var Key: Char); //при нажатии на любую клавишу
begin //выбранное в программе разрешение
  Modes[ListBox1.ItemIndex].dmfields:= Dm_BITSPERPEL or //устанавливается на рабочий стол
     DM_PELSWIDTH or DM_PELSHEIGHT or
     DM_DISPLAYFLAGS;
ChangeDisplaySettings(Modes[ListBox1. itemindex],cds_UPDATEREGISTRY);
end;
end. //Конец

Ловкость рук, и ничего больше

Теперь программа готова, вся форма состоит всего лишь из одного listbox'а, растянутого на все окно, конечно, можно поэкспериментировать с цветами и кнопками, но, как спасательной программе, ей это не принципиально. Итак, осталось только поставить прогу на автозагрузку, надо просто поместить программу в папку автозагрузки, для Windows 98 это C:\WINDOWS98\All Users\Главное меню\Программы\Автозагрузка для WindowsXP C:\Documents and Settings\All Users\Главное меню\Программы\Автозагрузка. Теперь при загрузке появляется окно программы и оповещает нас о том, что она заработала простым бипом, затем, в случае, если нет возможности изменить разрешение или, допустим, мышь сломалась, нажимаем на клавиатуре клавишу "вниз", а затем "enter". На экране отображены все допустимые разрешения для данного монитора и видеокарты, и располагаются они от самого маленького к самому большому, следовательно, чем больше вы нажмете "вниз", тем выше будет разрешение после нажатия "enter".

Эпилог

Подобная программа у меня стоит на всех операционных системах, к тому же, ей гораздо легче изменять разрешение и не в экстренных случаях. Ведь в любом случае лучше заранее подготовиться к неприятности и быть во всеоружии, чем бессильно поддаться и переустановить Windows. Программа была проверена под всеми версиями Delphi и рабтала отлично. Создавая очередную программу своими руками, задайте себе вопрос: а чем хуже ваша прога, чем то же самое, но сделанное именитым разработчиком, то, за что вы платите деньги, хотя могли бы сделать это сами. Я давно стал собирать коллекцию !своих! программ и полностью заменил ими их аналоги от других разработчиков, так, например, блокнот, медиаплейер, программа, рисующая графики, калькулятор, графический редактор и многие другие. Надеюсь, что и вы начнете подобную коллекцию, а показанная выше программа станет в ней первым экспонатом.



статьи
статьи
 / 
новости
новости
 / 
контакты
контакты