ТОР 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. После тестирования ее необходимо удалить. Не нашли, что искали? Воспользуйтесь поиском:
|