AGB  ·  Datenschutz  ·  Impressum  







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

Text an Eingabezeile schicken

Ein Thema von Aike · begonnen am 17. Nov 2004 · letzter Beitrag vom 5. Feb 2005
Antwort Antwort
Seite 3 von 4     123 4      
Aike

Registriert seit: 2. Okt 2004
319 Beiträge
 
#21

Re: Text an Eingabezeile schicken

  Alt 22. Nov 2004, 22:13
Ich bin mit meinem Latein am Ende ...
Delphi-Hilfe:
Delphi-Quellcode:
type
  TRect = packed record
  case Integer of
    0: (Left, Top, Right, Bottom: Integer);
    1: (TopLeft, BottomRight: TPoint);
end;
Ich werd' noch bekloppt hier!
Achim
  Mit Zitat antworten Zitat
Benutzerbild von Dani
Dani

Registriert seit: 19. Jan 2003
732 Beiträge
 
Turbo Delphi für Win32
 
#22

Re: Text an Eingabezeile schicken

  Alt 23. Nov 2004, 00:55
Ganz ruhig

in einem TRect kannst du einen rechteckigen Bereich speichern (-> Rectangle).Aber Vorsicht: GetWindowRect speichert laut Beschreibung die absoluten Koordinaten des Controls, nicht dessen relative Position zum Parent-Fenster...


Wenn dir alles zu viel wird, beschreib doch mal was du genau machen willst und ich lass dir mal ein Delphi-Projekt zukommen...
Dani H.
  Mit Zitat antworten Zitat
Aike

Registriert seit: 2. Okt 2004
319 Beiträge
 
#23

Re: Text an Eingabezeile schicken

  Alt 23. Nov 2004, 20:47
Eigentlich find ich 's ziemlich ... doof, wenn du das für mich schreibst, aber mir fällt absolut nix besseres ein

Es ist so, dass die Nutzer meines Programmes die Möglichkeit haben sollen, einen (oder mehr) Sätze abspeichern zu können und diese per Makro oder Texteingabe aufrufen zu können; Beispiel: Strg+1 -> "Hallo, Welt!" bzw. "welt" -> "Hallo, Welt!". Dazu muss ich zu allererst wissen, wie das handle der Eingabezeile lautet.
Alles weitere dürfte klar sein: Mit SETTEXT (?) soll dann Text in die Eingabezeile geschrieben werden.

[edit]Nebenbei: "TRect.Create;" geht nicht. Muss ich ein Rect erst erzeugen? Oder wie kann ich damit arbeiten? im DP-Forum finde ich eigentlich nur Prozeduren, die das nutzen.[/edit]
Achim
  Mit Zitat antworten Zitat
Benutzerbild von Dani
Dani

Registriert seit: 19. Jan 2003
732 Beiträge
 
Turbo Delphi für Win32
 
#24

Re: Text an Eingabezeile schicken

  Alt 23. Nov 2004, 23:10
So, hab mir D4O mal runtergeladen...

das Chat-Eingabefeld ist kein Windows-Control und man kann daher auch den Text nicht mit SendMessage setzen. Was du höchstens machen könntest ist Tastaturanschläge zu simulieren.

Schau dir mal das kleine Programm im Anhang an, da sind auch Komponenten dabei, mit denen du ganz einfach Tastatureingaben an ein Fenster senden kannst.

Zitat:
Nebenbei: "TRect.Create;" geht nicht. Muss ich ein Rect erst erzeugen? Oder wie kann ich damit arbeiten? im DP-Forum finde ich eigentlich nur Prozeduren, die das nutzen.
TRect ist kein Nachfahre von TObject, sondern ein Record.
Angehängte Dateien
Dateityp: zip d2sendkeys.zip (30,0 KB, 23x aufgerufen)
Dani H.
  Mit Zitat antworten Zitat
Aike

Registriert seit: 2. Okt 2004
319 Beiträge
 
#25

Re: Text an Eingabezeile schicken

  Alt 24. Nov 2004, 01:02
Das bringt mich gleich zum Heulen.
Zum einen funktioniert das Programm nicht, denn WComp.dcu fehlt in SysHot.

Aber SendKeys sieht komplex aus. Da kommen mir schon die Tränen, wenn ich mir das durchlese.
Hab jetzt aber doch ein bisschen herumprobiert und es geschafft, "b" von "bla" an den Editor zu senden. Wenn ich allerdings ein zweites "b(la)" schicke, kriege ich eine Access-Violation, nachdem das "b" geschickt wurde. Außerdem bekomme ich die Fehlermeldung, dass "SendKey1 möglicherweise nicht initialisiert" worden ist.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var SendKey1:TSendKey;
begin
  TSendKey.Create(SendKey1);
  SendKey1.Keys:='bla';
  SendKey1.TitleText:='Unbenannt - Editor';
  SendKey1.execute;
end;
Die Violation tritt durch SendKey1.Keys auf, wie ich gerade herausgefunden hab. Alle anderen Zeilen funktionieren. Wenn ich "SendKey1.Keys:='bla';" weglasse, wird ein "t" gesandt
Achim
  Mit Zitat antworten Zitat
Benutzerbild von Dani
Dani

Registriert seit: 19. Jan 2003
732 Beiträge
 
Turbo Delphi für Win32
 
#26

Re: Text an Eingabezeile schicken

  Alt 24. Nov 2004, 19:00
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var SendKey1:TSendKey;
begin
  SendKey1 := TSendKey.Create(Self);
  try
   SendKey1.Keys:='bla';
   SendKey1.TitleText:='Unbenannt - Editor';
   SendKey1.execute;
  finally
   SendKey1.Free;
  end;
end;
Vielleicht wäre es besser, wenn du vor diesem Projekt noch ein wenig Grundlagenforschung zum Thema OOP und Delphi-Language betreibst (Bücher...)
Dani H.
  Mit Zitat antworten Zitat
Aike

Registriert seit: 2. Okt 2004
319 Beiträge
 
#27

Re: Text an Eingabezeile schicken

  Alt 24. Nov 2004, 20:19
Boar, wir hatten OOP in der schule (letztes Jahr) und es war einfach nur Müll
Der Fehler war ... dumm von mir. Hab nicht nachgedacht, denn normalerweise kenn' ich die Technik(en) von regist, ini und StringList

Das funktioniert jetzt also schonmal, zumindest mit dem Editor. Bei D4O funktioniert es irgendwie nicht. Ich habe es mit TitleText:='4';, TitleText:='Offenbarung'; und TitleText:='Coming'; probiert, hat aber alles keinen Erfolg gezeigt.

Jetzt ist aber die Frage, wie ich Makros erstellen kann, sodass z.b. STRG+1 den Text "bla" erzeugt. Im Idealfall sollte es auch möglich sein, den Text "bla" auszugeben, sobald "bl" geschrieben wurde, aber das ist nicht so wichtig und sicher zu kompliziert. Natürlich müssen diese Makros aus D4O gestartet werden können, ohne dass mein eigenes Programm im Vordergrund bzw. fokusiert ist.

[edit]
Haha! Es macht sich alles! Also Shortcuts erstellen kann ich jetzt (quasi und improvisiviert) über eine HotKey-Komponente einen Shortcut erzeugen. Allerdings funktioniert das ja nicht global. Kann ich dazu einen ActionListener (Gibt 's das überhaupt? Das klingt einfach passend.) benutzen?
[/edit]
Achim
  Mit Zitat antworten Zitat
Benutzerbild von Dani
Dani

Registriert seit: 19. Jan 2003
732 Beiträge
 
Turbo Delphi für Win32
 
#28

Re: Text an Eingabezeile schicken

  Alt 24. Nov 2004, 21:38
Mit der Komponente aus SysHot.pas kannst du globale Hotkeys erzeugen. Du findest sie hier

Damit würde ich zunächst mal schauen, welches Fenster während des Spiels den Fokus hat (MSDN-Library durchsuchenGetForegroundWindow).

Die Eigenschaft TitleText kannst du leer lassen, prüfe lieber "manuell" mit GetForeGroundWindow, GetWindowText und GetWindowClassName, ob D4O im Vordergrund ist. Wenn du dennoch TitleText verwenden willst, denke daran, dass du hier den *exakten* Fenstertitel eingeben musst, nicht nur einen Teilstring.
Dani H.
  Mit Zitat antworten Zitat
Aike

Registriert seit: 2. Okt 2004
319 Beiträge
 
#29

Re: Text an Eingabezeile schicken

  Alt 24. Nov 2004, 23:17
Ok, das ist ... kompliziert. Ich werde nicht ganz schlau aus der .pas bzw. dem Beispielprogramm (welches sich nicht starten lässt).

Die Funktion AddHotKey(VirtKey: TVirtKey; Modifiers: THKModifiers) kommt mir Spanisch vor.
Ich kann zum Beispiel Alt+F5 regisitrieren (AddHotKey(vkF5, [hkAlt])), aber wo wird denn angegeben, wofür Alt+F5 stehen soll? Dann gibt 's da auch noch die Funktionen "HotKeyItem" und "KeyToVirtKey", von denen ich nicht weiß, ob ich die irgendwie brauche
Achim
  Mit Zitat antworten Zitat
Benutzerbild von Dani
Dani

Registriert seit: 19. Jan 2003
732 Beiträge
 
Turbo Delphi für Win32
 
#30

Re: Text an Eingabezeile schicken

  Alt 24. Nov 2004, 23:33
Die Komponente TSyshotKey erzeugt einen Event OnHotKey, wenn einer der registrierten Hotkeys gedrückt wurde. Du kannst durch einen Index überprüfen, welcher der Hotkeys es war. In den Anhang findest du die fehlende WComp.pas, habbisch vergessen in das Archiv zu packen

Damit sollte sich das Programm starten lassen! Du musst nur die Units Sendkeys.pas, SysHot.pas und WComp.pas in das LIB-Verzeichnis (oder irgendein Verzeichnis das in der Bibliothek eingetragen ist) kopieren.
Angehängte Dateien
Dateityp: pas wcomp.pas (1,3 KB, 13x aufgerufen)
Dani H.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


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 20:19 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