![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
wm_SetText
Shluz © (2003-07-02 12:24:00)
Panel:=FindWindow("Shell_TrayWnd", nil);
Tray:=FindWindowEx(panel,0,"TrayNotifyWnd","");
Clock:=FindWindowex(tray,0,"TrayClockWClass",nil);
text:="text"#0;
sendmessage(clock,wm_settext,0,cardinal(text));
вообщем- то адресат сообщение получает, но текст контрола не меняется..почему??
Ученик (2003-07-07 19:53:00) [1]
>default © (07.07.03 19:41)
А почему он обязан визуально меняться, обновление и SetText не обязывают.
default (2003-07-07 19:41:00) [2]
Ученик © (07.07.03 19:29)
тогда объясни мне почему он визуально не меняется, хотя реальное обновление время идёт каждую секунду
смени системное время и увидишь что некоторое время часы будут идти по "старому" времени
Ученик (2003-07-07 19:29:00) [3]>default © (07.07.03 00:11)
Это значит, что Spy++ показывает в Window Caption для Clock установленный текст, что и подтверждает
if GetWindowText(Clock, szText, 255) > 0 then
( StrPas(szText)>default © (07.07.03 00:11)
Это значит, что Spy++ показывает в Window Caption для Clock установленный текст, что и подтверждает
if GetWindowText(Clock, szText, 255) > 0 then
ShowMessage(StrPas(szText))
default (2003-07-07 18:02:00) [4]
Игорь Шевченко © (07.07.03 17:25)
ты точно сообщения "часов" смотрел???
у меня каждую секунду идут два сообщения
WM_TIMER потом сразу за ним WM_SETTEXT и польз-ие иногда "проскакивают"
Игорь Шевченко (2003-07-07 17:25:00) [5]
Пришлось запустить WinSight - два сообщения WM_TIMER за перекур :) И все...
NT 4 SP6
default (2003-07-07 16:25:00) [6]
Игорь Шевченко © (07.07.03 09:49)
WinSight показывает несколько другую картину
посмотрите
Игорь Шевченко (2003-07-07 09:49:00) [7]
Ну вот Spy++ и показывает, что WM_SETTEXT не посылается :) WM_TIMER приходит, контрол меняет сове содержимое, приходит время WM_PAINT - он это содержимое рисует...
default (2003-07-07 00:11:00) [8]
Ученик © (06.07.03 23:50)
что значит "Текст контрола меняется" тогда бы он и визуально менялся, так как считывание текущего времени идёт через каждую секунду(примерно) хотя там есть механизмы считывания времени если по каким-либо причинам WM_TIMER не пришло
default (2003-07-07 00:07:00) [9]
Morfein © (06.07.03 20:11)
да знаю я это всё...
можно и @text[1] передавать без всяких приведений
Ученик (2003-07-06 23:50:00) [10]
>Shluz © (02.07.03 12:24)
Текст контрола меняется и это показывает Spy++, только отрисовывается контрол по текущему времени.
Morfein (2003-07-06 20:11:00) [11]
>> default
Если ты не в курсе, переменная типа string не является указателем на массив байтов, которые как-бы хранятся в этой переменной после присвоения test:="text"#0;
В SendMessage(clock, wm_settext, 0, cardinal(text)); функция будет расматривать text как адрес, а по этому адресу совершенно не текст лежит... Поэтому и должно быть использовано преведение типов - pchar(text).
default (2003-07-06 16:16:00) [12]
Morfein © (06.07.03 11:15)
это здесь не имеет смысла
хотя конечно если она описана как AnsiString ноль добавлять в конец бессмысленно, потому что он там уже есть для совместимости со строками типа PChar
ты наверно хотел об этом сказать
Morfein (2003-07-06 11:15:00) [13]
думается мне, что переменная text описана как string... да?
default (2003-07-05 00:01:00) [14]
кстати "время часов" на что нужно будет менять?
если своё время выставлять(отличное от системного), то это можно организовать
default (2003-07-04 22:46:00) [15]
Shluz © (04.07.03 20:35)
самое интересно что в WinSight32 при посылке тобой WM_SETTEXT часам - текст ИЗМЕНЯЕТСЯ, но визуально остаётся прежним
когда WM_SETTEXT уже не твоё отправляется меняется и значение в WinSight32 и визуально !? может "часы" "левое значение" на WM_GETTEXT - возвращают?!точнее то которое хочет "поставить" чужая программа, хотя видно что при посылке WM_SETTEXT (не тобой)
никаких специально флагов о том что это сообщение послано откуда-то извне нет!?
Shluz (2003-07-04 20:35:00) [16]
каждую минуту посылается!!!! глупый спор!!! :((
Игорь Шевченко (2003-07-04 19:37:00) [17]
Shluz © (04.07.03 19:08)
Никто этому окну не посылает WM_SETTEXT
Shluz (2003-07-04 19:08:00) [18]
>Игорь Шевченко шпион SPY++ (MicroSoft) отслеживает все сообщения окна...ну аналог WinSight32 в комплекте Delphi (только интересней)
Игорь Шевченко (2003-07-04 14:56:00) [19]
Shluz © (04.07.03 12:34)
Откуда сведения ?
Shluz (2003-07-04 12:34:00) [20]
говорю же адрест сообщение получает!!! wm_paint тут не причем...
тест времени устанавливается именно WM_SETTEXT