Zeichen zur eignen Form zur Weiterverarbeitung schicken
Hi,
Gibt es eine einfache Möglichkeit, einem (eigenen) VCL-Formular, deren Instanz bekannt ist, Zeichen so zu schicken, das sie ganz normal verarbeitet werden, so als ob es Tastendrücke (nur Zeichen und Ziffern und ENTER) wären? Danke für Tipps. |
AW: Zeichen zur eignen Form zur Weiterverarbeitung schicken
Meinst Sendkeys?
Was anderes fällt mir da jetzt nicht ein. Hab da letztens ne angepasste SendKeys Unit hier hochgeladen da diese die ich gefunden habe nicht funktionieren mit 2010 zum Beispiel. gruss |
AW: Zeichen zur eignen Form zur Weiterverarbeitung schicken
|
AW: Zeichen zur eignen Form zur Weiterverarbeitung schicken
Hi Emil, Hi Wo
SendKeys wird es wohl sein. Danke für den Hinweis und den Link. |
AW: Zeichen zur eignen Form zur Weiterverarbeitung schicken
Zitat:
EDIT: Hab sie hochgeladen.. Bei einigen mußt du den Key mappen bei einer ausgabe als string.. aber ich denke das ist dir bekannt..
Delphi-Quellcode:
function GetKeyName(aKey:Byte): string;
var ScanCode: cardinal; KeyName: array[0..255] of char; begin Result := ''; ScanCode := (MapVirtualKey(byte(aKey), 0) shl 16); if ScanCode <> 0 then begin GetKeyNameText(ScanCode, KeyName, SizeOf(KeyName)); Result := KeyName; end; end; gruss |
AW: Zeichen zur eignen Form zur Weiterverarbeitung schicken
Das Handle des Formulars brauchst du definitiv, das ließe sich mit FindWindow() schon mal erledigen. Ab da gibt es dann mehrere Möglichkeiten. Zum einen das schon genannte SendKeys(), dann wären da noch direkt die Messages WM_KEYDOWN und analog dazu WM_KEYUP, wobei das nicht mit Systemtasten geht. Mein persönlicher Favorit ist aber SendInput(). Der große Nachteil von letzterem ist allerdings, dass das empfangene Fenster den Fokus haben muss, also ggf. erst diesen via WM_SETFOCUS verpasst bekommen muss. Dafür gehen damit dann wirklich alle Tasten. Such dir wat aus :)
|
AW: Zeichen zur eignen Form zur Weiterverarbeitung schicken
FindWindow ist in der Sendkey32 schon integriert incl. EnumWindow
Einfach AppActivate(WindowName) aufrufen damit wird der Focus zu Anwendung gesetzt. Letztendlich wird auch SendInput verwendet. Datum schicken!
Delphi-Quellcode:
gruss
if LeftStr(vsKeyCmd, lPos) = '$(DATE)' then
begin Date := Now; DateTimeToString(DateTime, 'MMMM DD, YYYY', Date); SendKeys(PWideChar(DateTime)); exit; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:11 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