-
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. Вот константы из моего CommCtrlconst
{$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]спасибо, буду разбираться