Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Zeichen zur eignen Form zur Weiterverarbeitung schicken (https://www.delphipraxis.net/175588-zeichen-zur-eignen-form-zur-weiterverarbeitung-schicken.html)

Furtbichler 2. Jul 2013 20:06

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.

EWeiss 2. Jul 2013 20:16

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

WoGe 2. Jul 2013 20:20

AW: Zeichen zur eignen Form zur Weiterverarbeitung schicken
 
Hi

wäre das http://delphi.about.com/od/adptips20...ltip1104_3.htm
das was Du suchst?

Gruß wo

Furtbichler 2. Jul 2013 20:50

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.

EWeiss 2. Jul 2013 20:52

AW: Zeichen zur eignen Form zur Weiterverarbeitung schicken
 
Zitat:

Zitat von Furtbichler (Beitrag 1220486)
Hi Emil, Hi Wo

SendKeys wird es wohl sein. Danke für den Hinweis und den Link.

Du kannst das Projekt Progcommand laden oder ich lade die Unit hier nochmal hoch.

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

Medium 2. Jul 2013 20:53

AW: Zeichen zur eignen Form zur Weiterverarbeitung schicken
 
Das Handle des Formulars brauchst du definitiv, das ließe sich mit MSDN-Library durchsuchenFindWindow() 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 MSDN-Library durchsuchenWM_KEYDOWN und analog dazu MSDN-Library durchsuchenWM_KEYUP, wobei das nicht mit Systemtasten geht. Mein persönlicher Favorit ist aber MSDN-Library durchsuchenSendInput(). Der große Nachteil von letzterem ist allerdings, dass das empfangene Fenster den Fokus haben muss, also ggf. erst diesen via MSDN-Library durchsuchenWM_SETFOCUS verpasst bekommen muss. Dafür gehen damit dann wirklich alle Tasten. Such dir wat aus :)

EWeiss 2. Jul 2013 21:10

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:
if LeftStr(vsKeyCmd, lPos) = '$(DATE)' then
begin
  Date := Now;

  DateTimeToString(DateTime, 'MMMM DD, YYYY', Date);
  SendKeys(PWideChar(DateTime));
  exit;
end;
gruss


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