Thema: Delphi Threadlogik Problem

Einzelnen Beitrag anzeigen

Benutzerbild von alias5000
alias5000

Registriert seit: 10. Sep 2005
Ort: Heilbronn
268 Beiträge
 
#15

Re: Threadlogik Problem

  Alt 26. Aug 2008, 14:23
Zitat von stOrM:
Delphi-Quellcode:
procedure TIEWatcherThread.Execute;
var
  wndMain, wndChild: HWND;
begin
  b := False;
  while not (Terminated = True) do
  begin
    repeat
      wndMain := FindWindow('IEFrame', nil);
      if wndMain <> 0 then
      begin
        wndMain := FindWindow('#32770', 'Save Picture');
        wndChild := FindWindowEx(wndMain, 0, 'ComboBoxEx32', nil);
        wndChild := FindWindowEx(wndChild, 0, 'ComboBox', nil);
        wndChild := FindWindowEx(wndChild, 0, 'Edit', nil);
        Handle := wndChild; //kann man abkürzen, Handle gleich ben drüber zuweisen
        if Handle <> 0 then
        begin
          if not b then
          begin
            GenerateRndGuidFilename;
            b := True;
          end;
        end
        else
        if (Handle = 0) and b then //<---!!
          b := False;
      end;
    until Self.Terminated;
  end;
end;
Debugge an der markierten Stelle mal bitte durch, ob der Fall an der gewünschten Stelle eintritt. Es kann ja auch sein, dass dein Dialog nciht freigegeben, sondern nur versteckt wird. Dann wird das Handle ja nicht 0; das wäre ja theoretisch auch noch eine Möglichkeit.

Zitat von stOrM:
Pps. gibt es ggf. noch eine Möglichkeit zu verhindern, das der Thread 100% CPU schluckt?
Sleep ist dein Helfer
Im Interesse der Purierung des germanischen Ideoms ist es opertum den immensen Usus peregrieder Verben auf ein Minimum zu reduzieren.
--> www.lanchat2.de <---
  Mit Zitat antworten Zitat