powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Процессы
4 сообщений из 4, страница 1 из 1
Процессы
    #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
Процессы
    #32106710
alex_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вообще я всегда думал что в функцию Function NullThreadProc () : Longint; StdCall;
нужно передавать параметр типа поинтер (4 байта в смысле).
Во вторых трид это дщерь процесса, нет процесса нет трида. Значит нужно трид оставлять в памяти. Хотя окна можно поубивать, дело вкуса. Но вот что непонятно. ЗАЧЕМ ТРИД? сделай тотже пустой цикл в конце основного модуля да и все.
...
Рейтинг: 0 / 0
Процессы
    #32106975
StarWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попытаюсь перекомпилировать в код то что сказано в предыдущей мессаге :))
в основном потоке можно сделать что-то вроде
while true do
begin
// ваш код
...
Sleep(0); // отдадим операционке управление, так, на всякий случай
end
...
Рейтинг: 0 / 0
Процессы
    #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
4 сообщений из 4, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Процессы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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