function AddWinInfo(WinHandle: HWnd; list:TStringList): Boolean;
stdcall;
var WinCaption: array[0..255] of Char;
begin
Result:=True;
if isWindowVisible(WinHandle) then
if GetWindow(WinHandle,GW_OWNER)=0 then
begin
GetWindowText(WinHandle,WinCaption,SizeOf(WinCaption));
if (WinCaption<>'')and (WinCaption<>'Program Manager') then
List.Add(WinCaption);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var descript:TStringList;
begin
descript:=TStringList.Create;
EnumWindows(@AddWinInfo,LParam(descript));
ListBox1.Clear;
ListBox1.Items.AddStrings(descript);
descript.Destroy;
end;
Список запущенных приложений
Я знаю только один способ
-------------------------------------------------------------------------
procedure TForm1.Button1Click(Sender: TObject);
VAR
Wnd : hWnd;
buff: ARRAY [0..127] OF Char;
begin
ListBox1.Clear;
Wnd := GetWindow(Handle, gw_HWndFirst);
WHILE Wnd <> 0 DO BEGIN {Hе показываем:}
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));
ListBox1.Items.Add(StrPas(buff));
END;
Wnd := GetWindow(Wnd, gw_hWndNext);
END;
ListBox1.ItemIndex := 0;
end;
-------------------------------------------------------------------------
Может кто-то знает другой способ?
С уважением,SNAKE
Код:
var ProcessesSnapshot:THandle;
ProcessRecord:TProcessEntry32;
begin
Listbox1.clear;
ProcessesSnapshot:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
ProcessRecord.dwSize:=sizeof(ProcessRecord);
if Process32First(ProcessesSnapshot,ProcessRecord) then
begin //n 101
repeat
Listbox1.items.add(ProcessRecord.szExeFile)
until not Process32Next(ProcessesSnapshot,ProcessRecord);
end; //k 101
CloseHandle(ProcessesSnapshot);
ProcessRecord:TProcessEntry32;
begin
Listbox1.clear;
ProcessesSnapshot:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
ProcessRecord.dwSize:=sizeof(ProcessRecord);
if Process32First(ProcessesSnapshot,ProcessRecord) then
begin //n 101
repeat
Listbox1.items.add(ProcessRecord.szExeFile)
until not Process32Next(ProcessesSnapshot,ProcessRecord);
end; //k 101
CloseHandle(ProcessesSnapshot);
здеся переделать под ListBox не сложно.
так надо список окон или процессов или и то и другое? вообще и то и другое есть
короче он нам мозги парит
зачем надо по каждому глупому вопросу создавать тему
сначала надо пройтись по сайту, просмотреть исходники, потом только задавать вопрос
Цитата: ahilles
он нам мозги парит
зачем надо по каждому глупому вопросу создавать тему
сначала надо пройтись по сайту, просмотреть исходники, потом только задавать вопрос
зачем надо по каждому глупому вопросу создавать тему
сначала надо пройтись по сайту, просмотреть исходники, потом только задавать вопрос
Присоединяюсь, не в первый раз такое...