AGB  ·  Datenschutz  ·  Impressum  







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

sendkey methode umbauen

Ein Thema von benny1452 · begonnen am 23. Sep 2008 · letzter Beitrag vom 23. Sep 2008
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von alleinherrscher
alleinherrscher

Registriert seit: 8. Jul 2004
Ort: Aachen
797 Beiträge
 
Delphi XE2 Professional
 
#11

Re: sendkey methode umbauen

  Alt 23. Sep 2008, 13:21
Die Frage müsstest du dir teilweise selbst beantworten können: Wann wird der Code ausgeführt? -> Wenn du auf den Button klickst. Allerdings siehst du den 'test' - Text nirgendwo, weil du praktisch auf dein eigenes Formular tippst. Du musst also irgendwie das Fenster, wie z.B. Wordpad in den vordergrund holen, bevor du tippst.

Such also mal nach SetForegroundWindow
„Software wird schneller langsamer als Hardware schneller wird. “ (Niklaus Wirth, 1995)

Mein Netzwerktool: Lan.FS
  Mit Zitat antworten Zitat
benny1452

Registriert seit: 23. Sep 2008
Ort: HH
11 Beiträge
 
#12

Re: sendkey methode umbauen

  Alt 23. Sep 2008, 13:28
okay werd ich mal machen....aber könnte man nicht eine Pause von ungefähr 5 sekunden einbauen bevor er: TEST schreibt ?
Dann hätte ich also 5 Sekunden Zeit WordPad zu öffnen.
  Mit Zitat antworten Zitat
Benutzerbild von alleinherrscher
alleinherrscher

Registriert seit: 8. Jul 2004
Ort: Aachen
797 Beiträge
 
Delphi XE2 Professional
 
#13

Re: sendkey methode umbauen

  Alt 23. Sep 2008, 13:44
Zitat von benny1452:
okay werd ich mal machen....aber könnte man nicht eine Pause von ungefähr 5 sekunden einbauen bevor er: TEST schreibt ?
Dann hätte ich also 5 Sekunden Zeit WordPad zu öffnen.
Du kannst auch Wordpad direkt durch dein Programm öffnen lassen(Stichwort hierfür ist ShellExecute)

Natürlich kannst du auch ne 5 Sekunden Pause einbauen (mit sleep(5000) ) aber das halte ich nicht für sehr sinnvoll. Mir ist eh noch nicht so ganz klar, was du mit dem Programm machen willst...
„Software wird schneller langsamer als Hardware schneller wird. “ (Niklaus Wirth, 1995)

Mein Netzwerktool: Lan.FS
  Mit Zitat antworten Zitat
benny1452

Registriert seit: 23. Sep 2008
Ort: HH
11 Beiträge
 
#14

Re: sendkey methode umbauen

  Alt 23. Sep 2008, 14:07
Ich hab mir mal die sleep funktion angeschaut und herausgekommen ist folgendes:

Diese Funktion hab ich versucht einzubauen:

Delphi-Quellcode:
time:=GetTickCount;
while (GetTickCount-time < 5000 ) do
 application.ProcessMessages; //sonst friert das Programm ein
und hier nochmal der ganze code nachher hab ich das noch an der falschen stelle eingefügt oder sowas ^^

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}


procedure SendKeyString(KStr: String);
var
  Scan: SHORT;
  key: Byte;
  i: Integer;
  time: Longint;
begin
  for i := 0 to length(KStr) do begin
    key := Byte(Kstr[i]);
    Scan := MapVirtualKey(key, 0);
    keybd_event(key, Scan, 0, 0);
    keybd_event(key, Scan, KEYEVENTF_KEYUP, 0);
  end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
time:= GetTickCount;
while (GetTickCount-time < 5000) do
 application.ProcessMessages; //sonst friert das Programm ein



SendKeyString('test');


end;
end.
Ich bekomme aber noch diese fehler hier:
[Pascal Hinweis] Unit1.pas(32): H2164 Variable 'time' wurde deklariert, aber in 'SendKeyString' nicht verwendet
[Pascal Fehler] Unit1.pas(43): E2064 Der linken Seite kann nichts zugewiesen werden
[Pascal Fataler Fehler] Project1.dpr(5): F2063 Verwendete Unit '..\..\Desktop\Unit1.pas' kann nicht compiliert werden

danke nochmal für deine geduld =)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.622 Beiträge
 
Delphi 12 Athens
 
#15

Re: sendkey methode umbauen

  Alt 23. Sep 2008, 14:28
time ist eine lokale Variable von SendKeyString, Du willst aber im ButtonClick darauf zugreifen.

[edit] Außerdem ist "time" ein unglücklich gewählter Name, da es auch eine Funktion dieses Namens gibt. [/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
benny1452

Registriert seit: 23. Sep 2008
Ort: HH
11 Beiträge
 
#16

Re: sendkey methode umbauen

  Alt 23. Sep 2008, 14:40
ups..ja stimmt natürich...das problem hab ich jetzt gelöst....da smit den 5 sekunden pause klappt auch wunderbar.

Aber warum bekomm ich jetzt diese ausgabe: 14:33 23.09.2008514:33 23.09.2008 ?

Das ist doch zum mäuse melken, würde meine omi jetzt sagen

Nach deinem EDIT:

hhm ich hab jz alles was: "time" hieß unbenannt in "pause"
ich bekomm aber immernoch die zeit+datum ausgegeben anstatt mein bespieltext: TEST

  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.622 Beiträge
 
Delphi 12 Athens
 
#17

Re: sendkey methode umbauen

  Alt 23. Sep 2008, 14:55
Ich habe ein bisschen suchen müssen, aber versuch es mal mit dieser Funktion: Klick
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
benny1452

Registriert seit: 23. Sep 2008
Ort: HH
11 Beiträge
 
#18

Re: sendkey methode umbauen

  Alt 23. Sep 2008, 15:05
okay...das klingt ja nach ungefähr dem gleichen...

Wo kann man denn da seinen Text bzw. die einzelnen Buchstaben eingeben ?
ich denke mal in so einer zeile hier:

Delphi-Quellcode:
if lWithShift then
      keybd_event(VK_SHIFT, 0, 0, 0);
VK_SHIFT bedeutet, dass die shifttaste gedrückt werden soll...das ist mir soweit klar aber wozu sind die drei Nullen dahinter ?

könntest du mal so eine beispielzeile posten ?

danke
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.622 Beiträge
 
Delphi 12 Athens
 
#19

Re: sendkey methode umbauen

  Alt 23. Sep 2008, 15:08
http://msdn.microsoft.com/de-de/ms64...us,VS.85).aspx
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von alleinherrscher
alleinherrscher

Registriert seit: 8. Jul 2004
Ort: Aachen
797 Beiträge
 
Delphi XE2 Professional
 
#20

Re: sendkey methode umbauen

  Alt 23. Sep 2008, 15:37
So könnte es gehen, aber wie gesagt, sehr sinnvoll ist das nicht:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}


procedure SendKeyString(KStr: String);
var
  Scan: SHORT;
  key: Byte;
  i: Integer;
  time: Longint;
begin
  for i := 0 to length(KStr) do begin
    key := Byte(Kstr[i]);
    Scan := MapVirtualKey(key, 0);
    keybd_event(key, Scan, 0, 0);
    keybd_event(key, Scan, KEYEVENTF_KEYUP, 0);
  end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var tick,tack:integer; //lokale Variablendeklaration, gilt nur in dieser Procedure
begin

tick:= GetTickCount;
tack:= GetTickCount;

while (tack-tick < 5000) do
 begin
   application.ProcessMessages; //sonst friert das Programm ein
   sleep(20); //sonst ist die CPU Auslastung sehr hoch
   tack:=GetTickCount;
 end;


SendKeyString('test');


end;
end.

und nochwas wichtiges: Benutz doch bitte mal die Suchfunktion. Wir haben hier sehr viele Themen schonmal besprochen und du findest in der Regel immer eine passende Antwort mit der Suchfunktion. Wenn man richtig programmieren will, muss man sich manchmal auch selbst durchbeißen...
„Software wird schneller langsamer als Hardware schneller wird. “ (Niklaus Wirth, 1995)

Mein Netzwerktool: Lan.FS
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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