![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите разобраться с контролем приложений [D7, NT4, Win2k, WinXP]
vodvorezlaya © (2006-04-14 12:20:00)Ув. Мастера подскажите как проверять запущена ли программа (которая видна только в диспетчере задач - процессах) и если она отсудствует то запускать её?
n0name (2006-04-15 18:40:00) [1]
> Нет такой функции в Win API
PSapi
Woolen (2006-04-15 14:57:00) [2]
> С помощью функции API EnumProcessполучаеш список всех процессов.
>
> Далее узнаеш принадлежность процесса к файлу.
Нет такой функции в Win API
Leonid Troyanovsky (2006-04-15 04:15:00) [3]
> vodvorezlaya (14.04.06 14:44) [3]
> Form1.Memo1.Clear;
Никогда не используй глобальную переменную FormX.
--
Regards, LVT.
vodvorezlaya (2006-04-14 14:44:00) [4]окна нет у моей програмки, она без формы
список процессов я нашёл, по ходу всё выводится в мемо1
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, TlHelp32, StdCtrls;
type
TForm1 = class(TForm)
Memo1: TMemo;
private
{ Private declarations }
public
{ Public declarations }
end;
procedure GetProcessList;
var
Form1: TForm1;
S: String;
implementation
procedure GetProcessList;
var
I: Integer;
hSnapshoot: THandle;
pe32: TProcessEntry32;
begin
Form1.Memo1.Clear;
hSnapshoot := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (hSnapshoot = -1) then Exit;
pe32.dwSize := SizeOf(TProcessEntry32);
if (Process32First(hSnapshoot, pe32)) then
repeat
S := pe32.szExeFile;
Form1.Memo1.Lines.Add(s);
until not Process32Next(hSnapshoot, pe32);
CloseHandle (hSnapshoot);
end;
end.
Feg16 (2006-04-14 13:31:00) [5]кусок кода
var
Form1: TForm1;
function SetLayeredWindowAttributes(hwnd: HWND; crKey: TColor; bAlpha: byte; dwFlags: DWORD): BOOL; stdcall;
implementation
{$R *.dfm}
function SetLayeredWindowAttributes; external 'user32.dll';
procedure Tform1.GetAllWindow;
Var
Wd : HWnd;
Nm: array[0..255] of Char;
Item: TListItem;
begin
Wd:=FindWindow(nil, nil);
while (Wd<>0) do Begin
Wd:=GetNextWindow(Wd,GW_HWNDNEXT);
GetWindowText(wd, nm, 255);
if (nm<>'') then with Lister do begin
Item:=Items.Add;
Item.Caption:=nm;
Item.SubItems.Add(IntToStr(Wd));
end;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
GetAllWindow;
end;
тут выводится список всех окон
Elen (2006-04-14 12:27:00) [6]С помощью функции API EnumProcessполучаеш список всех процессов.
Далее узнаеш принадлежность процесса к файлу.