目前我通过EnumWindows检查HWND是否为控制台并检查ClassName。
function EnumWindows(AHandle: HWND; AParam: LPARAM): BOOL; stdcall;
var
classname: array[0.. 255] of Char;
begin
GetClassName(AHandle, classname, 255);
if classname = 'ConsoleWindowClass' then
begin
// do something
Result := False;
end
else
Result := True;
end;
我想知道是否有更好的方法来完成这样的事情?
检查Style(或/和ExStyle)会“更好”吗?
答案 0 :(得分:0)
您可以使用INotifyPropertyChanged
和AttachConsole
检测其他进程是否提供控制台。还有一点需要注意:有些控制台窗口没有FreeConsole
- 这里AttachConsole
返回GetConsoleWindow
。 this github repository中对此行为有一个非常好的解释。
声明:
0
枚举进程:
function AttachConsole(dwProcessID: Integer): Boolean; stdcall; external 'kernel32.dll';
function FreeConsole(): Boolean; stdcall; external 'kernel32.dll';
function GetConsoleWindow: HWND; stdcall; external kernel32;
积分: