Hallo zusammen,
ich möchte ein anderes Programm fernsteuern und benutze überwiegend WM_SETTEXT dafür. In einigen Feldern ist es jedoch notwendig, daß ein TAB hinterhergeschickt wird, weil die Software einen Lookup für andere (readonly) Felder des Formulars macht.
Nach vielen Versuchen gelingt mir dies nun auch mit sndkeys32.pas. Allerdings leider nicht immer.
Problem ist, daß manchmal (nicht rekonstruierbar unter welchen Bedingungen
) die Eingabe nicht im korrekten Feld (in der korrekten Anwendung schon) landet. Das ganze läuft dann so:
Delphi-Quellcode:
wnd := FindWindowEx(wndmain, 0, 'AfxOleControl42', nil);
if (wnd=0) then MainForm.CriticalError('Eingabefenster nicht gefunden!');
wnd := FindWindowEx(wnd, 0, 'SSCalendarMaskedEdit', nil); // Eingabefeld
if (wnd=0) then MainForm.CriticalError('Eingabefenster nicht gefunden!');
// Fokus setzen
SendMessage(wnd, WM_SETFOCUS, 0, 0);
Application.ProcessMessages;
Delay(500);
SendKeys(PChar(MeinWert), true);
Delay(500);
Delphi-Quellcode:
procedure Delay(const WaitTime: DWord);
var
Start: DWord;
begin
Start := GetTickCount;
repeat
ProcessMessages;
until (GetTickCount - Start) > WaitTime;
end;
Mir dem Delay habe ich rumgespielt, hilft aber nicht wirklich.
Hat jemand eine Idee, woran der falsche Fokus liegen könnte ?
lg
Sebastian