| Autor |
Beitrag |
benny1452
Hält's aus hier
Beiträge: 7
|
Verfasst: Di 23.09.08 10:29
Guten Morgen,
Es geht um einen Text den ich automatisch abtippen lassen möchte.
Jedoch hab ich die sendkey methode in vba schon ausprobier, klappt auch super, nun wollte ich mal fragen ob mir jemand was zu der sendkeymethode hier in delpihi erklären kann...gegoogelt hab ich selber schon...bekomm auch zum beispiel diesen code hier:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| procedure SendKeyString(KStr: String); var Scan: SHORT; key: Byte; i: Integer; 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; |
Das ist jetzt irgenein Beispiel...kann mir einer den code so umbauen das an ein aktives fenster z.B: www.delphi.de geschickt wird ?
danke schonmal
gruß benny
Moderiert von Gausi: Delphi-Tags hinzugefügt
|
|
Xentar
      
Beiträge: 2077
Erhaltene Danke: 2
Win XP
Delphi 5 Ent., Delphi 2007 Prof
|
Verfasst: Di 23.09.08 11:07
Was passiert, wenn du die Prozedur einfach mal aufrufst?
_________________ PROGRAMMER: A device for converting coffee into software.
|
|
benny1452 
Hält's aus hier
Beiträge: 7
|
Verfasst: Di 23.09.08 11:48
hi,
also wenn ich auf: Datei->Neu->Neue VCL Anwendung gehe, dann ein Button erstelle, auf den dann ein doppelklick mache und dort den code einfüge kommen 3 Fehler:
[Pascal Fehler] Unit1.pas(40): E2029 Deklaration erwartet, aber Dateiende gefunden
[Pascal Fehler] Unit1.pas(12): E2065 Ungenügende Forward- oder External-Deklaration: 'TForm1.Button1Click'[Pascal Fataler Fehler] Project2.dpr(5): F2063 Verwendete Unit 'Unit1.pas' kann nicht compiliert werden
ICh bin völliger anfänger, hab lediglich ein bisschen mit visual basic rumrogrammiert.
dies ist ja auch nur ein beispiel für eine Tastenkombi. Kann man daraus irgendwie das so hinbauen das ich nen ganzen satz schreiben lassen kann ?
Ob ich das prgramm am ende nur einfach ausführe oder auf nen button klicken muss ist egal...
danke schonmal
|
|
Grenzgaenger
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 23.09.08 12:12
In welchem Forum willst du jetzt die antworten? 
|
|
benny1452 
Hält's aus hier
Beiträge: 7
|
Verfasst: Di 23.09.08 12:54
hehe...ist mir eigentlich egal

|
|
benny1452 
Hält's aus hier
Beiträge: 7
|
Verfasst: Di 23.09.08 13:11
okay...für alle die den beitrag im anderen Forum nicht mitgelesen haben hier ein kleines Feedback.
der code sieht bis jetzt so aus:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs;
type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private public end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure SendKeyString(KStr: String); var Scan: SHORT; key: Byte; i: Integer; 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
SendKeyString('test');
end;
end. |
nun hab ich dussel nur noch ein paar kleine fragen:
ich muss doch nun z.B. wordpad öffnen und das dann als aktives fenster machen oder ?
Und wie lange hab ich dann vom ausführen unseres kleinen progs zeit das wordpad aktive zu setzten ?
danke schonmal
|
|
Xentar
      
Beiträge: 2077
Erhaltene Danke: 2
Win XP
Delphi 5 Ent., Delphi 2007 Prof
|
Verfasst: Di 23.09.08 14:14
1. Crossposts in andere Foren bitte verlinken
2. Sobald du auf den Button klickst, wird der Code ausgeführt. Du hast also "gar keine" Zeit, zu Wordpad zu wechseln (vielleicht einige wenige ns..) Ein Timer könnte helfen.
3. Hat das irgendeinen Grund, warum du mit sowas schwierigem anfängst, wenn du bisher von Delphi keine Ahnung hast?
_________________ PROGRAMMER: A device for converting coffee into software.
|
|
benny1452 
Hält's aus hier
Beiträge: 7
|
Verfasst: Di 23.09.08 14:23
okay....hier der link: www.delphipraxis.net...st944785.html#944785
Joa und wie ihr dort seht komm ich schonwieder nicht weiter. Ich bin gerad dabei herauszufinden an welche stelle ich diese funktion einbauen soll und was man alles deklarieren muss.
Delphi-Quelltext 1: 2: 3:
| time:=GetTickCount; while (GetTickCount-time < 5000 ) do application.ProcessMessages; |
ps: wie kann man den link eigentlich hinter ein anderes Wort verstecken, sodass man nur auf das wort klicken muss um den Link zu folgen ? Ich seh das schon so oft, weiß aber nich wie das geht ..
danke
gruß benny
|
|
Marc.
      
Beiträge: 1876
Erhaltene Danke: 129
Win 8.1, Xubuntu 15.10
|
Verfasst: Di 23.09.08 14:55
Time und GetTickCount sollten als LongWord oder Integer deklariert werden. Siehe dazu auch die DOH zum Thema GetTickCount (F1).
Application Processmessages sorgt dafür, dass die Fensternachrichten derweil abgearbeitet werden, damit dein Programm nicht einfriert.
Zum korrekten Verlinken: [url="Text"] www.delphi-forum.de[/url]
|
|