Jak wykryc czy program nie odpowiada

0

jak w temacie...
otoz mam sobie program i nazywa sie on zalozmy program.exe ktory sie czesto zawiesza... jak sprawdzic czy ten program nie odpowiada a jesli nie odpowiada to go zrestarotowac ???

0

wysyłasz do niego przez sendmessage jakiś komunikat... jak nie odpowie po sekundzie to go restart!

0

wysyłasz do niego przez sendmessage jakiś komunikat... jak nie odpowie po sekundzie to go restart!

a moglbys to jakos mi na polski powiedziec :P bo ja nie kapuje :D ehehe jak postmessage i jak spr czy odp czy nie ???

0

Możesz zrobić tak:

W programie, który może się przywiesić:

const
 MY_MSG = 12345; // twoja unikalna wiadomość

{...}

private // albo public... nie ma znaczenia
procedure MyMessage(var Msg: TMessage); message MY_MSG;

{...}

procedure TForm.MyMessage(var Msg: TMessage);
begin

  // progs otrzymał twoją wiadomość i odpowiada na nią
  PostMessage(Msg.WParam, MY_MSG, Handle, 0); // jako wParam możesz podać Handle tego okna jakbyś chciał go wkorzystać potem, ale nie musisz

end;

W programie, który sprawdza przywieszkę:

const
 MY_MSG = 12345; // TAKA SAMA wiadomość jak w poprzednim progsie

{...}

private
procedure MyMessage(var Msg: TMessage); message MY_MSG;

{...}

procedure TForm.MyMessage(var Msg: TMessage);
begin

  // dostałeś odpowiedź, więc nie jest przywieszony

end;

procedure TForm.Button1Click(Sender: TObject);
var
 Hnd: THandle;
begin

 Hnd := FindWindow(nil, 'jakies okienko'); // znajdz jakos uchwyt szukanego okna
     if Hnd <> 0 then
        PostMessage(Hnd, MY_MSG, Handle, 0) // wysylasz swoją wiadomość i jako wParam dajesz Handle tego okna żeby było wiadomo gdzie wysłać odpowiedź

end;

Ciekawe czy sie gdzieś walnąłem :-D
Poza tym poczytaj HELPa :-P

0

ale chodzi o to ze program ktory sie zatnie nie jest moim programem... zalozmy ze program ktory chce sprawdzac bedzie sie nazywal internetexplorer :P i jak sie zetnie to chce zeby sie wylaczyli juz na wylaczenie znam procke..tylko jak spr czy tamta aplikacja sie zaciela ?? .. rozumiesh ???

0

torry:

function AppIsResponding(h: HWND): Boolean;
const
  { Specifies the duration, in milliseconds, of the time-out period }
  TIMEOUT = 50;
var
  Res: DWORD;
begin
  if h <> 0 then
    Result := SendMessageTimeOut(H,
      WM_NULL,
      0,
      0,
      SMTO_NORMAL or SMTO_ABORTIFHUNG,
      TIMEOUT,
      Res) <> 0
  else
    ShowMessage('Error');
end;

1 użytkowników online, w tym zalogowanych: 0, gości: 1