Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Закрыть окно консоли в Delphi [WinXP]


NovaC ©   (2006-11-27 04:19:00) 

День добрый!

Если кто знает помогите пожалуста!
Как в консольном приложении в Delphi
закрыть это самое окно консоли для того чтобы программа работала в фоновом режиме
и как посредством Delphi добавлять и убирать программу в атозагрузку так
чтобы это работало в win98-2000-xp ?

Заранее спасибо за ответ . . .


Anatoly Podgoretsky   (2006-11-27 14:38:00) [1]

> Сергей М.  (27.11.2006 14:26:16)  [16]

MPUT *.txt


Сергей М.   (2006-11-27 14:26:00) [2]


> NovaC   (27.11.06 13:40) [13]
>
> Потому что я не знаю заранее сколько будет файлов


Т.е. тебя бы устроило нечто похожее на

НекийFTPКомпонент.ЗакинутьНаСервер(сам не знаю сколько файлов)

?


Anatoly Podgoretsky   (2006-11-27 14:15:00) [3]

> NovaC  (27.11.2006 13:28:10)  [10]

Смотри RFC по протоколу FTP и все станет понятно.


Cawa   (2006-11-27 13:51:00) [4]

И причем здесь отказ от использования Put несколько раз?


NovaC   (2006-11-27 13:40:00) [5]

Потому что я не знаю заранее сколько будет файлов
хотелось бы задать копирование например по маске...


Cawa   (2006-11-27 13:34:00) [6]

Мне совершенно не понятно, почему тебя не устраивает вызывать Put несколько раз?


Сергей М.   (2006-11-27 13:31:00) [7]


> А всё-таки какая есть альтернатива


Доп.поток


NovaC   (2006-11-27 13:28:00) [8]

с этим теперь понятно. спасибо

А всё-таки какая есть альтернатива TIdFTP.PUT
для копирования нескольких файлов, чтобы не вызывать
несколько раз PUT?


Сергей М.   (2006-11-27 13:23:00) [9]


> как сделать это без неё?


MyIdFTP := TIdFTP.Create(nil);
try
.. работат с MyIdFTP ..
finally
 MyIdFTP.Free;
end;


> за один вызов PUT копирует только один файл?


Увы и ах)


> Какая есть альтернатива для того чтобы работать хотя бы
> с двумя файлами?


Последоввательный вызов put() чем плох ?


> Если без без TIdFTP, то тогда как?


А чем плох TIdFTP ?


Cawa   (2006-11-27 13:20:00) [10]

Для того чтобы работать с компонентом TIdFTP (или с каким либо другим) нужно:
1- подключить нужный модуль (Uses IdFTP,еще какой нибудь модуль...)
2- описать переменную var MyFTP:TIDFTP;
3- осуществить выделение памяти и инициализацию необходимых для работы данных (в классах обычно для этого используют конструктор), поэтому пишем MyFTP:=TIDFTP.Create(nil); (по завершению работы не забываем убирать мусор MyFTP.Free;)


alex810   (2006-11-27 12:56:00) [11]

Нашел у себя в справочнике не знаю работает

Консольные приложения Win32 запускаются в командном окне. Для того, чтобы консольное приложение могло определить когда консоль закрывается, надо зарегистрировать консольный обработчик управления и в выражении case искать следующие значения:

CTRL_CLOSE_EVENT Пользователь закрывает консоль
CTRL_LOGOFF_EVENT Пользователь завершает сеанс работы (log off)
CTRL_SHUTDOWN_EVENT Пользователь выключает систему (shut down)
Как это делается, можно посмотреть в примере CONSOLE. Более подробную информацию можно посмотреть в руководстве Win32 application programming interface (API) в разделе SetConsoleCtrlhandler().


Anatoly Podgoretsky   (2006-11-27 12:52:00) [12]

> NovaC  (27.11.2006 12:41:05)  [5]

Если форма не нужна то просто не делай форму.


NovaC   (2006-11-27 12:41:00) [13]

Может я задаю совсем тупые вопросы, но хотелось бы поподробнее!?

Если форма не нужна - то как сделать это без неё???
Хотя бы в общих чертах!

Т.Е. за один вызов PUT копирует только один файл?
Какая есть альтернатива для того чтобы работать хотя бы с двумя файлами?

Если без без TIdFTP, то тогда как?


Сергей М.   (2006-11-27 12:09:00) [14]


> На сколько правильно в консольном приложении добавлять форму
> только для того чтобы положить на неё TIdFTP ?


Форма для этого совершенно не нужна.


> Как с помощью TIdFTP.PUT закидывать несколько файлов ?


Последовательно вызывая put().


> Можно ли как-то по другому без TIdFTP реализовать в консольном
> приложении сброс одновременно  нескольких файлов на FTP
> ?


Можно.


NovaC   (2006-11-27 12:04:00) [15]

программа сбрасывает на ftp файлы.

интерфейс через консольное окно, но мне нужно сделать так чтобы при запуске скажем с параметром /auto программа не открывала консольное окно, а загружалась в фоновом режиме и при изменении файла сбрасывала его на ftp.

Для автозагрузки есть несколько вариантов. Но я не уверен какой лучше в плане совместимости с размыми WIN.

И хотель бы ещё узнать:
На сколько правильно в консольном приложении добавлять форму только для того чтобы положить на неё TIdFTP ???
Как с помощью TIdFTP.PUT закидывать несколько файлов ???
Можно ли как-то по другому без TIdFTP реализовать в консольном приложении сброс одновременно  нескольких файлов на FTP ???

Заранее спасибо за ответ . . .


Cawa   (2006-11-27 08:36:00) [16]

Вы хоть видели где размещали свой вопрос?!!!!

Конференция "Сети" - любые вопросы связанные с программированием сетей и для Интернета.


Если тебе нухно чтобы твоя программа работала без каких либо окон, то просто их не создавай!!!

Вот тебе простой пример:

program InvisibleBeep;
uses  SysUtils;
var i:integer;
begin
 for i:=1 to 1000 do
 begin
   beep;
 end;
end.


как видишь - ни форм, ни {$APPTYPE CONSOLE}
прописывай необходимые модули создавай поток и радуйся жизни.

И еще одно насчет автозагрузки, прежде чем просто задавать вопрос ради того чтобы тебе на него ответели - рекомендую воспользоваться поисковыми системами. Если бы ВЫ поискали то уже бы знали ответ, а не ждали его!!!!

Счастливого Вам перемещения!!!:))


Сергей М.   (2006-11-27 08:24:00) [17]

Какое отношение это имеет к "Сетям" ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо