AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Bildschirmtastatur Fehler, aber wo???

Bildschirmtastatur Fehler, aber wo???

Ein Thema von XXcD · begonnen am 8. Jun 2009 · letzter Beitrag vom 9. Jun 2009
Antwort Antwort
Seite 1 von 2  1 2   
Benutzerbild von XXcD
XXcD

Registriert seit: 19. Sep 2006
581 Beiträge
 
Delphi 2007 Professional
 
#1

Bildschirmtastatur Fehler, aber wo???

  Alt 8. Jun 2009, 21:59
Hallo,
ich bastel gerade eine kleine Bildschirmtastatur.
Da es ja auch ziemlich viele Tasten sind, wollte ich jetzt einfach von dem Button den ich klicke die Caption nehmen und senden.

Also ein Button wo "E" draufsteht soll dann auch "E" gesendet werden.


Ich versuche es gerade so, aber da funktioniert garnicht.
Delphi-Quellcode:
var
BtnCaption: TCaption;
...

BtnCaption:=TButton(Sender).Caption;
windows.SetForegroundWindow(hForeground);
keybd_event( Cardinal(BtnCaption), MapVirtualKey( Cardinal(BtnCaption), 0 ), 0, 0 );
keybd_event( Cardinal(BtnCaption), MapVirtualKey( Cardinal(BtnCaption), 0 ), KEYEVENTF_KEYUP, 0 );

...
...
procedure TForm3.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
hForeground := windows.GetForegroundWindow;
end;
Wo liegt denn da der Fehler?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.859 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Bildschirmtastatur Fehler, aber wo???

  Alt 8. Jun 2009, 22:06
Versuch mal statt
Cardinal(BtnCaption) Ord( BtnCaption[1])
Markus Kinzler
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Bildschirmtastatur Fehler, aber wo???

  Alt 8. Jun 2009, 22:07
Du darfst nicht den Caption-String nach Cardinal casten, sondern musst den ersten Buchstaben Caption[1] verwenden.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Benutzerbild von XXcD
XXcD

Registriert seit: 19. Sep 2006
581 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Bildschirmtastatur Fehler, aber wo???

  Alt 8. Jun 2009, 22:22
Ok so weit so gut das funktioniert, aber wenn ich eine Taste drücke und dann noch ne andere wird der erste buchstabe ersetzt.
Also wenn ich in eine Addressleiste "e" klicke kommt "e" und wenn ich "w" drücke kommt "w".
Eigentlich sollte ja dann da "ew" stehen.
  Mit Zitat antworten Zitat
Benutzerbild von XXcD
XXcD

Registriert seit: 19. Sep 2006
581 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Bildschirmtastatur Fehler, aber wo???

  Alt 9. Jun 2009, 14:29
Ich habe das Programm jetzt nochmal so getestet.
Mein Ergebnis:

-in Notepad funktioniert alles einwandfrei

-z.B. Im IE kann ich in der Adressleiste nichts eingeben.
Jeder neue Buchstabe den ich schreibe, überschreibt den alten.


So sieht mein Code aus:
Delphi-Quellcode:
procedure TForm3.standartkeyclick(Sender: TObject);
var
BtnCaption: TCaption;
begin
//letztes Fenster in den Vordergrund holen
windows.SetForegroundWindow(hForeground);
//Caption von Button auslesen
BtnCaption:=TButton(Sender).Caption;
//Caption Buchstabe als Tastendruck senden
keybd_event(ord(BtnCaption[1]), 0, 0, 0);
keybd_event(ord(BtnCaption[1]), 0, KEYEVENTF_KEYUP, 0);
end;
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.151 Beiträge
 
Delphi 12 Athens
 
#6

Re: Bildschirmtastatur Fehler, aber wo???

  Alt 9. Jun 2009, 14:34
Problem: wenn das IE-Adress-Edit neu selektiert (SetForegroundWindow) wird, dann wird der gesamte Inhalt markiert und mit dem nächsten Zeichen überschrieben.

theoretische Lösung: dein Programmfesnter darf nicht den Fokus erhalten ... ähnlich wie bei Hint-Fenstern.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PosEx im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
nat

Registriert seit: 10. Nov 2005
216 Beiträge
 
RAD-Studio 2009 Pro
 
#7

Re: Bildschirmtastatur Fehler, aber wo???

  Alt 9. Jun 2009, 14:37
oder er simuliert vor der taste noch einen tastendruck von "Ende" um ans ende des strings zu springen.
sollte eigentlich in dem fall seinen dienst auch tun.
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#8

Re: Bildschirmtastatur Fehler, aber wo???

  Alt 9. Jun 2009, 14:40
Zitat von nat:
oder er simuliert vor der taste noch einen tastendruck von "Ende" um ans ende des strings zu springen.
sollte eigentlich in dem fall seinen dienst auch tun.
Und wenn ich in der Adressleiste editieren will?
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
nat

Registriert seit: 10. Nov 2005
216 Beiträge
 
RAD-Studio 2009 Pro
 
#9

Re: Bildschirmtastatur Fehler, aber wo???

  Alt 9. Jun 2009, 14:46
das feature ist dann nicht implementiert!
ok, war auch eher ne notlösung. ist vielleicht wirklich nicht
so praktisch. mir ging das nur grad so durch kopf und da dachte
ich, ich lasse euch mal daran teilhaben!
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#10

Re: Bildschirmtastatur Fehler, aber wo???

  Alt 9. Jun 2009, 14:46
warum verwendest du überhaupt setforegroundwindow? Bei Bildschirmtastaturen stellt man eigentilch den Windowstyle so dass das Bildschirmtastaturfenster den Focus nicht bekommt.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:21 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