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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.08.2012, 22:38   #11
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

Только
Код:
GetWindowThreadProcessId(hWND, PID);
потому что возвращает она id потока, а не поцесса.
Somebody вне форума Ответить с цитированием
Старый 08.08.2012, 22:54   #12
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Somebody, процессов не существует. Почитайте про многозадачность системы.
Существует главный поток, который является основным т.к. его выделяет система под загружаемый код и для системы тот является потоком, а для нас именуется процессом т.к. этот поток исполняет другой код, а тот в свою очередь рождает нити связанные с этим потоком, и они для этого процесса пудут его потоками.

Самый простой абстрактный пример - TreeView

Если у нитей нет овер9000 видимых окон, то проблем не будет т.к. функция вернет ID потока который явл. основным.
Человек_Борща вне форума Ответить с цитированием
Старый 08.08.2012, 23:07   #13
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Человек_Борща, вы чего курили?
параметры функции прочитайте, и что она делает, а потом уже чтото говорите.
пытаться открыть поток это нонсенс...
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 08.08.2012, 23:24   #14
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Ой, что-то перепутал..
Переделал:
Код:
var
  hWND:THandle;
  hProccess:DWORD;
  PID:DWORD;
begin
  PID:=0;
  hWND:=0;
  hProcess:=0;
  hWND:=FindWindow(nil,PChar('Название окна'));
  if hWND <> 0 then
  begin
   if IsHungAppWindow(hWND) then
   begin
    GetWindowThreadProcessId(hWND, @PID);
    if PID <> 0 then 
    begin
    hProcess:=OpenProcess(PROCESS_TERMINATE,False,PID);
    try
      if hProcess <> 0 then
      begin
      
     if not TerminateProcess(hProcess,0) then
     ShowMessage('Failed to terminate target hung process') else
     begin
       ShellExecute(...) //перезапускаем процесс...
     end;
     end;
    finally
       CloseHandle(hProcess);
    end;
    end;
   end;
  end;
end;
Человек_Борща вне форума Ответить с цитированием
Старый 09.08.2012, 07:27   #15
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Программа GUI
Я чето пропустил?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
перезапуск Кристинка89 Общие вопросы Delphi 9 10.03.2012 09:57
Перезапуск программы Михаил Юрьевич Общие вопросы Delphi 25 18.07.2011 10:29
Перезапуск приложения после падения Shouldercannon Общие вопросы Delphi 4 11.04.2010 17:42
Перезапуск DOS приложения по условию andrewua12 Фриланс 1 26.05.2009 00:02
Перезапуск DOS приложения по условию andrewua12 Операционные системы общие вопросы 2 25.05.2009 17:11