Форум: "Начинающим";
Текущий архив: 2006.03.12;
Скачать: [xml.tar.bz2];
ВнизPopupmenu Найти похожие ветки
← →
Pit © (2006-02-21 14:42) [0]Уважаемые Мастера обьясните почему при вызове Popupmenu, на форме (рядом с caption формы) прорисовываются одна за другой все иконки получаемые из ExtractIcon(HInstance, A, 0), из за этого Popupmenu выпадает гораздо медленнее, если всё это дело помещаю в tray ещё медленнее.
var
Form1: TForm1;
hSnapShot: THandle;
uProcess: PROCESSENTRY32;
r: longbool;
buff: array[0..127] of Char;
ExePath: array[0..127] of Char;
A: array[0..127] of Char;
TheBitmap: TBitmap;
Icon: TIcon;
NewItem: TMenuItem;
ProcessHandle : THandle;
procedure TForm1.PopupMenu1Popup(Sender: TObject);
begin
PopupMenu1.Items.Clear;
hSnapShot:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
uProcess.dwSize := Sizeof(uProcess);
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);
TheBitmap.Height := Icon.Height;
TheBitmap.Width := Icon.Width;
Icon.Handle := ExtractIcon(HInstance, A, 0);
if Icon.Handle = 0 then
TheBitmap.Canvas.Draw(0, 0, Image1.Picture.Icon)
else
TheBitmap.Canvas.Draw(0, 0, Icon);
NewItem := TMenuItem.Create(PopupMenu1);
NewItem.Caption := uProcess.szExeFile ;
NewItem.Bitmap:= TheBitmap;
PopupMenu1.Items.Insert(0,NewItem);
r:=Process32Next(hSnapShot, uProcess);
end;
CloseHandle(hSnapShot);
end;
end;
← →
API (2006-02-21 14:48) [1]Icon: TIcon
Icon - одно из свойств формы. Разбирайтесь с областями видимости. А лучше - переименуйте свою Icon во что-то более экзотическое, например, в __MyIcon.
← →
Pit © (2006-02-21 14:55) [2]
> API (21.02.06 14:48) [1]
Спасибо Большое API.
Теперь всё работает нормально.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.03.12;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.013 c