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