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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.12.2010, 23:34   #1
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию Кхм, как подвесить свою программу..

Всем привет!

Другого названия темы придумать я не смог .

Собственно зачем мне это нужно?
Проверить работоспособность функции, а так-как в системе сложно что-либо подвесить(Вообще не желательно) то, я решил написать то, что при запуске подвесит само себя.

Ну к примеру то же консольное окно.

Собственно как заставить программу повиснуть?

ADDED

Вопрос отвалился:
Код:
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils,Windows;

var
  b:Boolean;

begin
  b:=True;
  while b do
end.
Вешает программу , вешает проц на 50%+

p.s. Почему нет кнопки "Код" в режиме быстрого редактирования сообщения? (Руками теги муторно писать)

Последний раз редактировалось Человек_Борща; 22.12.2010 в 00:00.
Человек_Борща вне форума Ответить с цитированием
Старый 22.12.2010, 00:33   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а можно еще Sleep на большое время поставить.

и кстати, я так полагаю это функция на проверку наличия ответа от окна?
если да то тестируй лучше на окнах
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 22.12.2010, 02:03   #3
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Код:
Sleep(Infinite);
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 22.12.2010, 10:48   #4
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

Код:
repeat
until 2>3
SERG1980 вне форума Ответить с цитированием
Старый 22.12.2010, 23:19   #5
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Пепел Феникса, да именно эту функцию и тестирую.. Но на консолях не работает..

Хатя все предложенные варианты вроде и работают. Сейчас на окнах опробую..
Человек_Борща вне форума Ответить с цитированием
Старый 23.12.2010, 08:24   #6
Johnson
кривокодер ;)
Форумчанин
 
Аватар для Johnson
 
Регистрация: 20.06.2008
Сообщений: 707
По умолчанию

Подвесить процесс надо именно? Или загрузить процессор на максимум?

Ели первое - то
Код:
StopProcess(GetCurrentProcessId);
Если проц нагрузить - то попроси его сосчитать чтонить монументальное, Пи посчитать например до N-но знака...

Извиняюсь, StopProcess в моем модуле был... вот его код:
Код:
{
 Остановка всех нитей процесса.
 Если останавливается текущий процесс, то вызывающая нить не останавливается.
}
Function StopProcess(ProcessId: dword): boolean;
var
 Snap: dword;
 CurrTh: dword;
 ThrHandle: dword;
 Thread:TThreadEntry32;
begin
  Result := false;
  CurrTh := GetCurrentThreadId;
  Snap := CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0);
  if Snap <> INVALID_HANDLE_VALUE then
     begin
     Thread.dwSize := SizeOf(TThreadEntry32);
     if Thread32First(Snap, Thread) then
     repeat
     if (Thread.th32ThreadID <> CurrTh) and (Thread.th32OwnerProcessID = ProcessId) then
        begin
        ThrHandle := OpenThread(THREAD_SUSPEND_RESUME, false, Thread.th32ThreadID);
        if ThrHandle = 0 then Exit;
        SuspendThread(ThrHandle);
        CloseHandle(ThrHandle);
        end;
     until not Thread32Next(Snap, Thread);
     CloseHandle(Snap);
     Result := true;
     end;
end;
Так разморозить:
Код:
{ Запуск процесса остановленного StopProcess }
Function RunProcess(ProcessId: dword): boolean;
var
 Snap: dword;
 CurrTh: dword;
 ThrHandle: dword;
 Thread:TThreadEntry32;
begin
  Result := false;
  CurrTh := GetCurrentThreadId;
  Snap := CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0);
  if Snap <> INVALID_HANDLE_VALUE then
     begin
     Thread.dwSize := SizeOf(TThreadEntry32);
     if Thread32First(Snap, Thread) then
     repeat
     if (Thread.th32ThreadID <> CurrTh) and (Thread.th32OwnerProcessID = ProcessId) then
        begin
        ThrHandle := OpenThread(THREAD_SUSPEND_RESUME, false, Thread.th32ThreadID);
        if ThrHandle = 0 then Exit;
        ResumeThread(ThrHandle);
        CloseHandle(ThrHandle);
        end;
     until not Thread32Next(Snap, Thread);
     CloseHandle(Snap);
     Result := true;
     end;
end;
Щас пробежался по коду... вроде свой процесс нельзя остановить Используй дополнительное приложение... или вторую нить

На всякий случай - вот юниты с этими функциями:
Вложения
Тип файла: rar NativeAPI.rar (16.5 Кб, 8 просмотров)
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид}

Последний раз редактировалось Johnson; 23.12.2010 в 08:31.
Johnson вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как изменить эту программу чтобы она заработала? Анастасия91 Visual C++ 6 13.12.2010 08:05
Флешка зависла, что делать? Сергей Капустин Безопасность, Шифрование 7 01.11.2008 00:49
Как сделать программу, чтобы она запускалась везде? grenles Общие вопросы C/C++ 3 11.06.2008 21:10
как написать программу в Graphе,чтобы он рисовал спираль архимеда Pafnutiya Паскаль, Turbo Pascal, PascalABC.NET 1 07.10.2007 20:40
Как создать программу-панель (как панель Msoffice), чтобы была поверх всех окон Romanbl4 Общие вопросы Delphi 6 27.06.2007 17:23