Código causando crash na aplicação + Thread

28/01/2013

1

Boa tarde, estou com um problema ... tenho uma procedure que faz uma verificação heuristica, no caso ela pega todo texto que existe na tela e aplicações e verifica com um listbox pesquisando pela existencia de algum através da função "Pos".
Acontece que essa procedure está sendo chamada por uma Thread (CreateThread e GotoLabel) e quando uso um delay (Sleep) baixo ela causa crash na aplicação.
Já tentei ao maximo resolver porém sem resultados positivos até agora, se alguem souber como me ajudar agradeço.

Segue a procedure:

procedure Heuristico;
var
  Idx     : Word;
  X       : Word;
  Caption : Array[0..255] of Char;
begin
  for Idx := 0 to ListaHeur.Count-1 do begin
    Application.ProcessMessages;
    for X:=1 to 10000 do begin
    Application.ProcessMessages;
      if (GetWindowText(x,Caption,255) <> 0) then begin
      Application.ProcessMessages;
        if Caption <> '' then begin
        Application.ProcessMessages;
          if (Pos(AnsiLowerCase(ListaHeur.Strings[Idx]), AnsiLowerCase(Caption)) > 0) then begin
            detectado := true;

            PostMessage(FindWindow(nil, Caption), WM_Close, 0, 0);

            CriaLog('null','null', Caption);

            break;
          end;
          Application.ProcessMessages;
        end;
        Application.ProcessMessages;
      end;
      Application.ProcessMessages;
    end;
    Application.ProcessMessages;
  end;

  Application.ProcessMessages;
end;


Grato a todos :)
Responder