::: 델파이 Tip&Trick :::

델파이 Tip&Trick 성격에 맞지 않는 광고,비방,질문의 글은 즉시 삭제하며
내용을 복사하여 사용할 경우 반드시 이곳(http://www.howto.pe.kr)을 출처로 명시하여 주세요


Category

  김영대(2003-03-04 20:46:35, Hit : 5146, Vote : 1323
 키보드의 임의키 발생

안녕하세요  김영대입니다

아래 예제가 있습니다
사용법은 Memo1 에 임의의 문장을 작성한 후
E_VirtualKey 콤포넌트에 문자열 "BACK" 이라고 입력한 후
SpeedButton1 을 누르시면 한 글자씩 지워집니다
다른 키의 조합도 사용해 보세요

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    SpeedButton1: TSpeedButton;
    Memo1: TMemo;
    E_VirtualKey: TEdit;
    procedure SpeedButton1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
{$R *.DFM}

procedure SimulateKeystroke(VirtualKey: byte;  ScanCode: DWORD);
begin
  // keybd_event 함수를 사용한 키 조합(down, up) 발생
  keybd_event(VirtualKey, // 키의 down
              ScanCode,
              0,
              0);
  keybd_event(VirtualKey, // 키의 up
              ScanCode,
              KEYEVENTF_KEYUP,
              0);
end;

procedure SimulateKeyDown(Key : byte);
begin
  // keybd_event 함수를 사용한 키 down 발생
  keybd_event(Key, 0, 0, 0);
end;

procedure SimulateKeyUp(Key : byte);
begin
  // keybd_event 함수를 사용한 키 up 발생
  keybd_event(Key, 0, KEYEVENTF_KEYUP, 0);
end;

procedure TForm1.SpeedButton1Click(Sender: TObject);
var
  hs: String;
  w : word;
begin
  Memo1.SetFocus;
  hs := UpperCase(E_VirtualKey.Text);

  if pos('INS',hs) > 0 then SimulateKeystroke(VK_INSERT, 0) else
  if pos('DEL',hs) > 0 then SimulateKeystroke(VK_DELETE, 0) else
  if pos('RT',hs) > 0 then SimulateKeystroke(VK_RETURN, 0) else
  if pos('TAB',hs) > 0 then SimulateKeystroke(VK_TAB, 0) else
  if pos('ESC',hs) > 0 then SimulateKeystroke(VK_ESCAPE, 0) else
  if pos('BACK',hs) > 0 then SimulateKeystroke(VK_BACK, 0) else
  if pos('UP',hs) > 0 then SimulateKeystroke(VK_UP, 0) else
  if pos('DOWN',hs) > 0 then SimulateKeystroke(VK_DOWN, 0) else
  if pos('LEFT',hs) > 0 then SimulateKeystroke(VK_LEFT, 0) else
  if pos('RIGHT',hs) > 0 then SimulateKeystroke(VK_RIGHT, 0) else
  if pos('PGDN',hs) > 0 then SimulateKeystroke(VK_NEXT, 0) else
  if pos('PGUP',hs) > 0 then SimulateKeystroke(VK_PRIOR, 0) else
  if pos('END',hs) > 0 then SimulateKeystroke(VK_END, 0) else
  if pos('HOME',hs) > 0 then SimulateKeystroke(VK_HOME, 0);
  { ... 이하 가상키의 조합을 발생시킬 수 있습니다}

  // 그리고 위의 SimulateKeyDown, SimulateKeyUp 를 사용하여 Shift, Ctrl, Alt 등은
  // down 상태를 유지하고(SimulateKeyDown), 이를 해제(SimulateKeyUp)할 수 있습니다
  // 또한 일반 문자의 ScanCode는 VkKeyScan() 함수로 알 수 있습니다
end;

end.






731   [COM/OLE] 윈도우즈 "검색: 파일 또는 폴더" 화면  김영대 2004/07/25 4817 1345
730   [일반/컴포넌트] StringGrid - multiline text  김영대 2003/03/07 5751 1345
729   [시스템] 내 프로그램의 실행 우선순의 바꾸기  김영대 2004/07/24 4936 1344
728   [일반/컴포넌트] 리스트뷰에서 동적으로 칼럼삭제하기  김영대 2003/03/05 4977 1344
727   [일반/컴포넌트] TStringGrid 인쇄하기  김영대 2003/03/07 5410 1343
726   [COM/OLE] TWebBrowser 에서 새창을 열때 cookie 공유되게 하기  김영대 2004/11/24 6514 1340
725   [일반/컴포넌트] 투명한 Bitmaps 인쇄  김영대 2003/03/07 5708 1340
724   [윈도우즈 API] TaskBar의 다양한 기능제어  김영대 2003/03/07 4976 1339
723   [일반/컴포넌트] Caption Bar위에 버튼 올리기  김영대 2003/03/05 4863 1336
722   [일반/컴포넌트] 폼에 자석효과 주기 (Delphi 6 이하)  김영대 2005/08/04 6249 1335
721   [윈도우즈 API] 세로 타이틀바 만들기  김영대 2004/08/04 4877 1334
720   [시스템] DOS 명령어 실행하고 결과 받아오기 (Win2k,XP)  김영대 2004/08/03 5597 1334
719   [일반/컴포넌트] QuickReport에서 프린터 바꾸어서 출력하기  김영대 2003/03/06 5378 1334
718   [윈도우즈 API] 바탕화면의 모든 창 최소화하기  김영대 2006/02/28 5555 1333
717   [시스템] IP address 바꾸기  김영대 2003/03/07 5330 1332
716   [시스템] System, User, GDI Resource  김영대 2003/03/07 4562 1331
715   [시스템] CD-ROM 문 열기/닫기  김영대 2003/03/04 4696 1331
714   [일반/컴포넌트] 문자열의 암호화(Password 처리) & INI 파일  김영대 2003/03/06 5817 1330
713   [윈도우즈 API] 프린터 스풀러에 대기중인 job의 수  김영대 2003/03/04 4494 1330
712   [네트웍/인터넷] Internet에 연결중인지 여부를 알려면...  김영대 2003/03/04 5163 1329
711   [일반/컴포넌트] StringGrid의 중간에 제목 Cell 두기  김영대 2003/03/07 5262 1328
710   [윈도우즈 API] 폼의 최대/최소화 막기  김영대 2003/03/06 4927 1327
709   [시스템] PrintScreen 키가 눌렸는지 검사하기  김영대 2003/03/04 4260 1327
708   [시스템] 프린터의 "용지 공급" 리스트 구하기  김영대 2003/03/07 4608 1326
707   [시스템] Sleep 중에도 타이머 이벤트 발생시키기  김영대 2004/08/09 5722 1325
706   [윈도우즈 API] 작업표시줄이 자동 숨김인지 검사  김영대 2003/03/04 5006 1325
705   [윈도우즈 API] 도구모음 Bar는 어떻게 만드는지...  김영대 2003/03/04 4680 1325
704   [일반/컴포넌트] 실행파일에서 잃어버린 DFM 파일 뽑아내기  김영대 2004/08/17 4995 1324
703   [일반/컴포넌트] WMF 를 BMP 로 변환하기  김영대 2003/03/07 4299 1324
702   [일반/컴포넌트] DateTimePicker 의 표시형식(format) 바꾸기  김영대 2003/03/04 5559 1323
  [윈도우즈 API] 키보드의 임의키 발생  김영대 2003/03/04 5146 1323
700   [일반/컴포넌트] TMemo 스크롤 다운 시키기  김영대 2003/03/29 4567 1322
699   [윈도우즈 API] 윈도우즈 탐색기와의 연동  김영대 2003/03/04 5412 1322
698   [데이터베이스] DB그리드 Row Height를 조절할 수 있는 콤포넌트  김영대 2003/03/05 5067 1321
697   [윈도우즈 API] Application의 최소화시 Zooming 효과 주기  김영대 2003/03/05 4465 1321
696   [시스템] Windows NT 에서 한글 NT인지 영문 NT인지 구분하는 방법  김영대 2003/03/04 5087 1321
695   [데이터베이스] WAVE 파일을 테이블에 저장하고 불러와서 연주하기  김영대 2003/03/05 4708 1319
694   [시스템] NTFS 파일 시스템 사용 여부  김영대 2004/08/25 5025 1317
693   [일반/컴포넌트] 주어진 년,월,주의 다음주  김영대 2003/03/05 4334 1317
692   [윈도우즈 API] 파일의 확장명으로 실행화일 연결  김영대 2003/03/04 4958 1316

[1][2][3][4][5][6] 7 [8][9][10]..[25] [다음 10개]
 

Copyright 1999-2019 Zeroboard / skin by zero