Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.07.31;
Скачать: CL | DM;

Вниз

Как получить список программ свернутых в SysTray?   Найти похожие ветки 

 
MacRine   (2005-06-02 21:34) [0]

Господа, подскажите, как получить список программ свернутых в SysTray?


 
VMcL ©   (2005-06-03 00:01) [1]

Штатными средствами - никак.


 
Digitman ©   (2005-06-03 10:08) [2]


> программ свернутых в SysTray


ты сначала уточни, что ты подразумеваешь под этим ..


 
DVM ©   (2005-06-03 10:25) [3]

послать широковещательное сообщение TaskbarCreated и поставить ловушку на WM_COPYDATA окна Shell_TrayWnd, отловив потом там те сообщения, что несут информацию о добавляемых иконках.
Только не все приложения обязаны при получении TaskbarCreated передобавить иконки.


 
Ученик   (2005-06-04 12:26) [4]

>MacRine   (02.06.05 21:34)  

Список ProcessID



uses
 CommCtrl;

function WindowProcessID(aWindow: HWnd): DWord;
begin
 GetWindowThreadProcessID(aWindow, Result)
end;

function FindChild(aParent: HWnd; aClassName: PChar): HWnd;
var
 Child: HWnd;
 szClassName: array[0..255] of Char;
begin
 Child := GetWindow(aParent, GW_CHILD);
 while Child <> 0 do begin
   if GetClassName(Child, szClassName, 255) > 0 then begin
     if StrIComp(szClassName, aClassName) = 0 then
       Result := Child
     else
       Result := FindChild(Child, aClassName);
     if Result <> 0 then Exit
   end;
   Child := GetWindow(Child, GW_HWNDNEXT)
 end;
 Result := 0
end;

procedure TForm1.Button2Click(Sender: TObject);
var
 hProcess: THandle;
 hToolbar, hIconOwner: HWnd;
 ButtonInfo: TTBButtonInfo;
 pButtonInfo: ^TTBButtonInfo;
 i, iCount: Integer;
 dwSize: DWord;
begin
 hToolbar := FindChild(FindWindow("Shell_TrayWnd", ""), "ToolbarWindow32");
 hProcess := OpenProcess(PROCESS_CREATE_THREAD or PROCESS_VM_OPERATION or
             PROCESS_VM_WRITE or PROCESS_VM_READ, False, WindowProcessID(hToolbar));
 if hProcess <> 0 then try
   pButtonInfo := VirtualAllocEx(hProcess, nil, SizeOf(ButtonInfo), MEM_COMMIT, PAGE_EXECUTE_READWRITE);
   try
     FillChar(ButtonInfo, SizeOf(ButtonInfo), 0);
     ButtonInfo.cbSize  := SizeOf(ButtonInfo);
     ButtonInfo.dwMask  := TBIF_LPARAM;
     if WriteProcessMemory(hProcess, pButtonInfo, @ButtonInfo, SizeOf(ButtonInfo), dwSize) then begin
       iCount := SendMessage(hToolbar, TB_BUTTONCOUNT, 0, 0);
       for i := 0 to iCount - 1 do
         if SendMessage(hToolbar, TB_GETBUTTONINFO, i, Integer(pButtonInfo)) <> - 1 then
           if ReadProcessMemory(hProcess, pButtonInfo, @ButtonInfo, SizeOf(ButtonInfo), dwSize) and
              ReadProcessMemory(hProcess, Pointer(ButtonInfo.lParam), @hIconOwner, 4, dwSize) then
             ListBox1.Items.Add(IntToStr(WindowProcessID(hIconOwner)))
     end
   finally
     VirtualFreeEx(hProcess, pButtonInfo, 0, MEM_RELEASE)
   end
 finally
   CloseHandle(hProcess)
 end
end;



 
Anatoly Podgoretsky ©   (2005-06-04 15:44) [5]

Там нет программ.



Страницы: 1 вся ветка

Текущий архив: 2005.07.31;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.094 c
9-1113670911
Степан
2005-04-16 21:01
2005.07.31
Что такое Z-буфер, и для чего он нужен??


14-1120785225
Миллиадр
2005-07-08 05:13
2005.07.31
Как называются числа больше миллиарда ?


6-1113811986
MaximP
2005-04-18 12:13
2005.07.31
Несколько програм на одном порту


14-1120766682
ferr
2005-07-08 00:04
2005.07.31
Страна дураков.


1-1121240017
Viktop
2005-07-13 11:33
2005.07.31
Создание формы по hot key