![]() |
|
|
#1
|
||||
|
||||
|
Доброго времени суток!
Тип приложения: консольное. Как скрыть себя, т.е. консоль? Например, пользователь вводит команду "showgui" и появляется форма с кнопочками и всякими другими контролами, консоль исчезает. Пользователь закрывает окно - консоль опять появляется. Известен метод через FindWindow и ShowWindow, но не подходит. Заранее спасибо. Последний раз редактировалось Amgsys HQ, 13.09.2012 в 00:47. |
|
#2
|
||||
|
||||
|
Вариант:
Код:
program console;
{$APPTYPE CONSOLE}
uses
Windows, SysUtils;
function GetConsoleWindow : HWND; stdcall; external 'Kernel32.dll';
var
SI : TStartupInfo;
PI : TProcessInformation;
St : String;
Wnd : HWND;
begin
Wnd := GetConsoleWindow;
FillChar(SI, SizeOf(TStartUpInfo), 0);
SI.cb := SizeOf(TStartUpInfo);
SI.dwFlags := STARTF_USESHOWWINDOW;
SI.wShowWindow := SW_SHOWNORMAL;
WriteLn('Введите команду');
WriteLn;
while True do
begin
ReadLn(St);
St := AnsiUpperCase(St);
if (St = 'E') or (St = 'EXIT') then
Break;
if (St = 'SG') or (St = 'SHOWGUI') then
begin
if CreateProcess(NIL, 'notepad.exe', NIL, NIL, False, NORMAL_PRIORITY_CLASS, NIL, NIL, SI, PI) then
begin
ShowWindow(Wnd, SW_HIDE);
if WaitForSingleObject(PI.hProcess, INFINITE) = WAIT_OBJECT_0 then
CloseHandle(PI.hProcess);
CloseHandle(PI.hThread);
ShowWindow(Wnd, SW_SHOW);
end;
end;
end;
end. |
| Этот пользователь сказал Спасибо angvelem за это полезное сообщение: | ||
Amgsys HQ (13.09.2012)
| ||