Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi away-Programm (https://www.delphipraxis.net/17281-away-programm.html)

Neuni 2. Mär 2004 15:23


away-Programm
 
Hi,
der Titel is vielleicht nen bissl doof, aber ich möchte nen Programm schreiben, dass wenn ich es gestartet habe alle 5 Minuten "Bin weg" oder so in den Chat schreibt.
Is halt gedacht um den anderen mitzuteilen, dass ich kurz weg bin. Der Chat ist also im IE geöffnet, und dass eingabe-feld des Chats sollte dann alle paar minuten mit "Bin weg" gefüllt werden, und gesendet werden.
Am einfachsten wäre es glaub ich ne tastatureingabe zu simulieren, die alle paar minuten was in das aktuell ausgewählte Feld schreibt.

Danke für jede Hilfe!

-homer- 2. Mär 2004 15:29

Re: away-Programm
 
hi,

mach es doch mit dem Timer.

Delphi-Quellcode:
Chat.lines.add('Bin weg');
Chat ist ein MemoFeld und der Timer ist auf 5min eingestellt (Inteval).



-homer-

ps.: Oder willst du das so machen, dass der Text nur geschrieben wird, wenn du seit 5min nichts mehr an dem PC, oder deinem Chat getan hast?

Die Muhkuh 2. Mär 2004 15:30

Re: away-Programm
 
Ähm du solltest mal richtig lesen Homer!


Er will das wenn er chattet im IE, also nicht selber geproggter Chat, das dort reingeschrieben das er weg ist!

sakura 2. Mär 2004 15:32

Re: away-Programm
 
Suche mal nach Hier im Forum suchenformularfelder webseite

...:cat:...

Neuni 2. Mär 2004 16:32

Re: away-Programm
 
Die Suche half mir nich weiter, da die Themen dort auf selbstgeschriebene Browser bezogen sind.
Von mir aus schreib ich auch einen selber, aber das Problem ist ja, dass sich das Feld, dass ausgefüllt werden soll auf ner Homepage befindet. somit kann ich das ja nicht direckt ansteuern.

Kann man nicht eine Eingabe auf der Tastatur simulieren, die etwas in das ausgewählte Feld eingibt???

fkerber 2. Mär 2004 16:35

Re: away-Programm
 
Hi!

Ich glaube, die Schlüsselwörter waren etwas unglücklich.

Aber schau mal hier:

http://www.delphipraxis.net/internal...re+ausf%FCllen


Ciao fkerber

-homer- 2. Mär 2004 16:42

Re: away-Programm
 
hi,

schuldigung, muss mal lesen lernen :mrgreen: .


-homer-


ps.: Was heißt denn IE?

fkerber 2. Mär 2004 16:47

Re: away-Programm
 
Hi!

Zitat:

Zitat von -homer-
ps.: Was heißt denn IE?

IE=Internet Explorer

Ciao fkerber

Kinimod8 2. Mär 2004 16:47

Re: away-Programm
 
Zitat:

Zitat von -homer-
ps.: Was heißt denn IE?

InternetExplorer

Wusstest du das echt nicht?

-homer- 2. Mär 2004 16:55

Re: away-Programm
 
hi,

nice direkt zwei, die mir geantwortet haben. Sorry, nein ich wusste das echt nicht. Gehört das etwa zur Allgemeinbildung?

@neuni: Ich würde sagen, dass das nicht so ohne weiteres geht, da wenn du das zum Beispiel mit onKeyDown realisieren möchtest, dann musst du ja wissen, wie der das TextFeld heißt (in das du schrieben möchtest).

-homer-

Neuni 2. Mär 2004 16:56

Re: away-Programm
 
Kmisch, wenn man das nich weiß :roll:

Egal,
der Link zu dem Code, hat mir nich gerade geholfen, da ich 'n ziemlicher newbie bin und nich genau weiß wie ich das nu umsetzen soll. :gruebel:
Wär nett wenn mir das mal einer etwas genauer erklären könnte, da halt noch nich so viel erfahrung mit delphi hab :wall: . Also Sorry falls ichs mal wieder etwas genauer will...

Evian 2. Mär 2004 16:58

Re: away-Programm
 
Du könntest auch dein Programm im Hintergrund laufen lassen und das drücken der Dasten, also für "Bin weg" + Enter-Taste simulieren:

Tasten Simulieren

Neuni 2. Mär 2004 16:59

Re: away-Programm
 
@ homer: Stimmt, und das is ja nen Java-Applett wo der chat drinne is... :cry:

Aber gibts nich ne möglichkeit dass der das da eingibt, wo der courser gerade is??? also dieses blickende Teil im Edit?

Evian 2. Mär 2004 17:04

Re: away-Programm
 
Schau Dir mein Post an ... das ist recht einfach bei den Schweizern beschrieben und funzt 100 pro. Auch bei Java Applet!

Neuni 2. Mär 2004 17:46

Re: away-Programm
 
Der is echt gut der Schweizer, aber ich kann delphi noch nicht sehr gut, sodass ich das nich alles verstehe :wall: :wall: :wall: ...

Kann mir vielleicht jemand helfen, oder nen Beispiel Proggi schicken, weil bei mir kommen da ständig fehler und brauch das ganze dringend! :cry:

Bitte helft mir! :|

fkerber 2. Mär 2004 17:48

Re: away-Programm
 
Hi!

Dann sag uns deine Fehler, dann büglen wir das schon aus :mrgreen:

Ciao fkerber

Neuni 2. Mär 2004 17:55

Re: away-Programm
 
Das nich so das Problem, vielmehr, dass da irgendwelche Komponenten nicht gefunden werden & co.

Muss ich da noch Komponenten einfügen ins formular??

fkerber 2. Mär 2004 18:01

Re: away-Programm
 
HI!

Was kommen denn für Fehlermeldungen?
So lässt sich nur sehr schwer etwas sagen

Ciao fkerber

Kinimod8 2. Mär 2004 18:23

Re: away-Programm
 
Ich empfehle für das simulieren von Tastendrücken die Funktion SendKeys aus den SRUtils, eine Unit von Simon Reinhardt. Man schreibt einfach

Delphi-Quellcode:
sendkeys('Bin weg!');

Neuni 2. Mär 2004 18:34

Re: away-Programm
 
Das is mein Code, der voll mit Fehlern ist :cry: :
Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    TShiftKeyInfo = record
    shift: Byte;
    vkey: Byte;

    byteset = set of 0..7;

    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);

  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

  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
  Form1: TForm1;
  flag: DWORD;
  bShift: ByteSet absolute shift;
  i: Integer;


implementation

{$R *.dfm}

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; { For } 
  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;


procedure TForm1.FormCreate(Sender: TObject);
begin

end;

procedure TForm1.Button1Click(Sender: TObject);
begin
PostKeyEx32(Ord('D'), [], False);
end;

end.
@ Kinimod8: "SRUtils" was ist das denn, bzw. wo finde ich das auf der Homepage, die du angegeben hast?

CReber 2. Mär 2004 18:34

Re: away-Programm
 
Eintragung der Procedure zum versenden der simulierten Tasten:

Delphi-Quellcode:

type
  TForm1 = class(TForm)
  private
    { Private-Deklarationen }
    procedure PostKeyEx32(key: Word; const shift: TShiftState; specialkey: Boolean);
  public
    { Public-Deklarationen }
  end;
Procedure für das versenden ! (unter implementation einfügen)

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; { For } 
  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;
Beispiel zum versenden:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  // Simuliert die Linke Windows taste
  PostKeyEx32(VK_LWIN, [], False);

  // Simuliert den Buchstaben D
  PostKeyEx32(Ord('D'), [], False);

  // Simuliert die Tastenkombination Strg-Alt-C
  PostKeyEx32(Ord('C'), [ssctrl, ssAlt], False);
end;
Ist das von Swiss ich hoffe so hilft es dir mehr...

Neuni 2. Mär 2004 18:35

Re: away-Programm
 
Uuups..einmal zu viel


[gelöscht]

Kinimod8 2. Mär 2004 18:36

Re: away-Programm
 
Hab dir den direkten Link rausgesucht...

Neuni 2. Mär 2004 18:54

Re: away-Programm
 
@ hOnkibOnk: Bei mir kommen diese Fehler wenn ich das Programm strten will:


[Fehler] Unit1.pas(15): Ungenügende Forward- oder External-Deklaration: 'TForm1.PostKeyEx32'
[Fataler Fehler] Project2.dpr(5): Verwendete Unit 'Unit1.pas' kann nicht compiliert werden


Mein Code:
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 }
  procedure PostKeyEx32(key: Word; const shift: TShiftState; specialkey: Boolean);
public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation
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; { For }
  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;


{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
PostKeyEx32(Ord('D'), [], False);
end;

end.

Kinimod8 2. Mär 2004 18:59

Re: away-Programm
 
Wie wäre es mit meiner Lösung???

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  SRUtils, 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 TForm1.Button1Click(Sender: TObject);
begin
  SendKeys('Bin weg!');
end;

end.

Neuni 2. Mär 2004 19:08

Re: away-Programm
 
is ja hammer, das geht !!! :hello: :hello: :hello: :hello: :hello: :hello:


Und wie mache ich die Eingabe Enter, also zum abschicken?

Danke @ Kinimod8

fkerber 2. Mär 2004 19:17

Re: away-Programm
 
HI!

Probier mal hinter den String noch zu schreiben:

Delphi-Quellcode:
+#13#10
Ciao fkerber

Neuni 2. Mär 2004 19:35

Re: away-Programm
 
Cool, geht vielen Dank...nun is mein Proggi fast fertig!!! :dancer: Juhuuuuuu :spin2: *freu*

Danke nochmal euch allen

Kinimod8 3. Mär 2004 12:38

Re: away-Programm
 
Zitat:

Zitat von Neuni
is ja hammer, das geht !!! :hello: :hello: :hello: :hello: :hello: :hello:


Und wie mache ich die Eingabe Enter, also zum abschicken?

Danke @ Kinimod8

0 Problemo! 8)

Evian 11. Mär 2004 14:38

Re: away-Programm
 
SendKeys(#13);

Damitt würdest Du das drücken der Taste Enter senden...

MisterNiceGuy 21. Jun 2004 18:50

Re: away-Programm
 
Hi, wie kann ich die SOUtils.pas dauerhaft in meine Units integrieren?

Sodass sie bei jedem neuen Programm gleich drinstehen :)

fkerber 21. Jun 2004 18:58

Re: away-Programm
 
Hi!
Ich denke, dass ist einen neuen Thread wert, wie man sowas fest integriert.
Ist ja nicht nur auf die eine Unit zu beziehen :wink:

Ciao fkerber

rainerkunze124 6. Aug 2006 21:14

Re: away-Programm
 
Moinmoin,

wie kann ich mit Sendkeys einen Backslash senden? Bei mir wird aus \ in der Übertragung immer ß :twisted:
Und kann ich auch Befehle wie Strg + A oder Entf senden?


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:56 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz