Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi sendkeys und Focus (https://www.delphipraxis.net/59614-sendkeys-und-focus.html)

slemke76 25. Dez 2005 21:30


sendkeys und Focus
 
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


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:34 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz