Форум: "Основная";
Текущий архив: 2006.03.26;
Скачать: [xml.tar.bz2];
ВнизПроцессы Найти похожие ветки
← →
Pit © (2006-02-20 13:26) [0]Доброго времени суток,помогите разобратся что не правильно.
При первом вызове Popupmenu работает нормально, при последующих не отображаются процессы.procedure TForm1.PopupMenu1Popup(Sender: TObject);
var
NewItem: TMenuItem;
buff: array[0..127] of Char;
hSnapShot: THandle;
uProcess: PROCESSENTRY32;
r: longbool;
ExePath: array[0..127] of Char;
A: array[0..127] of Char;
TheBitmap: TBitmap;
Icon: TIcon;
Wnd: hWnd;
ProcessID: DWORD;
ProcessHandle : THandle;
begin
PopupMenu1.Items.Clear;
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));
GetWindowThreadProcessId(Wnd, ProcessId);
ProcessHandle := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, False, ProcessId);
GetModuleFileNameEx(ProcessHandle, 0, ExePath,127);
StrPCopy(a,ExePath);
TheBitmap:= TBitmap.Create;
Icon:= TIcon.Create;
Icon.Handle := ExtractIcon(HInstance, A, 0);
TheBitmap.Height := Icon.Height;
TheBitmap.Width := Icon.Width;
TheBitmap.Canvas.Draw(0, 0, Icon);
NewItem := TMenuItem.Create(PopupMenu1);
NewItem.Caption := buff ;
NewItem.Bitmap:= TheBitmap;
PopupMenu1.Items.Insert(0,NewItem);
end;
Wnd := GetWindow(Wnd, gw_hWndNext);
end;
TheBitmap.Free;
Icon.Free;
hSnapShot:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
if(hSnapShot<>0)then
begin
r:=Process32First(hSnapShot, uProcess);
while r <> false do
begin
ProcessHandle := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, False, uProcess.th32ProcessID);
GetModuleFileNameEx(ProcessHandle, 0, ExePath,127);
TheBitmap:= TBitmap.Create;
Icon:= TIcon.Create;
StrPCopy(a,ExePath);
Icon.Handle := ExtractIcon(HInstance, A, 0);
TheBitmap.Height := Icon.Height;
TheBitmap.Width := Icon.Width;
TheBitmap.Canvas.Draw(0, 0, Icon);
NewItem := TMenuItem.Create(PopupMenu1);
NewItem.Caption := uProcess.szExeFile;
NewItem.Bitmap:= TheBitmap;
PopupMenu1.Items.Insert(0,NewItem);
TheBitmap.Free;
Icon.Free;
r:=Process32Next(hSnapShot, uProcess);
end;
CloseHandle(hSnapShot);
end;
end;
← →
Defunct © (2006-02-20 17:59) [1]А вы код отформатируйте.. может тогда и сами баг заметите..
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2006.03.26;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.044 c