Grüße
DP-Community
Unwissender sucht Wissenden
Also ich habe den Übeltäter, bzw. den Hergang schon beim Debuggen entdeckt.
Und zwar, wenn ich auf ausloggen drücke, dann wird folgende Proceduren ausgelöst:
Delphi-Quellcode:
procedure TForm1.btnCloseClick(Sender: TObject);
begin
btnStart.Enabled := true;
btnClose.Enabled := false;
equalTimer.Enabled := false;
Logout;
ActionList.Items.Add('@'+FormatDateTime('hh:mm', Now) + ': Logout erfolgreich!');
exit;
end;
Delphi-Quellcode:
procedure TForm1.LogOut;
var
browser: TWebBrowser;
begin
browser := TWebBrowser.Create(nil);
browser.ParentWindow := HWND(HWND_MESSAGE);
browser.Navigate('http://88.198.6.23/freewar/internal/logout.php');
repeat
Sleep(50);
Application.ProcessMessages;
until browser.ReadyState >= READYSTATE_COMPLETE;
browser.Free;
end;
Danach kann es sein, das er gerade in der Bewegungs-Prozedur war.
Hier ist nun das Dilemma, das er die Repeat-Schleife nicht mehr verlässt, und somit das Programm auch nicht normal beendet werden kann. Ich weiß aber nicht, wie ich dies verhindern kann.
Delphi-Quellcode:
procedure TForm1.move(a: string);
var
_move: TWebBrowser;
begin
{
destination:
MoveLeft
MoveRight
MoveUp
MoveUpLeft
MoveUpRight
MoveDownLeft
MoveDownRight
MoveDown
}
a:= 'javascript:'+a+'()';
_move := TWebBrowser.Create(nil);
_move.ParentWindow := HWND(HWND_MESSAGE);
_move.Navigate('http://88.198.6.23/freewar/internal/map.php');
repeat
Sleep(50);
Application.ProcessMessages;
until _move.ReadyState >= READYSTATE_COMPLETE;
_move.Navigate(a);
repeat // In dieser Schleife
Sleep(50); // bleibt er manchmal hängen
Application.ProcessMessages; //
until _move.ReadyState >= READYSTATE_COMPLETE; //
_move.Free;
end;
MfG
Lars S.
Wer nicht mit der Zeit geht, geht mit der Zeit.