Форум: "Основная";
Текущий архив: 2007.02.25;
Скачать: [xml.tar.bz2];
Внизвытащить Title у системного hint-окошка Найти похожие ветки
← →
BOB16 (2007-01-07 00:38) [0]В системном трейе находятся иконки. Когда на них наводят мышь - выскакивает на некоторое время Hint.
Свою программу посадил тоже в трей и снабдил соответствующим Hint"ом (Shell_NotifyIcon(NIM_ADD, @FIconData:TNotifyIconData)).
Но хочу, чтобы когда мышь навели на мою иконку и появился Hint с моим текстом - поменять его на другой! Именно пока он виден на экране в системном трейе!
Посредством WS32.EXE вижу такое сообщение о моём окошке= Hint"е:
Popup XXXXXXX {tooltips_class32} EXPLORER.EXE (XXX,XXX)-(XXX,XXX) "Старый текст моего Hint до правки"
в helpe WS32 написано, что это Title окна, полученный функцией GetwindowText(), но я попробовал:var S:array [0..260] of char;
P:PChar;
wnd_:= Windows.FindWindow("tooltips_class32",""); // по моему предположению = текущее окошко в системном трейе
if wnd_<>0 then
if IsWindowVisible(wnd_) then begin // и оно видно сейчас
P:=@S;
fillchar(S,sizeOf(S),0);
GetWindowText(wnd_,P,259);
//... но здесь - чтобы понять - моё окно с Hint"ом или чужое мне нужно знать текст Hint"а, чтобы дальше его поменять...
end;
А мне возвращается S, залитый нулями и сама GetWindowText()=0!
Как мне вытащить Title-текст, который отображает WS32 для моего окошка с Hint?
← →
Юрий Зотов © (2007-01-07 02:01) [1]Хм... а разве текст хинта не сидит в TNotifyIconData? Зачем его искать, если он и так известен?
← →
BOB16 (2007-01-07 02:09) [2]>[1]
Проблема в том, что он сидит в Hint и сидит в "поменяном" виде после
Shell_NotifyIcon(NIM_MODIFY, @FIconData:TNotifyIconData)).!!!!!
Но как только hint-окно появилось на экране в системном трейе, и до момента пока мышь позиционируется на иконке - картинка с Hint"ом не освежается!!!!!
А нужно именно - пока Hint виден в системном трее - поменять его текст.
← →
BOB16 (2007-01-07 13:35) [3]Проблема с поиском окошка с моим Hint в системном трейе вроде бы отпала.
Нашёл-таки способ отыскать моё Hint-окно, которое сейчас видно на "Рабочем столе":var S : array [0..260] of char;
P : PChar;
DefFont : HFont;
dc : HDC;
..........
begin
..........
Shell_NotifyIcon(NIM_MODIFY, @FIconData);
..........
P:= @S;
wnd_:= Windows.FindWindow("tooltips_class32",""); // похоже, что это
// первый попавшийся Hint в системном трейе
if wnd_=0 then
Exit;
wnd_:= Windows.GetWindow(wnd_,GW_HWNDFIRST);
// предположение: начинаем поиск с самого начала списка таких окошек..
z_lab:
if wnd_<>0 then begin
fillchar(S,sizeOf(S),0);
Windows.SendMessage(wnd_,WM_GETTEXT,70,Integer(P));
if P<>"Новый текст Hintа" then begin
wnd_:= Windows.GetNextwindow(wnd_,GW_HWNDNEXT);
goto z_lab;
end;
// дошли до сюда - значит нашли наше Hint-окошко
if not IsWindowVisible(wnd_) then begin // но оно не видно!
Exit;
end;
dc:= Windows.GetDc(wnd_);
// пробовал сразу дать Windows.SendMessage(wnd_,WM_PAINT,dc,0);
// думал что перерисуется содержимое окошка - но ничего
// такого не произошло!
try // пришлось делать махинацию с помощью двух нижеприведённых строк
DefFont:= Windows.SendMessage(wnd_,WM_GETFONT,0,0);
Windows.SendMessage(wnd_,WM_SETFONT,DefFont,1);
finally
ReleaseDC(dc,wnd_);
end;
end;
end;
Но проблема со шрифтом осталась! Хотя и делаю:
DefFont:= SendMessage(wnd_,WM_GETFONT,0,0);
Windows.SendMessage(wnd_,WM_SETFONT,DefFont,1);
Казалось бы: беру старый шрифт и его же посылаю, но не тут то было - шрифт становится жирным!
Что делать? Кто-нибудь поделится соображениями?
← →
Calibr © (2007-01-07 14:11) [4]Может попробовать отослать окну сообщение WM_SETTEXT
← →
BOB16 (2007-01-07 15:24) [5]> Calibr [4]
Пробовал - никакого эффекта!
Работает толькоWindows.SendMessage(wnd_,WM_SETFONT,...
но шрифт......
← →
BOB16 (2007-01-08 15:56) [6]Нашёл-таки способ непортить шрифт в моём Hint-окне, которое сейчас видно на "Рабочем столе":
DefFont:= SendMessage(wnd_,WM_GETFONT,0,0);
Windows.SendMessage(wnd_,WM_SETFONT,DefFont,1);
вообще не к чему...
делаю просто:Windows.SendMessage(wnd_,WM_SETFONT,0,1);
И всё работает под XP!
Всем спасибо!
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2007.02.25;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.044 c