На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! user posted image
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.

Соблюдайте общие правила форума

Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как "свернуть" программу в трей.
3. Как "скрыться" от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как запустить программу/файл? (и дождаться ее завершения)
5. Как перехватить API-функции, поставить hook? (перехват сообщений от мыши, клавиатуры - внедрение в удаленное адресное прстранство)
... (продолжение следует) ...

Внимание:
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки - бан.
Мат в разделе - бан на три месяца...

Полезные ссылки:
user posted image MSDN Library user posted image FAQ раздела user posted image Поиск по разделу user posted image Как правильно задавать вопросы


Выразить свое отношение к модераторам раздела можно здесь: user posted image Rouse_, user posted image Krid

Модераторы: Rouse_, Krid
  
> Hint на системных кнопках , Как енто делается?
    Здраствуйте усе!!!

    Вопрос такой:

    Как или каким образом можно изменить значение hint'ов или по-русски "всплывающих подсказок" у системных кнопок, таких как сернуть, развенуть и закрыть. (Те что в правом верхнем углу имеются у каждой формы)?

    А изменить хочу значения англицкие на русские.

    P.S.
    Зарание спасибо,
    Программирую на Delphi 5.
      Довольно сложный вопрос. Так просто не сделаешь. Нужно отлавливать WM_NCMOUSEMOVE и WM_NCHITTEST в них блокировать системный хинт и отрисовывать свой. Нет временипример делать. Но тут еще одно - если ты их решил модифицировать, то тебе нужно еще и два системных меню русифицировать. то которое в заголовке формы и то которое в тулбаре внизу. Это на порядок проще и делается вот таким кодом:
      ExpandedWrap disabled
        unit Unit1;
         
        interface
         
        uses
          Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
         
        type
          TForm1 = class(TForm)
            procedure FormCreate(Sender: TObject);
          end;
         
        var
          Form1: TForm1;
         
        implementation
         
        {$R *.dfm}
         
        procedure ChangeMenuLanguage(AHandle: THandle);
        const
          RusTranscriptionCount = 6;
          SysMenuID: array [0..RusTranscriptionCount - 1] of UINT =
            (SC_RESTORE, SC_MOVE, SC_SIZE, SC_MINIMIZE, SC_MAXIMIZE, SC_CLOSE);
          RusTranscription: array [0..RusTranscriptionCount - 1] of String =
            ( '&Восстановить', '&Переместить', '&Размер', '&Свернуть',
              'Р&азвернуть', '&Закрыть'#9'Alt+F4');
        var
          SysMenu: HMENU;
          MenuItem: TMenuItemInfo;
          ItemCount, I, A: Integer;
          MenuString: array [0..MAXCHAR - 1] of Char;
        begin
          SysMenu := GetSystemMenu(AHandle, False);
          if SysMenu <> 0 then
          begin
            ItemCount := GetMenuItemCount(SysMenu);
            for I := 0 to ItemCount - 1 do
            begin
              ZeroMemory(@MenuItem, SizeOf(TMenuItemInfo));
              MenuItem.cbSize := SizeOf(TMenuItemInfo);
              MenuItem.fMask := MIIM_ID or MIIM_STRING or MIIM_BITMAP;
              MenuItem.dwTypeData := MenuString;
              MenuItem.cch := MAXCHAR;
              if GetMenuItemInfo(SysMenu, I, True, MenuItem) then
                for A := 0 to RusTranscriptionCount - 1 do
                  if SysMenuID[A] = MenuItem.wID then
                  begin
                    MenuItem.dwTypeData := PChar(RusTranscription[A]);
                    MenuItem.cch := Length(RusTranscription[A]);
                    if not SetMenuItemInfo(SysMenu, I, True, MenuItem) then RaiseLastOSError;
                  end;
            end;
          end;
        end;
         
        procedure TForm1.FormCreate(Sender: TObject);
        begin
          ChangeMenuLanguage(Handle);
          ChangeMenuLanguage(Application.Handle);
        end;
      1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
      0 пользователей:


      Рейтинг@Mail.ru
      [ Script execution time: 0,0193 ]   [ 15 queries used ]   [ Generated: 17.05.24, 10:13 GMT ]