Code:

PostThreadMessage(AnotherProg_MainThreadID,WM_CLOSE,0,0);

PostMessage(AnotherProg_MainWindow,WM_CLOSE,0,0);

 

 

WindowFromPoint

ChildWindowFromPoint

 

Автор ответа: rhf

 

Данная функция позволяет завершить выполнение любой активной программы по её classname или заголовку окна.

Code:

procedure KillProgram(Classname : string; WindowTitle : string);

const

PROCESS_TERMINATE = $0001;

var

ProcessHandle : THandle;

ProcessID: Integer;

TheWindow : HWND;

begin

TheWindow := FindWindow(Classname, WindowTitle);

GetWindowThreadProcessID(TheWindow, @ProcessID);

ProcessHandle := OpenProcess(PROCESS_TERMINATE, FALSE, ProcessId);

TerminateProcess(ProcessHandle,4);

end;

 

 

Code:

function TForm1.Find(s: string): hWnd;

var Wnd: hWnd;

buff: array[0..127] of Char;

begin

Find := 0;

Wnd := GetWindow(Handle, gw_HWndFirst);

while Wnd <> 0 do

   begin

     if (Wnd <> Application.Handle) and

       IsWindowVisible(Wnd) and

       (GetWindow(Wnd, gw_Owner) = 0) and

       (GetWindowText(Wnd, buff, sizeof(buff)) <> 0) then

       begin

         GetWindowText(Wnd, buff, sizeof(buff));

         if pos(s, StrPas(buff)) > 0 then

           begin

             Find := Wnd;

             Break;

           end;

       end;

     Wnd := GetWindow(Wnd, gw_hWndNext);

   end;

end;

 

Для отслеживания каких-то событий во всей Windows нужно установить ловушку (hook).

Например, такая ловушка может отслеживать все события, связанные с мышью, где бы ни находился курсор. Можно отслеживать и события клавиатуры.

 

Для ловушки нужна функция, которая, после установки ловушки при помощи SetWindowsHookEx, будет вызываться при каждом нужном событии.

Эта функция получает всю информацию о событии. UnhookWindowsHookEx уничтожает ловушку.

 

 

Это пример запуска консольных программ с передачей ей консольного ввода (как если бы он был введен с клавиатуры после запуска программы) и чтением консольного вывода. Таким способом можно запускать например стандартный виндовый ftp.exe (в невидимом окне) и тем самым отказаться от использования специализированных, зачастую глючных компонент.

 

Этот модуль включает две процедуры, которые эмулируют популярные Visual Basic процедуры : Sendkeys and AppActivate. SendKeys берет PChar

как первый параметр и boolean как второй. Выглядит это так:

SendKeys('KeyString', Wait);

 

 

Ниже приведён unit, который позволяет убить задачу в Windows NT.

 

Code:

 

function Kill_By_Pid(pid : longint) : integer;

где pid, это число, представляющее pid задачи

 

function EnumProcessWithPid(list : TStrings) : integer;

где список, это объект TStrings, который будет содержать имя задачи и pid в полях Object.

( list.Items[i] для имени, integer(list.Object[i]) для PID)

 

 

Code:

SetWindowText(FindWindow(nil,'Текущий заголовок'), 'Желаемый');

 

 

 

Автор trainer

  

Code:

{Эта небольшая функция закрывает приложения, соответствующие заданному имени .exe.

Пример: KillTask('notepad.exe');

         KillTask('iexplore.exe'); }

uses

Tlhelp32, Windows, SysUtils;

 

function KillTask(ExeFileName: string): integer;

const

PROCESS_TERMINATE=$0001;

var

ContinueLoop: BOOL;

FSnapshotHandle: THandle;

FProcessEntry32: TProcessEntry32;

begin

result := 0;

 

FSnapshotHandle := CreateToolhelp32Snapshot

                    (TH32CS_SNAPPROCESS, 0);

FProcessEntry32.dwSize := Sizeof(FProcessEntry32);

ContinueLoop := Process32First(FSnapshotHandle,

                                FProcessEntry32);

 

while integer(ContinueLoop) <> 0 do

begin

   if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =

        UpperCase(ExeFileName))

    or (UpperCase(FProcessEntry32.szExeFile) =

        UpperCase(ExeFileName))) then

     Result := Integer(TerminateProcess(OpenProcess(

                       PROCESS_TERMINATE, BOOL(0),

                       FProcessEntry32.th32ProcessID), 0));

   ContinueLoop := Process32Next(FSnapshotHandle,

                                 FProcessEntry32);

end;

 

CloseHandle(FSnapshotHandle);

end;

 

Вам потребуется OpenDialog для открытия ехе-файлов и Memo для показа информации о файле.