Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчёт по лабораторным работам.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
397.82 Кб
Скачать

Лабораторная работа №2 Создание, запуск и управление процессами в многозадачной ос.

Цель работы: освоить технологию подготовки, создания и управления процессами в ОС Windows.

Оборудование: ПЭВМ IBM PC-AT 486 и выше.

Программные средства: ОС Windows XP, C++ Builder 6, файл справочной документации по функциям API библиотеки WIN32.

Задание: составить программу, которая позволяет создавать и запускать новый процесс с указанием параметров, управлять окном этого процесса и задавать процессу новые параметры в ходе его выполнения.

Программа работы:

  1. Ознакомиться с общей технологией создания и запуска процессов в ОС Windows.

  2. Изучить структуру параметров и правила их идентификации для функции CreateProcess().

  3. Изучить структуру параметров и правила их идентификации для функции ShellExecute().

  4. Ознакомиться с назначением и правилами вызова функций ShellWindowText() и ShowWindow().

  5. Написать в соответствии с заданием программу на основе использования перечисленных функций.

  6. Выявить и исправить ошибки, создать удобный интерфейс, расставить по тексту программы комментарии.

  7. Провести испытания и продемонстрировать работу преподавателю.

Листинг заголовочного файла программы:

unit Process;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, XPMan, ExtCtrls, Buttons;

type

TForm1 = class(TForm)

Edit1: TEdit;

Label1: TLabel;

GroupBox1: TGroupBox;

RadioButton1: TRadioButton;

RadioButton2: TRadioButton;

RadioButton3: TRadioButton;

RadioButton4: TRadioButton;

OpenDialog1: TOpenDialog;

GroupBox2: TGroupBox;

RadioButton5: TRadioButton;

RadioButton6: TRadioButton;

RadioButton7: TRadioButton;

BitBtn1: TBitBtn;

XPManifest1: TXPManifest;

BitBtn2: TBitBtn;

Button1: TButton;

procedure Edit1KeyPress(Sender: TObject; var Key: Char);

procedure BitBtn1Click(Sender: TObject);

procedure BitBtn2Click(Sender: TObject);

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

Put:String;

Prioritet:String;

n1:STARTUPINFO;

n2:PROCESS_INFORMATION;

NameWindow:hWnd;

Name:String;

implementation

{$R *.dfm}

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);

begin

Put:=Edit1.Text;

if key=#13 then

begin

BitBtn1.Click;

end;

end;

procedure TForm1.BitBtn1Click(Sender: TObject);

begin

Put:=Edit1.Text;

if RadioButton1.Checked=true then

begin

n1.wShowWindow:=SW_SHOWMAXIMIZED;

end;

if RadioButton2.Checked=true then

begin

n1.wShowWindow:=SW_SHOWDEFAULT;

end;

if RadioButton3.Checked=true then

begin

n1.wShowWindow:=SW_SHOWMINIMIZED;

end;

if RadioButton4.Checked=true then

begin

n1.wShowWindow:=SW_HIDE;

end;

n1.lpReserved:=nil;

n1.lpTitle:=nil;

n1.dwFlags:=STARTF_USESHOWWINDOW;

n1.cbReserved2:=0;

n1.lpReserved2:=nil;

if RadioButton5.Checked=true then

begin

CreateProcess(nil,PChar(Put),nil,nil,true,HIGH_PRIORITY_CLASS,nil,nil,n1,n2);

end;

if RadioButton6.Checked=true then

begin

CreateProcess(nil,PChar(Put),nil,nil,true,NORMAL_PRIORITY_CLASS,nil,nil,n1,n2);

end;

if RadioButton7.Checked=true then

begin

CreateProcess(nil,PChar(Put),nil,nil,true,IDLE_PRIORITY_CLASS,nil,nil,n1,n2);

end;

end;

procedure TForm1.BitBtn2Click(Sender: TObject);

begin

if OpenDialog1.Execute=true then

begin

Edit1.Text:=OpenDialog1.FileName;

end;

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

close;

end;

end.