![]() |
|
#1
|
||||
|
||||
![]() Доброго времени суток!
Тип приложения: консольное. Как скрыть себя, т.е. консоль? Например, пользователь вводит команду "showgui" и появляется форма с кнопочками и всякими другими контролами, консоль исчезает. Пользователь закрывает окно - консоль опять появляется. Известен метод через FindWindow и ShowWindow, но не подходит. Заранее спасибо. Работа пpогpаммиста и шамана имеет очень много общего: оба боpмочyт непонятные слова, совеpшают непонятные действия и не могyт объяснить, как оно pаботает. Последний раз редактировалось 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. Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
Этот пользователь сказал Спасибо angvelem за это полезное сообщение: | ||
Amgsys HQ (13.09.2012)
|