So, ich habe das ganze nun folgendermassen gelöst:
Code:
function SendText( Command: String ): HWND;
var
Handle: HWND;
i: Integer;
begin
Handle := FindWindow( 'Ultima Online', nil );
if (
Handle = 0 ) then
Handle := FindWindow( 'Ultima Online Third Dawn', nil );
if
Handle = 0 then
begin
Result := 0;
MouseUpFix:=Result;
exit;
end;
// Send an enter first
SendMessage(
Handle, WM_CHAR, 13, 0 );
// Send the command char
{ //cChar := Config.GetString( 'commandchar' );
cChar := '.';
for i := 0 to length( cChar ) do
SendMessage(
Handle, WM_CHAR, Ord( cChar[i] ), 0 ); }
for i := 0 to length( Command ) do
SendMessage(
Handle, WM_CHAR, Ord( Command[i] ), 0 );
// Send an enter at the end
SendMessage(
Handle, WM_CHAR, 13, 0 );
Result :=
Handle;
end;
Code:
procedure Tfrm_main.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
If Button = mbLeft then
begin
image1.Picture:=img_btn_normal.Picture;
Label1.Top:=Label1.Top-2;
Label1.Left:=Label1.Left+1;
If MouseUpFix = 0 Then begin
Application.MessageBox( PChar( 'Der Ultima Online Client muss gestartet sein !'),'Fehler!', MB_OK+MB_ICONERROR );
MouseUpFix := 1;
end;
end;
end;
Funzt alles wunderbar.
Aber ich habe bemerkt, wenn man ganz schnell hintereinander auf das "Ok" der Fehlermeldung und auf das Image klickt, wird manchmal die Mouse Down nicht ausgeführt, heisst, das Label verschiebt sich immer weiter nach oben. Muss wohl was mit dem "Fokusverlust" zutun haben.
Wenn wer Rat weiss, der möge sich melden