Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.18;
Скачать: CL | DM;

Вниз

Консоль в полно экранный режим   Найти похожие ветки 

 
Maksss   (2004-02-13 21:07) [0]

Не подскажите как свёрнутую в трей консоль развернуть в полноэкранный режим даже если она свёрнута ввиде окна?
setforegraundwindow и setactivewindow не помогуют совсем


 
Wizard_Ex ©   (2004-02-17 14:47) [1]

Разберись сам

Большой кусок кода:

function NT_GetConsoleDisplayMode(var lpdwMode: DWORD): Boolean;
type
 TGetConsoleDisplayMode = function(var lpdwMode: DWORD): BOOL;
 stdcall;
var
 hKernel: THandle;
 GetConsoleDisplayMode: TGetConsoleDisplayMode;
begin
 Result := False;
 hKernel := GetModuleHandle("kernel32.dll");
 if (hKernel > 0) then
 begin @GetConsoleDisplayMode :=
     GetProcAddress(hKernel, "GetConsoleDisplayMode");
   if Assigned(GetConsoleDisplayMode) then
   begin
     Result := GetConsoleDisplayMode(lpdwMode);
   end;
 end;
end;

function NT_SetConsoleDisplayMode(hOut: THandle; dwNewMode: DWORD;
 var lpdwOldMode: DWORD): Boolean;
type
 TSetConsoleDisplayMode = function(hOut: THandle; dwNewMode: DWORD;
 var lpdwOldMode: DWORD): BOOL;
 stdcall;
var
 hKernel: THandle;
 SetConsoleDisplayMode: TSetConsoleDisplayMode;
begin
 Result := False;
 hKernel := GetModuleHandle("kernel32.dll");
 if (hKernel > 0) then
 begin @SetConsoleDisplayMode :=
     GetProcAddress(hKernel, "SetConsoleDisplayMode");
   if Assigned(SetConsoleDisplayMode) then
   begin
     Result := SetConsoleDisplayMode(hOut, dwNewMode, lpdwOldMode);
   end;
 end;
end;

function GetConsoleWindow: THandle;
var
 S: AnsiString;
 C: Char;
begin
 Result := 0;
 Setlength(S, MAX_PATH + 1);
 if GetConsoleTitle(PChar(S), MAX_PATH) <> 0 then
 begin
   C := S[1];
   S[1] := "$";
   SetConsoleTitle(PChar(S));
   Result := FindWindow(nil, PChar(S));
   S[1] := C;
   SetConsoleTitle(PChar(S));
 end;
end;

function SetConsoleFullScreen(bFullScreen: Boolean): Boolean;
const
 MAGIC_CONSOLE_TOGGLE = 57359;
var
 dwOldMode: DWORD;
 dwNewMode: DWORD;
 hOut: THandle;
 hConsole: THandle;
begin
 if Win32Platform = VER_PLATFORM_WIN32_NT then
 begin
   dwNewMode := Ord(bFullScreen);
   NT_GetConsoleDisplayMode(dwOldMode);
   hOut := GetStdHandle(STD_OUTPUT_HANDLE);
   Result := NT_SetConsoleDisplayMode(hOut, dwNewMode, dwOldMode);
 end
 else
 begin
   hConsole := GetConsoleWindow;
   Result := hConsole <> 0;
   if Result then
   begin
     if bFullScreen then
     begin
       SendMessage(GetConsoleWindow, WM_COMMAND, MAGIC_CONSOLE_TOGGLE, 0);
     end
     else
     begin
       keybd_event(VK_MENU, MapVirtualKey(VK_MENU, 0), 0, 0);
       keybd_event(VK_RETURN, MapVirtualKey(VK_RETURN, 0), 0, 0);
       keybd_event(VK_RETURN, MapVirtualKey(VK_RETURN, 0), KEYEVENTF_KEYUP, 0);
       keybd_event(VK_MENU, MapVirtualKey(VK_MENU, 0), KEYEVENTF_KEYUP, 0);
     end;
   end;
 end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 s: string;
begin
 AllocConsole;
 try
   SetConsoleFullScreen(True);
   Write("full screen mode now");
   Readln(s);
   SetConsoleFullScreen(False);
 finally
   FreeConsole;
 end;
end;



Страницы: 1 вся ветка

Текущий архив: 2004.04.18;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.031 c
1-1080932509
xandro
2004-04-02 23:01
2004.04.18
Бегущая строка: Как убрать текст выведенный с помощью tetxtout


14-1079792350
Style
2004-03-20 17:19
2004.04.18
XML. Может кто объяснить почему так?


4-1076272889
Serge_
2004-02-08 23:41
2004.04.18
Реестр XP


1-1080291841
KSergey
2004-03-26 12:04
2004.04.18
Надо созда 2000 объектов TShape. Как ускорить?


14-1080541211
Layner
2004-03-29 10:20
2004.04.18
Кто смотрит "Момент истины" в 20.00 по ТВЦ???