内置控制台应用程序 - GetOpenFileName()
,Handle := FindWindow(Nil, Pchar(ConsoleTitle))
向控制台窗口显示OpenFile对话框模式。是否可以创建并向控制台窗口显示我自己的表单模式?
答案 0 :(得分:4)
将控制台窗口设置为表单的窗口所有者,并在显示表单时将其禁用。如下所示:
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils,
windows,
forms,
Unit1 in 'Unit1.pas' {Form1};
const
ConsoleClass = 'ConsoleWindowClass';
var
console: HWND;
len: DWORD;
title: array [0 .. MAX_PATH] of Char;
begin
try
len := GetConsoleTitle(title, SizeOf(title));
Win32Check(Bool(len));
console := FindWindow(ConsoleClass, title);
Win32Check(Bool(console));
Form1 := TForm1.Create(nil);
try
EnableWindow(console, False);
try
Form1.HandleNeeded;
SetWindowLongPtr(Form1.Handle, GWLP_HWNDPARENT, console);
Form1.ShowModal;
finally
EnableWindow(console, True);
end;
finally
Form1.Free;
end;
except
on E:Exception do
Writeln(E.Classname, ': ', E.Message);
end;
end.