Delphi-PRAXiS
Seite 3 von 4     123 4      

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)

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...


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:18 Uhr.
Seite 3 von 4     123 4      

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