Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

Как получить Список кнопок в таскбаре (TASKBAR)?

Delphi , Рабочий стол , TaskBar

Как получить Список кнопок в таскбаре (TASKBAR)?

Code:

uses CommCtrl;
{©Drkb v.3(2007): www.drkb.ru}
 
function GetModuleFileNameExW(hProcess:THandle; hModule:HMODULE; lpFilename:PWideChar; nSize:DWORD):DWORD; stdcall; external 'PSAPI.DLL';
 
const
ICON_SMALL2 = 2;
 
function WindowGetEXE(wnd:HWND):string;
var
wt:array[0..MAX_PATH-1] of WChar;
r:integer;
prc:THandle;
prcID:cardinal;
begin
result:='';
if GetWindowThreadProcessID(wnd,prcID)<>0 then
begin
prc:=OpenProcess(PROCESS_ALL_ACCESS,false,prcID);
if prc<>0 then
try
   r:=GetModuleFileNameExW(prc,0,wt,MAX_PATH*2);
 if r<>0 then result:=wt;
finally
  CloseHandle(prc)
end
end
end;
 
function WindowGetIcon(wnd:HWND; fSmall:boolean):Cardinal;
var
defIcon:HICON;
r,iType1,iType2: integer;
begin
   defIcon:=LoadIcon(0,IDI_APPLICATION);
   if fSmall then
   begin iType1:=ICON_SMALL2; iType2:= GCL_HICONSM; end else
   begin iType1:=ICON_BIG; iType2:= GCL_HICON; end;
 
  r:=SendMessageTimeOut(wnd,WM_GETICON,iType1,0,SMTO_ABORTIFHUNG or SMTO_NOTIMEOUTIFNOTHUNG, 100, result);
 if (r=0) then result:=defIcon else
 begin
   if (result=0) then result:=GetClassLong(wnd,iType2);
   if (result=0) then result:=defIcon
 end;
end;
 
function EnumWindowsProc(wnd:HWND; lParam: LPARAM):BOOL; stdcall;
var
wn:array[0..MAX_PATH-1] of char;
begin
result:=true;
if IsWindowVisible(wnd) and (GetParent(wnd)=0) and (GetWindow(wnd,GW_OWNER)=0) and
((GetWindowLong(wnd,GWL_EXSTYLE) and WS_EX_TOOLWINDOW)=0)  then
begin
GetWindowText(wnd,wn,MAX_PATH);
with Form1.ListView1.Items.Add do
begin
   Caption :=wn; // заголовок
   SubItems.Add(IntToStr(wnd)); // дескриптор
   SubItems.Add(WindowGetEXE(wnd)); // exe
   SubItems.Add(' '); // колонка для большой иконки
   ImageIndex:=ImageList_AddIcon(Form1.ImageList1.Handle,WindowGetIcon(wnd,true)); // маленькая иконка
   SubItemImages[2] := ImageList_AddIcon(Form1.ImageList2.Handle,WindowGetIcon(wnd,false)); // большая иконка
end;
end;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
ListView1.Clear;
ImageList1.Clear;
ImageList2.Clear;
EnumWindows(@EnumWindowsProc,0);
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
// ImageList1 - 16x16;  ImageList2 - 32x32;
ListView1.SmallImages:=ImageList1;
ListView1.LargeImages:=ImageList2;
end;
Взято из http://forum.sources.ru

Автор: Krid

Статья Как получить Список кнопок в таскбаре (TASKBAR)? раздела Рабочий стол TaskBar может быть полезна для разработчиков на Delphi и FreePascal.


Комментарии и вопросы


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: TaskBar ::


реклама



©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru Rambler's Top100
28.03.2024 17:09:22/0.041363954544067/2