Большой Воронежский Форум
» Программирование>Обманные часы (помогите делферы!)
kriko 17:38 01.04.2008
У меня возникла такая задача: все мы каждый день видим часы в левом нижнем углу экрана,и вот я хочу сделать так, чтобы ДРУГОЕ время. Задача не в том чтобы тупо перевести время,а сделать так чтобы сами часики пока ложное время.


С помощью этой функции, и зная хэндл часов можно узнать что они показывают:

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:
видим часы в левом нижнем углу экрана

а у меня там ПУСК [Ответ]
kriko 17:45 01.04.2008
Во блин ОПИСАЛСЯ!
В ПРАВОМ НИЖНЕМ УГЛУ
[Ответ]
kriko 17:46 01.04.2008
Но суть вопроса то от этого не меняется.... [Ответ]
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;

Не выходит! [Ответ]
hmur 22:23 01.04.2008

Сообщение от kriko:
сделать так чтобы сами часики пока ложное время.

если не секрет,зачем??? [Ответ]
kriko 22:28 01.04.2008
Ну типа прикол такой! [Ответ]
kriko 22:30 01.04.2008
А потом, может там че другое написать можно! Будет ведь забавно!!! [Ответ]
HepB 00:09 02.04.2008
TrayClockWClass
попробуй с этим классом поиграйся [Ответ]
Van der Bot 00:41 02.04.2008
А нельзя просто часы подвести? [Ответ]
HepB 00:44 02.04.2008
Van der Bot, он хочет там матом написать...это НЕОребзо [Ответ]
kriko 09:16 02.04.2008

Сообщение от HepB:
он хочет там матом написать

Ваще то не матом, но идею ты уловил!

Проблема в том, я не знаю как играться с этим классом! Выше я привел примеры что я могу и делаю, и что не получается. И дело не в том чтобы подвести часы, а том как свой текст написать. Причем тем же шрифтом, и под тем же фоном! Потому как идею спрятать часы, а поверх свой битмэп воткнуть, мне не подходит!!! [Ответ]
DM76 10:26 02.04.2008
Все уже сделано за вас. С год назад такой вирус уже вычищали. Написано именно матом, но ессно часы лишь небольшой довесок ко всем остальным функциям вируса. Дык слово прописывается в ключе реестра, отвечающего за формат отображения времени. Из панели управления прописать в стандартах не получится - там проверка на допустимые символы. А через редактор реестра получится. т.е. меняете "H:mm:ss" на то что вам надо.
Добавление: сейчас проверил - не получается. Может перезагрузка нужна, но то что лечил исправлением в реестре - факт. Дерзайте.
Еще добавление: работает, но не каждый символ отображается - раз, перезагрузка нужна - два

Изображения
[Ответ]
kriko 17:25 02.04.2008
Спасибо конечно за инфу, но все же...Вариант с перезагрузой не катит! И еще одно замечание - ЭТО НЕ ВИРУС!!!
До пустим мне слова не надо, я просто хочу чтобы пользователь продолжал видеть время, но не то которое отсчитывает система, а то которое я ему хочу показать. Формат отображения данных меняться не должен! И я его не хочу менять...
Просто нужно подменить время! И все!!!! Вот к примеру, винда отсчитывает время и накапало там 14:32, а мне нужно чтобы те часы показали к примеру, 18:03. Но время на компе не переводить! [Ответ]
Вверх