Einzelnen Beitrag anzeigen

Benutzerbild von Stony2k
Stony2k

Registriert seit: 21. Mai 2005
Ort: Moers
76 Beiträge
 
Delphi 7 Enterprise
 
#1

Virtuelle Betätigung der Return Taste

  Alt 22. Mär 2006, 18:28
Ich habe folgende Funktion:
Delphi-Quellcode:
function SendText( Command: String ): HWND;
var
    Handle, Handle1: HWND;
    i: Integer;
begin
    Handle1 := FindWindow('SphereSvr', 'SphereServer V0.56b-Nightly - MyShard (Running) ');
    //FindWindow('SphereSvr',nil);
    if ( Handle1 = 0 ) then
        Handle1 := FindWindow( 'sphereSvr', nil );

  if Handle1 = 0 then
    begin
        Result := 0;
        Application.MessageBox( PChar( 'Ultima Online Client must be started!'),'UO Commander - Error!', MB_OK+MB_ICONERROR );
        exit;
    end;
    Handle := GetDlgItem(Handle1, 11);
    //FindWindowEx(Handle,0,'Edit',nil);
    // Send an enter first
    SendMessage( Handle, WM_CHAR, 13, 0 );
    for i := 0 to length( Command ) do
        SendMessage( Handle, WM_CHAR, Ord( Command[i] ), 0 );
    // Send an enter at the end
    sleep(2000);
    SendMessage( Handle, WM_CHAR, 13, 0 );
    Result := Handle;

end;
Ich habe die Klasse des Fensters, und die ID des Edit-fensters innerhalb dieses Programmes per XSpy herausgefunden.

Sende ich nun einen Text per SendText('fgfdgdfgfdgd'); an dieses Edit-Feld, was auch klappt.
Normalerweise sendet die funktion danach ein Return. Das "sleep(2000);" habe ich Testweise mal eingebaut, weil ich dachte, dass das Return am Ende einfach zu schnell gesendet wird.

Aber dies klappt nicht. Der Text bleibt in dem Edit-Feld stehen, aber wird nicht bestätigt. Wenn ich nun manuell die Return Taste drücke, funktioniert es.

Was mache ich falsch?
  Mit Zitat antworten Zitat