AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Probleme mit virtual keys

Ein Thema von Wotan · begonnen am 17. Sep 2003 · letzter Beitrag vom 18. Sep 2003
Antwort Antwort
Seite 1 von 2  1 2      
Wotan

Registriert seit: 22. Jul 2003
Ort: BRB
15 Beiträge
 
Delphi 6 Professional
 
#1

Probleme mit virtual keys

  Alt 17. Sep 2003, 10:58
morgen alle zusammen,

ich sende virtuelle tasten an ein dos-programm unter win98 (ibm thinkpad). klappt prima mit keyb_event(.....)

leider funktioniert es nicht mehr auf einem anderen rechner (toshiba tecra 8000), bei dem ebenfalls win98 installiert ist.
Enter funktioniert, aber nicht die pfeiltasten.

kennt jemand den grund ??

gruß wotan
Geht nicht, gibt's nicht.
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#2

Re: Probleme mit virtual keys

  Alt 17. Sep 2003, 12:14
Da kann ich dir ein traurig Lied singen.
Setz mal das EXTENDED Bit.
Die separaten Pfeiltasten und die Pfeiltasten auf dem Nummernblock unterscheiden sich durch dieses Bit. Was die Notebooktasten liefern steht in den Sternen.
  Mit Zitat antworten Zitat
Wotan

Registriert seit: 22. Jul 2003
Ort: BRB
15 Beiträge
 
Delphi 6 Professional
 
#3

Probleme mit virtual keys

  Alt 17. Sep 2003, 13:57
Wie mache ich das ? Nutze den folgenden Code:

keybd_event(VK_return, MapVirtualKey(VK_shift, 0), 0, 0);
Geht nicht, gibt's nicht.
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#4

Re: Probleme mit virtual keys

  Alt 17. Sep 2003, 14:12
Hier mal die Funktion mit allen Extras aus einem meiner Projekte.
Eine der Besonderheiten ist es, das die Funktion die Ziffernblocktasten auf die gewoehnlichen Tasten mappen kann. Einige Spiele kommen nicht mit allen Tasten zurecht.
Fuer dich ist wohl nur der Bereich von KEYEVENTF_EXTENDEDKEY interessant.

Delphi-Quellcode:
procedure StdKeyEvent(wScan: Word; dwFlags, dwExtraInfo: DWORD; Wait: Cardinal; NoNumPad: Boolean);
var
  Vk: Word;
begin
  if NoNumPad and ((wScan and $FF) in [$1C, $47, $48, $49, $4B, $4D, $4F, $50, $51, $52, $53]) then
    wScan := wScan and $FEFF;
  Vk := MapVirtualKey(wScan, 3);
  if Vk = 0 then
    Vk := MapVirtualKey(wScan, 1);
  if NoNumPad and ((wScan and $1FF) = $135) then
  begin
    Vk := VK_DIVIDE;
    wScan := MapVirtualKey(Vk, 0);
  end
  else
  if (Windows.GetKeyState(VK_NUMLOCK) and $1) <> 0 then
    case wScan and $FF of
      $47: begin Vk := Ord('7'); wScan := MapVirtualKey(Vk, 0); end;
      $48: begin Vk := Ord('8'); wScan := MapVirtualKey(Vk, 0); end;
      $49: begin Vk := Ord('9'); wScan := MapVirtualKey(Vk, 0); end;
      $4B: begin Vk := Ord('4'); wScan := MapVirtualKey(Vk, 0); end;
      $4C: begin Vk := Ord('5'); wScan := MapVirtualKey(Vk, 0); end;
      $4D: begin Vk := Ord('6'); wScan := MapVirtualKey(Vk, 0); end;
      $4F: begin Vk := Ord('1'); wScan := MapVirtualKey(Vk, 0); end;
      $50: begin Vk := Ord('2'); wScan := MapVirtualKey(Vk, 0); end;
      $51: begin Vk := Ord('3'); wScan := MapVirtualKey(Vk, 0); end;
      $52: begin Vk := Ord('0'); wScan := MapVirtualKey(Vk, 0); end;
      $53: begin Vk := VK_DECIMAL; wScan := MapVirtualKey(Vk, 0); end;
    end;
  if (wScan and $100) <> 0 then
  begin
    dwFlags := dwFlags or KEYEVENTF_EXTENDEDKEY;
    wScan := wScan and $FEFF;
  end;
  keybd_event(Vk, wScan, dwFlags, dwExtraInfo);
  if Wait > 0 then
    Sleep(Wait);
end;
[edit=Luckie]D-Tags hinzugefügt, folge Posting gelöscht. Mfg, Luckie[/edit]
  Mit Zitat antworten Zitat
Wotan

Registriert seit: 22. Jul 2003
Ort: BRB
15 Beiträge
 
Delphi 6 Professional
 
#5

Probleme mit virtual keys

  Alt 17. Sep 2003, 14:23
Das schaut ja schon sehr gut aus. Könntest du mir ein Beispiel geben, wie ich die Funktion für die normalen Pfeiltasten aufrufe !?

Gruß Wotan
Geht nicht, gibt's nicht.
  Mit Zitat antworten Zitat
Dannyboy

Registriert seit: 4. Aug 2003
Ort: Delphi-Heaven
418 Beiträge
 
Delphi 7 Personal
 
#6

Re: Probleme mit virtual keys

  Alt 17. Sep 2003, 14:34
Servus Wotan,
dafür nimmst Du das Beispiel mit diesen Api-Konstanten als Parameter:

VK_UP,
VK_DOWN,
VK_LEFT,
VK_RIGHT

Gruß Dannyboy
  Mit Zitat antworten Zitat
Wotan

Registriert seit: 22. Jul 2003
Ort: BRB
15 Beiträge
 
Delphi 6 Professional
 
#7

Re: Probleme mit virtual keys

  Alt 17. Sep 2003, 14:44
hi dannyboy,

das ist mir schon klar.

die frage ist, was ich für dwFlags und dwExtraInfo setzen muß !?
Geht nicht, gibt's nicht.
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#8

Re: Probleme mit virtual keys

  Alt 17. Sep 2003, 15:48
dwFlags kommt rein mit entweder KEYEVENTF_KEYDOWN oder KEYEVENTF_KEYUP.

dwExtraInfo ist egal. Den Wert kannst du im Programm das letztendlich eine WM_KEYDOWN oder WM_KEYUP Message bekommt, abrufen. Damit koenntest du dann unterscheiden woher der Tastenevent kommt. Leider markieren alle Treiber mit 0.
  Mit Zitat antworten Zitat
Wotan

Registriert seit: 22. Jul 2003
Ort: BRB
15 Beiträge
 
Delphi 6 Professional
 
#9

Re: Probleme mit virtual keys

  Alt 17. Sep 2003, 16:16
hi robert,

es hat leider nicht geklappt.

kann es sein, daß man die einstellungen für die verknüpfungen der dos-programme irgendwie anpassen muß oder daß die win98 versionen verschieden sind !???


ich weiß nicht weiter.

gruß wotan
Geht nicht, gibt's nicht.
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#10

Re: Probleme mit virtual keys

  Alt 18. Sep 2003, 07:36
Was willst du denn eigentlich generieren?
Hotkeys? Die koennten durchs Raster fallen, da sie moeglicherweise auf der Ebene unter keybd_event abgehandelt werden. Ctrl-Alt-Del z. B. wird tief im Treiber abgehandelt.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 16:16 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