内部控制台应用程序 -GetOpenFileName()
显示Handle := FindWindow(Nil, Pchar(ConsoleTitle))
OpenFile 对话框模式到控制台窗口。是否可以创建我自己的表单模式并将其显示到控制台窗口?
问问题
2109 次
1 回答
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.
于 2012-05-27T11:45:57.930 回答