Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

эмуляция нажатия CTRL-ALT-DEL


denis_ka ©   (2002-01-07 00:24:00) 

с помощью sendkeys не получается, вообще-то надо показать окошко со списком задач - у меня друг инвалид, а эмулятор клавы такой возможности нет.


Ally   (2002-01-08 17:08:00) [1]


unit main;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls;

type
TForm1 = class(TForm)
ListBox1: TListBox;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ private declarations }
public
procedure BuildList;
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

function EnumerateWnds(Handle: HWND; lParam: Pointer): BOOL; stdcall;
var
Text: array [0..256] of Char;
begin
if (Handle <> Application.Handle) and
(IsWindowVisible(Handle)) and
(GetWindow(Handle, GW_OWNER) = 0) and
(GetWindowText(Handle, Text, SizeOf(Text)) <> 0) then
Form1.ListBox1.Items.AddObject(nil, StrPas(Text), TObject(Handle));

Result:= True;
end;

procedure TForm1.BuildList;
{ построение списка задач }
begin
ListBox1.Items.Clear;
EnumWindows(@EnumerateWnds, 0);
ListBox1.ItemIndex := 0;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
BuildList;
end;

procedure TForm1.Button2Click(Sender: TObject);

procedure Terminate(WndText: PChar);
{ Процедура, завершающая работу выбранного приложения }
var
WH, // - хэндл окна
PH: HWND; // - хэндл процесса
lpdwProcessId: LPDWORD;// - идентификатор процесса
begin

{ Получение хэндла окна }
WH := FindWindow(nil, WndText); // - хэндл окна

{ Получение хэндла процесса по хэндлу окна }
GetWindowThreadProcessID(WH, @lpdwProcessId);
PH := OpenProcess(PROCESS_ALL_ACCESS, FALSE, lpdwProcessId); // - хэндл процесса

{ Уничтожение процесса по его хэндлу }
TerminateProcess(PH, 4);
end;

begin
Terminate(PChar(Listbox1.Items.Strings[Listbox1.ItemIndex]));
BuildList;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
BuildList;
end;

end.


Наверх

Титульная страница Поиск, карта сайта Написать письмо