У меня возникла такая задача: все мы каждый день видим часы в левом нижнем углу экрана,и вот я хочу сделать так, чтобы ДРУГОЕ время. Задача не в том чтобы тупо перевести время,а сделать так чтобы сами часики пока ложное время.
С помощью этой функции, и зная хэндл часов можно узнать что они показывают:
function GetWindText(AHandle: THandle): String;
var cb : DWord;
begin
cb := SendMessage(AHandle, WM_GETTEXTLENGTH, 0, 0);
SetLength(Result, cb);
if cb > 0 then
SendMessage(AHandle, WM_GETTEXT, cb+1, LParam(@Result[1]));
end;
Вопрос в том, как изменить текст на часах,чтобы не менять время?
[Ответ]
hmur 17:42 01.04.2008
Сообщение от kriko:
видим часы в левом нижнем углу экрана
Но суть вопроса то от этого не меняется....
[Ответ]
fishca 22:10 01.04.2008
kriko, тебе надо знать хендл окна часов, тогда ты сможешь с ними делать все что угодно. При этом надо не забыть, что часы могут и не отображаться на понельке [Ответ]
kriko 22:14 01.04.2008
Получить хэндл окна это пустяки, а что делать дальше я не знаю!
var Wnd:hwnd;
begin
Wnd := FindWindow('Shell_TrayWnd', nil);
Wnd := FindWindowEx(Wnd, HWND(0), 'TrayNotifyWnd', nil);
Wnd := FindWindowEx(Wnd, HWND(0), 'TrayClockWClass', nil);
end;
Как написать там другой текст??? Не время!
[Ответ]
kriko 22:18 01.04.2008
Пытался вот таким образом менять текст:
procedure SetWindText(AHandle: THandle);
var q: pchar;
begin
q:='10:10';
SendMessage(AHandle, WM_SETTEXT, 0, LParam(q));
end;
Van der Bot, он хочет там матом написать...это НЕОребзо
[Ответ]
kriko 09:16 02.04.2008
Сообщение от HepB:
он хочет там матом написать
Ваще то не матом, но идею ты уловил!
Проблема в том, я не знаю как играться с этим классом! Выше я привел примеры что я могу и делаю, и что не получается. И дело не в том чтобы подвести часы, а том как свой текст написать. Причем тем же шрифтом, и под тем же фоном! Потому как идею спрятать часы, а поверх свой битмэп воткнуть, мне не подходит!!!
[Ответ]
DM76 10:26 02.04.2008
Все уже сделано за вас. С год назад такой вирус уже вычищали. Написано именно матом, но ессно часы лишь небольшой довесок ко всем остальным функциям вируса. Дык слово прописывается в ключе реестра, отвечающего за формат отображения времени. Из панели управления прописать в стандартах не получится - там проверка на допустимые символы. А через редактор реестра получится. т.е. меняете "H:mm:ss" на то что вам надо.
Добавление: сейчас проверил - не получается. Может перезагрузка нужна, но то что лечил исправлением в реестре - факт. Дерзайте.
Еще добавление: работает, но не каждый символ отображается - раз, перезагрузка нужна - два Изображения
Спасибо конечно за инфу, но все же...Вариант с перезагрузой не катит! И еще одно замечание - ЭТО НЕ ВИРУС!!!
До пустим мне слова не надо, я просто хочу чтобы пользователь продолжал видеть время, но не то которое отсчитывает система, а то которое я ему хочу показать. Формат отображения данных меняться не должен! И я его не хочу менять...
Просто нужно подменить время! И все!!!! Вот к примеру, винда отсчитывает время и накапало там 14:32, а мне нужно чтобы те часы показали к примеру, 18:03. Но время на компе не переводить!
[Ответ]