
- •Передача данных между процессами посредством сообщений
- •Задание
- •Программа работы
- •Использованные компоненты и методы программы “Source”:
- •Листинг программы “Dest” – приёмник сообщений
- •If not r then ShowMessage('Ошибка передачи сообщения.');
- •Использованные компоненты и методы:
- •Результат работы программ
- •Лабораторная работа №2 Создание, запуск и управление процессами в многозадачной ос.
- •Листинг заголовочного файла программы:
- •Листинг исполняемого файла программы:
- •Результат работы программы:
- •Листинг заголовочного файла программы:
- •Листинг исполняемого файла программы:
- •Результат работы программы:
- •Ответы на контрольные вопросы:
- •Лабораторная работа № 4 Синхронизация задач с помощью событий.
- •Программа работы:
- •Листинг заголовочного файла программы “source”:
- •Листинг исполняемого файла программы “source”:
- •Листинг заголовочного файла программы “dest”:
- •Результат работы программы:
- •Результат работы программы:
- •Ответы на контрольные вопросы:
- •Результат работы программы:
- •Ответы на контрольные вопросы:
Лабораторная работа №2 Создание, запуск и управление процессами в многозадачной ос.
Цель работы: освоить технологию подготовки, создания и управления процессами в ОС Windows.
Оборудование: ПЭВМ IBM PC-AT 486 и выше.
Программные средства: ОС Windows XP, C++ Builder 6, файл справочной документации по функциям API библиотеки WIN32.
Задание: составить программу, которая позволяет создавать и запускать новый процесс с указанием параметров, управлять окном этого процесса и задавать процессу новые параметры в ходе его выполнения.
Программа работы:
Ознакомиться с общей технологией создания и запуска процессов в ОС Windows.
Изучить структуру параметров и правила их идентификации для функции CreateProcess().
Изучить структуру параметров и правила их идентификации для функции ShellExecute().
Ознакомиться с назначением и правилами вызова функций ShellWindowText() и ShowWindow().
Написать в соответствии с заданием программу на основе использования перечисленных функций.
Выявить и исправить ошибки, создать удобный интерфейс, расставить по тексту программы комментарии.
Провести испытания и продемонстрировать работу преподавателю.
Листинг заголовочного файла программы:
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.