Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Systemweite Textausgabe (https://www.delphipraxis.net/8952-systemweite-textausgabe.html)

CrashMan 15. Sep 2003 19:50


Systemweite Textausgabe
 
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

CrashMan 16. Sep 2003 13:11

Re: Systemweite Textausgabe
 
*wiedernachobenholt*
Keiner weiß antwort? :freak:

Problem 1 ist schon gelöst ^^ :dancer: :dancer2:

CrashMan :coder:
:bouncing4: :bounce2: :bounce1:

CrashMan 16. Sep 2003 14:35

Re: Systemweite Textausgabe
 
Ok soweit sogut.

Groß-Kleinschreibung und so funktioniert alles.
Nur ein Problem hab ich immernoch:
Ich kann keine Zeichen ausgeben...

Falls ihr net wisst was ich meine kann ich nachher schon eine Version hochladen...

CrashMan

Jan 16. Sep 2003 18:22

Re: Systemweite Textausgabe
 
Hallo CrashMan,
entschuldige, dass ich dir leider auch nicht weiterhelfen kann, ich wollte nur mal fragen, was der Quelltext, den du da oben gepostet hast bewirkt. "Systemweite Textausgabe", soll das heißen, dass ich egal wo ich mich gerade befinde Text ausgegeben bekomme? Was ich nämlich mal programmieren wollte war nen Programm, welches, während ich mich in einem Vollbildmodus befinde, Änderungen in meinem Winamp (Liedtitel) über der derzeitigen Anwendung ausgibt ohne dass die Anwendung minimiert oder inaktiv wird. Wenn das sowas ist könntest du mir da vielleicht mal grad ein paar erklärende worte zum Qtext geben, damit ich das umsetzen kann.
Gruß
Jan

CrashMan 16. Sep 2003 18:50

Re: Systemweite Textausgabe
 
Also bei dem QT mach ich das folgend:
Ich bin irgentwo, z.B. im NotePad oder sonstwo. Dort drück ich F5 und der schreibt an die Position wo ich gerade bin das Wort, welches ich auf F5 gespeichert hab. Also z.B. "Hallo, ich bin der CrashMan"

Falls du WinAmp steuern möchtest hab ich auch noch eine Idee:
1) Für CS und HL gibts/gabs HLamp
2) Allgemein geh mal in den Thread auf DelphiForum.de den ich oben gepostet habe. Dort ist ein Link zu Torry. Auf der Seite lädst du dir den HotKeyManager.
Danach kannst du im OnCreate reinschreiben
Delphi-Quellcode:
HKM.AddHotKey(116); HKM.AddHotKey(117); HKM.AddHotKey(118); HKM.AddHotKey(119); HKM.AddHotKey(120); HKM.AddHotKey(121); HKM.AddHotKey(122);
Das addet F5-F11 zum HotKeymanager (Name HKM).
Dann bei dem HKM gehst du auf events. dort kannst du dann per
Delphi-Quellcode:
If HotKey = 116 then
Den HotKey abfragen und mit der WinAmpApi oder so Winamp steuern (Boardsuche)

CrashMan

Jan 19. Sep 2003 15:26

Re: Systemweite Textausgabe
 
Hallo Crashman, leider hast du mich nicht ganz verstanden. Was ich brauchte war einfach ne Textausgabe, die sich VOR alles andere schiebt, ohne dass ich irgendwas klicke.
Wie ich Winamp steuere weiss ich schon, aber trotzdem danke für die Erklärung :]
es ist halt nur das problem der ausgabe, halt wie ich text vor ne d3d anwendung z.b. schmeisse, oder ne ogl anwendung.
Naja, vielleicht weiss ja noch wer anders weiter.
Gruß
Jan


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:02 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