А диск-то дефрагментируется, пройдемте...

У тебя как и у меня много "хороших" друзей, и наверняка среди этих "хороших" друзей найдется парочка таких, которые зайдя отдать книгу по сборке компьютеров Нижне-Урипенского происхождения, не применно заглянут в комнату, где стоит твой вечнолюбимый комп (той же сборки :)), а там как раз ты гамишься по сетке в КС или Кваку, ну и естественно твой дружбан бросает или забывает все и присаживается на диван (хорошо на диван, а не за комп) для того, чтобы "посмотреть" как ты играешь, иногда такие присядки затягиваются на 3-5 часов. И это надоедает. Так что же делать? Сделать серьезный вид и запустить на дефрагментацию или проверку поверхности твой 40 гегтарный винч - не выход, а отстой. Но окно Дефрагментатора срабатывает стопроцентно, а это можно использовать в своих интересах.

Надеюсь вводная часть убедила или напомнила, что пора сворганить форму с очень серьезным видом, но ничего не делающую. Она должна быть похожа на форму дефрагментатора диска без открытых Сведений. Да вот так:

Как видишь форма простая, но внушительная, а особенно, когда выполнено процентов 30-40. Ну довольно втуплений, открывай C++, у тебя автоматически создастся новый проект, поправь размеры формы, помести на нее 3 кнопаря(Button) с закладки стандартных компанентов(Standart), две метки(Label) от туда же и индикатор выполнения (ProgressBar) с закладки Win32, а потом размести компаненты на форме так, чтобы это стало похоже на рисунок сверху. Теперь займемся надписями, щелкни на кнопке с надписью "Button1", теперь в объектном инспекторе найди свойство "Caption", оно определяет надпись на кнопке, первоначально соответствует имени объекта, писать можно и на русском языке, измени ее на "Стоп", проделай ту же операцию с остальными кнопками так, чтобы надпись на Button2 сменилась на "&Пауза", а на Button3 сменилась на "С&ведения" (не обращай внимания на рисунок, я тоже иногда ошибаюсь), знак & означает, что следующий за ним знак будет подчеркнутым, да не забудь сменить значение Enabled (разрешен) с true (воистину) на false (вранье) - это значение отвечает за работу компанента, в данном случае Button'а, если значение true, то компанент выглядит "работоспособным" (здорого серого цвета с черными краями),а если значение false, то компанент неработоспособен, как обширявшийся нарик (весь серый). В свойсвах меток (Label) следует так же изменить значение Caption в первой на "0", а во второй на "% выполненно". Ну и конечно, форма тоже нуждается в изменение своего заголовка на "Дефрагментация диска". Все внешний вид готов, им можно уже напугать.

У нас есть форма, но она пустая: индикатор не шевелится, кнопки не отзываются. Для "оживления" нам понадобится таймер (Timer) с системной закладки (System). Он будет отвечать за продвижения ссимулированной (что-то слово нехорошее) дефрагментации. Поставь его свойство интервал (Interval) в значение 300000 или по-нашенски 5 мин., как сам понимаешь это свойство отвечает за время через которое наступает событие onTimer, о нем позже, а пока, интервал измеряют милисекундах, таким образом секунда это 1000, пять секунд 5000, а 5 минут 300000 у.е.. Таймер можно разместить, где угодно, при выполнении проги он будет невидим. Для большего сходства надо эаменить значок в левом вверхнем углу формы на значок дефрагментатора. В свойствах формы выбери Icon и задай путь к таковому, я не нашел, точнее нашел, но в DLL файле, извлекать было лень нарисовал сам, значок похож, но не близнез. Его можно закачать в месте с исходниками примера или отсюда.

Теперь приступим непосредственно к кодингу. Открой окно редактирования кода и там пиши в самом верху следующую строку:

int i;

Следующим шагом создай обработчик события onTimer таймера, для этого в объектном инспекторе выбери Timer1, на закладке событий (Events) дважды щелкни в окошке напротив надписи onTimer, откроется окно редактора кода туда впиши следущие строки:

if (i==100){
i=0;
ShowMessage("Дефрагментация диска не может быть закончена.Следует начать её заново."); //если i равно 100, то мы начинаем все заново и пугаем мессагой
}
else i++; //i не равно 100, мы увеличиваем ее значение на 1
Label1->Caption=i; //метке 1 той, что показывает 0 навязываем i
ProgressBar1->Position=i; //индикатор переходит в положение выполненных i процентов

Ну теперь все запусти на компиляцию и смотри, чтобы все работало. Если что-то неполучается, то можешь скачать мои исходники данной версии (956 Килов). Если не лом закачай полную версию вместе с исходниками(1,38 Мега) и разберись в них - это несложно.

З.Ы. Пиши если есть идеи и проблемы по данному вопросу сюда alexx_everlast@hotmail.com.

Вернуться к списку. >>>>

Hosted by uCoz