Конференция "WinAPI" » Клас для получения информации о системном трее
 
  • brother © (22.01.09 05:00) [0]
    в инете нашел вот:
    http://articles.org.ru/cn/showdetail.php?cid=7276
    спасибо, Author    : Александр (Rouse_) Багель
    есть вопросы:
    1. // Получаем ID процесса, которому принадлежит найденное окно
     GetWindowThreadProcessId(FSysTrayHandle, &dwProcessID);
    зачем &? с ним не компилируется, без него нормально

    2. ButtonInfo.dwMask := TBIF_IMAGE or TBIF_TEXT or TBIF_STATE or TBIF_STYLE
             or TBIF_LPARAM or TBIF_COMMAND or TBIF_SIZE or TBIF_BYINDEX;
     в моем CommCtrl, TBIF_BYINDEX нет, заменил на $00000080 (по логике)

    3. интересует структура FIconData.Items[I], как я понимаю нигде не используется?
    4. и главное: можно ли сделать двойной клик по нужной мне иконке, делая выборку из FIconData.Items[I].szTip? те показать окно программы
    Розыч, и другие, помогите...
  • MBo © (22.01.09 09:28) [1]
    @dwProcessID

    TBIF_BYINDEX            = $80000000;
  • Rouse_ © (22.01.09 17:20) [2]
    1. &dwProcessID - на 2007-ой компилиться :)
    Вообще код сначала на VC++ писался и только потом перекладывался на Дельфи методом половинного копипаста - видать пропустил :)

    2. Вот константы из моего CommCtrl
    const
     {$EXTERNALSYM TBBF_LARGE}
     TBBF_LARGE              = $0001;

     {$EXTERNALSYM TB_GETBITMAPFLAGS}
     TB_GETBITMAPFLAGS       = WM_USER + 41;

     {$EXTERNALSYM TBIF_IMAGE}
     TBIF_IMAGE              = $00000001;
     {$EXTERNALSYM TBIF_TEXT}
     TBIF_TEXT               = $00000002;
     {$EXTERNALSYM TBIF_STATE}
     TBIF_STATE              = $00000004;
     {$EXTERNALSYM TBIF_STYLE}
     TBIF_STYLE              = $00000008;
     {$EXTERNALSYM TBIF_LPARAM}
     TBIF_LPARAM             = $00000010;
     {$EXTERNALSYM TBIF_COMMAND}
     TBIF_COMMAND            = $00000020;
     {$EXTERNALSYM TBIF_SIZE}
     TBIF_SIZE               = $00000040;
     {$EXTERNALSYM TBIF_BYINDEX}
     TBIF_BYINDEX            = $80000000;



    3. как это нигде не используется? Именно в нее и сохраняются все данные, т.е. это массив рекордов типа TFWSysIconItem

    4. можно определить позицию, где расположена иконка, собственно каждая иконка это кнопка в TToolBar, посмотри как это делается в нем. Ну а после определения позиции сгенерируй мышиное событие по этим координатам, ну к примеру как-то так:

    var
     TI:TInput;
     MI: TMouseInput;
     P:TPoint;
    begin
     GetCursorPos(P);
     MI.dx := P.X;
     MI.dy := P.Y;
     MI.mouseData := 0;
     MI.dwFlags := MOUSEEVENTF_RIGHTDOWN ;
     MI.time := 10;
     TI.mi := MI;
     TI.Itype := INPUT_MOUSE;
     SendInput(1, TI, SizeOf(TInput));
     MI.dwFlags:=MOUSEEVENTF_RIGHTUP;
     TI.mi := MI;
     SendInput(1, TI, SizeOf(TInput));

  • brother © (26.01.09 04:06) [3]
    спасибо, буду разбираться
 
Конференция "WinAPI" » Клас для получения информации о системном трее
Есть новые Нет новых   [134435   +36][b:0][p:0.001]