Avatar billede steffe Nybegynder
06. januar 2002 - 14:51 Der er 3 kommentarer og
1 løsning

SendKeys??

Er der nogen der kender koden til til at sende nogle taster til et program...
Fx: send 1+1= til Lommregner.
Avatar billede ziron Nybegynder
06. januar 2002 - 15:38 #1
ja fx til winamp kan man gører det men jeg ved faktisk ikke om man kan til lommeregneren.

kig her for winamp:

http://www.winamp.com/nsdn/winamp2x/dev/sdk/api.jhtml

/ZIRON
Avatar billede nca Juniormester
06. januar 2002 - 18:15 #2
Nedenstående eksempel sender 2+2= til lommeregneren, som så viser resultatet 4

unit sendkeyUnit1;

interface

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

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

var
  Form1: TForm1;
  winresult:hwnd;
  forgrund:hwnd;
  doswin:hwnd;
  hscreen:THandle;
implementation

{$R *.DFM}
procedure PushKeys(Keystrokes : PChar); stdcall; external \'KeyPush.DLL\';

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

Procedure SendText( S: String );
Var
  flags: TShiftState;
  vcode: word;
  ret  : word;
  i, n : Integer;
  mask : word;
Begin
  For i := 1  To Length(S) Do Begin
    ret := VkKeyScan( S[i] );
    vcode := Lobyte( ret );
    flags := [];
    mask  := $100;
    For n := 1 To 3 Do Begin
      If (ret and mask) <> 0 Then Begin
        Case mask Of
          $100: Include( flags, ssShift );
          $200: Include( flags, ssCtrl );
          $400: Include( flags, ssAlt );
        End; { Case }
      End; { If }
      mask := mask shl 1;
    End; { For }
    PostKeyEx32( vcode, flags, false );
  End; { For }
End; { SendText }



procedure TForm1.Button1Click(Sender: TObject);
var
  kommando:string;
begin
  hScreen := CreateConsoleScreenBuffer(GENERIC_READ, FILE_SHARE_READ or
  FILE_SHARE_WRITE,nil, CONSOLE_TEXTMODE_BUFFER,nil);
  kommando:=\'calc.exe\';
  Winresult:=WinExec(Pchar(kommando),sw_shownormal);
  doswin:=FindWindow(nil,\'Lommeregner\');
  SetActivewindow(doswin);
  sendtext(\'2+2=\');
end;



end.
Avatar billede nca Juniormester
06. januar 2002 - 18:17 #3
Jeg glemte at slettet linjen
procedure PushKeys(Keystrokes : PChar); stdcall; external \'KeyPush.DLL\';
Avatar billede nca Juniormester
14. januar 2002 - 20:03 #4
>>steffe
Hvorfor afslutter du ikke spørgsmålet?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester