Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.08.2014, 17:02   #1
DarkSmile
Пользователь
 
Регистрация: 14.03.2013
Сообщений: 24
Восклицание Скрытие формы приложения

Здравствуйте! У меня такая задача, есть программа имеющая форму и несколько кнопок. Мне нужно запустить эту программу в скрытом режиме, тобиш запустить и скрыть форму дабы об существовании проги было известно только в диспетчере, но иметь полный доступ ко всем ее компонентам. Форма появляется не сразу и по моему не является главной. Пробовал сделать так:
Код:
CreateProcess(PChar('system.exe'), nil, nil, nil, true, CREATE_NO_WINDOW, nil, nil, SI, PI);
  repeat h := FindWindowA(nil, 'Files explorer');
  until h <> 0;
  repeat until IsWindowVisible(h);
  ShowWindow(h, SW_HIDE);
Но форма се равно появляется на секунду только после чего исчезает. Пробовал еще создать процесс с флагом CREATE_SUSPENDED но в таком случае я не могу получить хендл формы. Скажите пожалуйста как быть.
DarkSmile вне форума Ответить с цитированием
Старый 20.08.2014, 18:04   #2
beegl
instagram
Участник клуба
 
Аватар для beegl
 
Регистрация: 24.05.2008
Сообщений: 1,451
По умолчанию

Скрытие формы приложения

Код:
  private
    { Private declarations }
    procedure AppMinimize(Sender: TObject);
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
procedure TForm1.AppMinimize(Sender: TObject);
begin
  ShowWindow(Application.Handle, SW_HIDE);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
    if Owner is TWinControl then         // Owner might be of type TService
    if Application.MainForm <> nil then
    begin
      Application.MainForm.Visible := False;
    end;
  Application.OnMinimize:=AppMinimize;
  Application.OnRestore:=AppMinimize;
  Application.Minimize;
  AppMinimize(@Self);
end;
procedure TForm1.FormActivate(Sender: TObject);
begin
    if IsWindowVisible(Application.Handle) then
    ShowWindow(Application.Handle, SW_HIDE);
end;
beegl вне форума Ответить с цитированием
Старый 20.08.2014, 19:24   #3
DarkSmile
Пользователь
 
Регистрация: 14.03.2013
Сообщений: 24
По умолчанию

Дак в том то и дело, что скрывать нужно не мою программу.
DarkSmile вне форума Ответить с цитированием
Старый 20.08.2014, 22:07   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
CREATE_NO_WINDOW
0x08000000



The process is a console application that is being run without a console window. Therefore, the console handle for the application is not set.

This flag is ignored if the application is not a console application, or if it is used with either CREATE_NEW_CONSOLE or DETACHED_PROCESS.
Так что этим не скрыть.
А вот зато в STARTUPINFO насколько я понимаю есть поле wShowWindow, куда можно прописать SW_HIDE, чтоб окно не показывалось. Вот эту фишку ты прорули подробнее.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.08.2014, 21:12   #5
DarkSmile
Пользователь
 
Регистрация: 14.03.2013
Сообщений: 24
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Так что этим не скрыть.
А вот зато в STARTUPINFO насколько я понимаю есть поле wShowWindow, куда можно прописать SW_HIDE, чтоб окно не показывалось. Вот эту фишку ты прорули подробнее.
Такое работает только с формами дельфи, а мне нужно скрыть форму приложения написанного на сях. Да и при таком раскладе теряется доступ к форме.
DarkSmile вне форума Ответить с цитированием
Старый 24.08.2014, 22:32   #6
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

Цитата:
Сообщение от DarkSmile Посмотреть сообщение
Такое работает только с формами дельфи, а мне нужно скрыть форму приложения написанного на сях. Да и при таком раскладе теряется доступ к форме.
Неужели. Pasckal в какой-то степени является родственником VS С.
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Старый 24.08.2014, 22:56   #7
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
Такое работает только с формами дельфи, а мне нужно скрыть форму приложения написанного на сях. Да и при таком раскладе теряется доступ к форме.
Не пишите ерунды. На уровне API все программы равны, в части окон уж точно. Если там не DirectX конечно.
Если там Win-окно, CreateProcess его скроет.

Цитата:
Неужели. Pasckal в какой-то степени является родственником VS С.
Pascal скорее дедушка VS C.

Последний раз редактировалось Человек_Борща; 24.08.2014 в 23:05.
Человек_Борща вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скрытие или закрытие главной формы mental Общие вопросы Delphi 6 11.10.2011 13:46
Скрытие окна консольного приложения padsyukin Общие вопросы Delphi 9 16.12.2010 18:15
Скрытие и отображения формы "Календарь" MickMick Microsoft Office Excel 10 06.12.2009 00:37
Скрытие формы SERG1980 Общие вопросы Delphi 3 23.10.2007 17:28
Скрытие главной формы во время работы приложения Gorin Общие вопросы Delphi 7 23.08.2007 19:44