Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как установить шрифт консольному приложению [D7, WinXP]


ANB ©   (2010-06-23 12:29:00) 

при запуске его через CreateProcess

Запускаю так :


 // Параметры процесса
 GetStartupInfo(lpStartupInfo);
 lpStartupInfo.cb := sizeof(TStartupInfo);
 lpStartupInfo.dwFlags :=
   STARTF_USESHOWWINDOW
 + STARTF_USESIZE + STARTF_USECOUNTCHARS {+ STARTF_USESTDHANDLES};
 lpStartupInfo.wShowWindow := SW_SHOWDEFAULT;
 case WinSizeType of
   0 : begin WinX := 132; WinY := 60; end;
   1 : begin WinX := 80; WinY := 50; end;
   2 : begin WinX := 80; WinY := 25; end;
   3 : begin WinX := 152; WinY := 76; end;
   4 : begin WinX := 110; WinY := 40; end;
   5 : begin WinX := edSizeWidth.AsInteger; WinY := edSizeHigh.AsInteger; end;
 else
   WinX := 80; WinY := 25;
 end;
 // lpStartupInfo.dwXSize := WinX * 8;
 lpStartupInfo.dwXSize := WinX * 10;
 lpStartupInfo.dwXCountChars := WinX;
 // lpStartupInfo.dwYSize := WinY * 12;
 lpStartupInfo.dwYSize := WinY * 18;
 lpStartupInfo.dwYCountChars := WinY;
 lpStartupInfo.lpTitle := PChar(EXEFileName);
 {
 lpStartupInfo.hStdOutput := ChildStdOutWr;
 lpStartupInfo.hStdError  := ChildStdOutWr;
 }
 // Диалог с параметрами, если надо
 if edIsShowCmd.Checked then begin
   if (ShowDialog('Запуск модуля'
   , RunParams + #13#10
   + #13#10
   + 'Рабочий каталог :' + #13#10 + WorkFolder + #13#10
   + #13#10
   + 'Запускать ?'
   , sdiConfirm, ['&Да', '&Нет']) 1) then Exit;
 end;
 if not CreateProcess(
   nil
  ,PChar(RunParams)
  ,nil
  ,nil
  ,False
  ,0                // creation flags
  ,nil      // pointer to new environment block
  ,PChar(WorkPath) // pointer to current directory name
  ,lpStartupInfo    // pointer to STARTUPINFO
  ,lpProcessInformation // pointer to PROCESS_INFORMATION
 )
 then Exception.Create('Ошибка при выполнении командной строки ' + #13#10 + RunParams);


Добился синхронного измения размера при установке шрифта в свойствах окна, но сам шрифт приходится :
1. Выбирать в свойствах
2. Надо как то указать его программе для расчета размера окна в пикселях.

Вариант - считать размер шрифта из свойств, но тоже не знаю как.


0x00FF00   (2010-06-30 00:13:00) [1]


> Нашел. Надо перед стартом ключи в реестре подкрутить.

Поведай свой секрет, Просветлённый =)
После тебя ещё 100500 человек тему прочтут, а решения так и не найдут) придётся бедолагам перелопачивать реестр самим. Нехорошо.


ANB   (2010-06-23 14:29:00) [2]

Нашел. Надо перед стартом ключи в реестре подкрутить.


ANB   (2010-06-23 14:07:00) [3]

1. Win XP
2. В делфи 7 прототипа нету
3. В консольное приложение вломиться не могу. Я его только запускаю. К тому же оно не одно. Т.е. нужно им управлять извне.


Игорь Шевченко   (2010-06-23 13:27:00) [4]

SetCurrentConsoleFontEx в программе ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо