Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Процессы / 4 сообщений из 4, страница 1 из 1
14.02.2003, 15:44
    #32106652
Наследники OIT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процессы
Хочу создать приложение без формы так чтобы оно не прекращалось после выполнения основного модуля, а оставалось в фоне. Пробую создать дополниетльный поток и запустить в нем процедуру с пустым цикллом, но почему-то она не запускается. Вот кусок кода:
hThread := CreateThread (nil, 0, @NullThreadProc, nil, 0, ThreadId);
ResumeThread (hThread);

где:

Function NullThreadProc () : Longint; StdCall;
Begin
While True Do Sleep(2000);
End;

Кто-нибудь знает как вообще можно решить такую проблему???
Заранее благодарен (quasar@front.ru)
...
Рейтинг: 0 / 0
14.02.2003, 16:50
    #32106710
alex_k
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процессы
вообще я всегда думал что в функцию Function NullThreadProc () : Longint; StdCall;
нужно передавать параметр типа поинтер (4 байта в смысле).
Во вторых трид это дщерь процесса, нет процесса нет трида. Значит нужно трид оставлять в памяти. Хотя окна можно поубивать, дело вкуса. Но вот что непонятно. ЗАЧЕМ ТРИД? сделай тотже пустой цикл в конце основного модуля да и все.
...
Рейтинг: 0 / 0
16.02.2003, 10:59
    #32106975
StarWind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процессы
попытаюсь перекомпилировать в код то что сказано в предыдущей мессаге :))
в основном потоке можно сделать что-то вроде
while true do
begin
// ваш код
...
Sleep(0); // отдадим операционке управление, так, на всякий случай
end
...
Рейтинг: 0 / 0
16.02.2003, 13:38
    #32106995
SiDen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процессы
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
var
  Msg: TMsg;

function HandlerRoutine( dwCtrlType :Longint ) :Bool; stdcall;
begin
  result := false;
  case dwCtrlType of
    CTRL_C_EVENT :              обработка 
    CTRL_BREAK_EVENT :       Ваших событий
    CTRL_CLOSE_EVENT:         тут
    CTRL_LOGOFF_EVENT: 
    CTRL_SHUTDOWN_EVENT : begin result:=true;Halt( 0 );end;
  end;
end;

begin

//Ваша программа

  SetConsoleCtrlHandler(@HandlerRoutine,true);
// Цикл бесконечный
  while GetMessage (Msg,  0 ,  0 ,  0 ) do
    begin
    TranslateMessage (Msg);
    DispatchMessage (Msg);
   end;
  SetConsoleCtrlHandler(@HandlerRoutine,false);
end;
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Процессы / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]