Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.12.2008, 17:54   #1
Dr.Badnezz
Ученик
Форумчанин
 
Регистрация: 19.09.2008
Сообщений: 119
По умолчанию Изменить надписи на кнопках в Windows

Давно встечал программу, с помощью которой, все кнопки в Windows XP с надписями OK, Да, Нет, Отмена.... заменялись на свои надписи. Кто нибудь знает, как это реализуется средствами Delphi?
Dr.Badnezz вне форума Ответить с цитированием
Старый 20.12.2008, 12:34   #2
jone
Форумчанин
 
Аватар для jone
 
Регистрация: 27.09.2008
Сообщений: 152
По умолчанию

Код:
program Projectl;
windows,
Messages;
//Эта функция вызывается, когда найдено дочернее окно
function EnumChildWnd(h: hwnd): BOOL; stdcall;
begin
SendMessage(h,WM_SETTEXT,O,lparara(LPCTSTR('][ с тобой1
)));
Result:=true;
end;
//Эта функция вызывается, когда найдено главное окно
function EnuinWindowsWnd(h: hwnd): BOOL; stdcall;
begin
SendMessage(h,WM_SETTEXT,O,lparam(LPCTSTR('][ с тобой')));
EnumChildWindows(h,@EnumChildWnd,0);
end;
var
h:THandle;
begin
//Запускаем бесконечный цикл
while true do
begin
//Запускаем перечисление всех окон
EnumWindows(@EnumWindowsWnd,0);
//Делаем задержку в 1000 мс
h:=CreateEvent(nil, true, false, '') ;
WaitForSingleObject(h, 1000);
CloseHandle(h);
end;
end.
jone вне форума Ответить с цитированием
Старый 20.12.2008, 14:04   #3
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,544
По умолчанию

Набросал пример:
Код:
program Project1;

uses Windows, Messages, SysUtils;

const Count = 2;
      Replace: array[1..Count,1..2] of string =
      (('Отмена',  '[CANCEL]'),
       ('ОК', 'Жмякнуть'));

var MyPointer: Pointer;
    PStr: PChar;
    Str: string;

function MyCallbackFunction (H: HWND; P: Pointer): Bool; stdcall;
var I: Integer;
begin
  Result := True;
  GetWindowText (H, PStr, 255);
  Str := Trim (PStr);
  if Str <> '' then
  begin
    for I := 1 to Count do
    begin
      if Str = Replace[I,1] then
      begin
        SendMessage (H, WM_SETTEXT, 0, Integer (PChar (Replace[I,2])));
        Break;
      end; {if}
      end;
  end; {if}
  EnumChildWindows (H, @MyCallbackFunction, Integer (P));
end;

begin
  GetMem (PStr, 256);
  while True do
  begin
    EnumWindows (@MyCallbackFunction, Integer (MyPointer));
    Sleep (25);
  end; {while}
end.
Arigato вне форума Ответить с цитированием
Старый 20.12.2008, 15:28   #4
Dr.Badnezz
Ученик
Форумчанин
 
Регистрация: 19.09.2008
Сообщений: 119
По умолчанию

Спасибо вам!!!!!!!!!!!!!!
Dr.Badnezz вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Caption кнопки ПУСК (START) - изменить надпись на кнопке Пуск в Windows XP Altera Win Api 19 29.12.2011 15:49
Выравниевание в надписи shmelvs Microsoft Office Excel 1 28.07.2008 18:12
Многострочные надписи в узлах VirtualDrawTree Mitron Общие вопросы Delphi 4 01.02.2008 23:06
ПРОБЛЕМА С IE, уменьшились надписи PAVEL315 Свободное общение 6 12.01.2008 20:27
Программа для работы с мышкой!Информация о координатах, кнопках мышки!!! metamfetamin Помощь студентам 7 09.12.2007 12:01