Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Процесс выгрузки приложения




Процесс выгрузки приложения происходит следующим образом.

Необходимо выделить форму и на закладке Events в Инспекторе объектов следует дважды щелкнуть в строке on destroy. Таким образом, создается процедура, которая будет выполняться при уничтожении формы. В созданной процедуре следует приписать следующий код:

procedure TForml.FormDistroy(Sender: TObject; var Action: TCloseAction);

begin

ServerSocket1.Active:=false;

end.

Указанный код позволяет отключать сервер, что автоматически закрывает порт. Если этого не сделать, то при первой же перезагрузке компьютер может выдать синий экран, если будет функционировать подключение к серверу.

Теперь нужно выделить компонент ServerSocket и перейти на вкладку Events в окне Object Inspector. Здесь следует дважды щелкнуть в строке OnciientRead и в созданную процедуру (она будет вызываться, когда данные приходят в порт) необходимо вписать код:

procedure TForml.ServerSocketlClientRead(Sender: TObject; Socket: TCustomWinSocket);

var

s:String;

begin

s:= Socket.ReceiveText;

if s='R' then

ExitWindowsEx(EWX_SHUTDOWN,0);

end.

В первой строке считывается состояние свойства ReceiveText объекта Socket, ссылка на который была получена в качестве второго параметра процедуры. После считывания свойство обнуляется автоматически, поэтому нужно сохранить его в строковой переменной, чтобы потом можно было сколько угодно раз обращаться к полученным данным.

После этого необходимо провести проверку: если полученный текст равен букве R, то нужно отправить компьютер на перезагрузку.

Функция ExitWindowsEx позволяет Windows свернуться и выключить компьютер. При использовании параметра EWX_SHUTDOWN перед перезагрузкой всем запущенным приложениям отправится запрос о выключении, и пользователь сможет сохранить свои измененные данные.

Для сохранения сервера необходимо выбрать пункт Save All в меню File. Сначала Delphi запросит имя формы. Можно оставить по умолчанию Unitl или ввести что-то другое и нажать Сохранить. Потом будет сделан запрос об имени проекта, которое будет использоваться в качестве имени ехе-файла.

Теперь необходимо спрятать сервер, чтоб его не было видно на панели задач. Для этого следует выбрать пункт Project Manager в меню View. Откроется окно менеджер проекта, показанное на рисунке 205.

Рисунок 205 – Окно Менеджер проекта

Далее следует щелкнуть правой кнопкой на имени созданного проекта ---.exe и в появившемся меню выбрать пункт View Source (рисунок 205).

Откроется файл с исходным текстом проекта, в котором должно получится следующее:

program Internat32;

uses

Forms,

Windows.

Unitl in 'Unit1.pas' {Forml};

{$R *.RES}

var

WhEvent:THandle;

begin

Application. Initialize;

ShowWindow(Application.Handle,SW_HIDE);

Forml:=TForml.Create(nil);

Application. Run;

WhEvent:=Create Event(nil, true, false, 'et');

while (true) do

begin

WaitForSingleObject(WhEvent,1000);

Application.ProcessMessages;'

end;

end.

В данном листинге[31]:

WhEvent:THandle – акцент на то, что нужен указатель WhEvent на пустое событие THandle.

Application. Initialize – инициализация программы.

ShowWindow(Application.Handle, sw_HiDE) – установка параметров окна. Параметр SWJHIDE говорит, что окно должно быть невидимо. Единственное, как его можно после этого увидеть – нажать <Ctrl>+<Alt>+<Del>.

Forml:=TForm1.Create (nil) – создание формы. Это необходимо сделать потому, что в самом начале форма была убрана из списка автосоздаваемых форм.

Application.Run – запуск программы на выполнение. Здесь запускаются обработчики событий, за которые отвечает Delphi и которые пришлось бы прописывать вручную на С или C++.

WhEvent:=Create Event(nil, true,.false, 'et') – инициализация пустого события.

Код программы выполнятся в следующей последовательности:

1 Запускается ожидание несуществующего события. Так как событие не существует, то программа будет ждать его ровно указанное время (оно указано в качестве второго параметра – 1000 миллисекунд или 1 секунда).

2 Получение управления. После второго шага программа снова перейдет на пункт 1 и запустит ожидание. Во время ожидания пользователь работает с другими приложениями как всегда. Когда серверу (каждую секунду) передается управление, то созданный сервер проверяет: есть ли для него сообщения. В нашем случае сообщение может быть одно – приход на указанный порт управляющей команды. Если сообщения есть, то сервер их выполняет. И в любом случае (есть ли сообщения или их нет) после этого пользователь снова работает без проблем одну секунду.

Проверка происходит так быстро, что компьютер с работающим сервером не ощутит нагрузки сервера.

Для того чтобы Delphi создал ехе-файл без запуска программы, необходимо нажать <Ctrl>+<F9>. Как только Delphi откомпилирует весь код, можно считать, что серверная часть готова. В момент тестирования после первого же запуска программа пропишется в реестре по адресу: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices. После тестирования ее необходимо удалить.






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных