Thema: Delphi Systemweite Textausgabe

Einzelnen Beitrag anzeigen

Benutzerbild von CrashMan
CrashMan

Registriert seit: 31. Jul 2003
Ort: //127.0.0.1/
65 Beiträge
 
Delphi 6 Personal
 
#1

Systemweite Textausgabe

  Alt 15. Sep 2003, 19:50
Ich hab eine Routine gefunden:
Delphi-Quellcode:
procedure PostKeyEx32(key: Word; const shift: TShiftState; specialkey: Boolean);
type
  TShiftKeyInfo = record
    shift: Byte;
    vkey: Byte;
  end;
  byteset = set of 0..7;
const
  shiftkeys: array [1..3] of TShiftKeyInfo =
    ((shift: Ord(ssCtrl); vkey: VK_CONTROL),
    (shift: Ord(ssShift); vkey: VK_SHIFT),
    (shift: Ord(ssAlt); vkey: VK_MENU));
var
  flag: DWORD;
  bShift: ByteSet absolute shift;
  i: Integer;
begin
  for i := 1 to 3 do
  begin
    if shiftkeys[i].shift in bShift then
      keybd_event(shiftkeys[i].vkey, MapVirtualKey(shiftkeys[i].vkey, 0), 0, 0);
  end;
  if specialkey then
    flag := KEYEVENTF_EXTENDEDKEY
  else
    flag := 0;
  keybd_event(key, MapvirtualKey(key, 0), flag, 0);
  flag := flag or KEYEVENTF_KEYUP;
  keybd_event(key, MapvirtualKey(key, 0), flag, 0);

  for i := 3 downto 1 do
  begin
    if shiftkeys[i].shift in bShift then
      keybd_event(shiftkeys[i].vkey, MapVirtualKey(shiftkeys[i].vkey, 0),
        KEYEVENTF_KEYUP, 0);
  end;
end;
Quelle: http://www.delphi-forum.de/

Aufgerufen wird die mit
Delphi-Quellcode:
PostKeyEx32(ord('A'), [ssShift], false) {Großschreibung}
PostKeyEx32(ord('A'), [], false); {Kleinschreibung}
Soweit sogut, aber meine Probleme:
1) Wie bekomm ich ein AnsiChar (string geht ja net bei ord()) in Uppercase?
2) Wie kann ich zeichen wie z.B. # § % ( & < > und so schreiben?
3) Oder kennt jemand eine einfachere/ besser Routine?

CrashMan
  Mit Zitat antworten Zitat