Q&A
HOME
Tips & Tech
Q&A
Discuss
Download
자유게시판
홍보 / 광고
구인 / 구직
LOGIN
회원가입
마우스나 키보드의 제어
윈도우에서 마우스나 키보드를 사용못하도록 하거나 이를 다시 사용 가능하도록
만들고 싶습니다.
즉, 사용을 못하도록 설정을 하게 되면 아무 키도 눌러지지 않고, 마우스도
움직이지 않도록 하는 것입니다. 윈도우의 시스템 쪽을 제어해야 할것 같은데,
어떠한 방법을 써야 할지 모르겠어서 질문 드립니다.
1
COMMENTS
김영대
•
1999.09.06 21:57
지승용 께서 말씀하시기를...
> 윈도우에서 마우스나 키보드를 사용못하도록 하거나 이를 다시 사용 가능하도록
> 만들고 싶습니다.
> 즉, 사용을 못하도록 설정을 하게 되면 아무 키도 눌러지지 않고, 마우스도
> 움직이지 않도록 하는 것입니다. 윈도우의 시스템 쪽을 제어해야 할것 같은데,
> 어떠한 방법을 써야 할지 모르겠어서 질문 드립니다.
아래는 윈도우즈 전체의 키보드 입력 금지를 하는 예제입니다
hook과 관련된 자료를 찾아보시면 더 좋은 에제가 있을겁니다
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
{IRQNum Tabelle:
Master:
IRQ 1: Keyboard
Slave:
IRQ 12: Mouse
OnOff:
True = it is on
False = it is off, cant be used}
procedure IRQ_Control(IRQNum: Byte; OnOff: Boolean);
var
NearIRQNum : Byte;
Port : Word;
Mask : Byte;
begin
NearIRQNum := IRQNum;
if IRQNum < 8 then
Port := $21
else
begin
Port := $A1;
Dec(NearIRQNum, 8);
end;
Mask := 128;
Mask := Mask shr (7-NearIRQNum);
if OnOff then
asm
mov dx, Port // activate irq
in al, dx
not Mask
and al, Mask
out dx, al
end
else
asm
mov dx, Port // deactivate it
in al, dx
or al, Mask
out dx, al
end;
end;
function FlushKeyBuffer: boolean;
var
KeyStateBuff: TKeyboardState;
begin
FillChar(KeyStateBuff, SizeOf(KeyStateBuff), #0);
Result := SetKeyboardState(KeyStateBuff);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
IRQ_Control(1, False); // 키보드 입력 금지
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
FlushKeyBuffer; // 키보드 버퍼를 flush 한다
IRQ_Control(1, True); // 키보드 입력 허용
end;
end.
0
0
삭제
수정
댓글
(NOTICE) You must be
logged in
to comment on this post.
Lyle
1999.09.07 00:24
0
COMMENTS
/
0
LIKES
thread 안에서의 pointer 오동작.
머털현석
•
1999.09.06 23:43
1
COMMENTS
/
0
LIKES
초시계를 만들고 싶은데
구창민
•
1999.09.07 04:47
머털현석 께서 말씀하시기를... > 초시계를 만들고 싶은데 00:00:00부터 시간을 시작하고 싶은데 어떻게 ...
김주영
•
1999.09.06 23:28
1
COMMENTS
/
0
LIKES
[테이블생성]TimeStamp Type Filed의 Format 정의
구창민
•
1999.09.07 05:01
김주영 께서 말씀하시기를... > 안녕하십니까? > > 델파이를 공부하던 중 의문점이 생겨 문의를 드립...
전길남
•
1999.09.06 23:26
1
COMMENTS
/
0
LIKES
Delphi Client에서 remote Server 명령 실행 어떻게????
김영대
•
1999.09.07 01:31
서버가 UNIX 계열인걸로 알겠습니다 UNIX/LINUX의 Rexec 포트를 사용해 보세요 Rexec는 포트번호 512 ...
윤광석
1999.09.06 22:36
0
COMMENTS
/
0
LIKES
dbGrid 그대로 출력하기
이우영
1999.09.06 22:35
0
COMMENTS
/
0
LIKES
DB작업시 일반적인 에러를 처리하는 방식은?
최진석
•
1999.09.06 20:47
1
COMMENTS
/
0
LIKES
FindFirst에 대해
김영대
•
1999.09.06 21:53
아래 예제를 참고해 보세요 파일 삭제루틴은 없습니다 // 아래 예제의 Memo1 은 검사용이므로 디렉토리...
이상민
1999.09.06 20:18
0
COMMENTS
/
0
LIKES
여러 Component들을 같이 이동시키는 방법?
조혜진
1999.09.06 19:02
0
COMMENTS
/
0
LIKES
[긴급]CreateOLEObject 가 안되는 이유??
허일학
1999.09.06 06:44
0
COMMENTS
/
0
LIKES
파라독스에서 Commit,Rollback은? 부탁
박성훈
•
1999.09.06 05:03
1
COMMENTS
/
0
LIKES
한영키 제어
김영대
•
1999.09.06 21:55
박성훈 께서 말씀하시기를... > windows.pas를 봐도 한영키의 가상키값은 없는 것같군요. > 키값이 없다...
강동호
1999.09.06 03:13
0
COMMENTS
/
0
LIKES
(질문)dbgrid에 여러db파일 연결
황현동
•
1999.09.05 18:53
1
COMMENTS
/
0
LIKES
프로그램 크기가..이상해요~
구창민
•
1999.09.05 22:25
황현동 께서 말씀하시기를... > 원래.. 폼하나만 있어도. 크기가 200k 까량 되지 않습니까?? > ...
박성훈
1999.09.05 17:36
0
COMMENTS
/
0
LIKES
컴포트 동시제어
지승용
•
•
1999.09.05 01:31
1
COMMENTS
/
1
LIKES
마우스나 키보드의 제어
윈도우에서 마우스나 키보드를 사용못하도록 하거나 이를 다시 사용 가능하도록 만들고 싶습니다. 즉, 사용을 못하도록 설정을 하게 되면 아무 키도 눌러지지 않고, 마우스도 움직이지 않도록 하는 것입니다. 윈도우의 시스템 쪽을 제어해...
김영대
•
1999.09.06 21:57
지승용 께서 말씀하시기를... > 윈도우에서 마우스나 키보드를 사용못하도록 하거나 이를 다시 사용 가능...
댕이
1999.09.05 00:34
0
COMMENTS
/
0
LIKES
배포판 만들때.. 시리얼 넘버는.??
김수기
1999.09.04 23:53
0
COMMENTS
/
0
LIKES
10.2를 입력했는데 왜 10.199999가 입력되죠? please....
김수지
1999.09.04 23:49
0
COMMENTS
/
0
LIKES
Table Filtering 시 'Capability not Supported..' 무슨뜻
bluetin
•
1999.09.04 22:21
1
COMMENTS
/
0
LIKES
[급=질문]클라이언트 서버 프로그램 인스톨 디스켓 만들때..
댕이
•
1999.09.05 00:39
bluetin 께서 말씀하시기를... > mssql 7.0 을 서버를 사용하여 > > 프로그램을 작성 했는데.. > > ...
정강석
1999.09.04 22:11
0
COMMENTS
/
0
LIKES
group report 해결책
지승용
1999/09/05 01:31
Views
1404
Likes
1
Comments
1
Reports
0
Tag List
수정
삭제
목록으로
한델 로그인 하기
로그인 상태 유지
아직 회원이 아니세요? 가입하세요!
암호를 잊어버리셨나요?
> 윈도우에서 마우스나 키보드를 사용못하도록 하거나 이를 다시 사용 가능하도록
> 만들고 싶습니다.
> 즉, 사용을 못하도록 설정을 하게 되면 아무 키도 눌러지지 않고, 마우스도
> 움직이지 않도록 하는 것입니다. 윈도우의 시스템 쪽을 제어해야 할것 같은데,
> 어떠한 방법을 써야 할지 모르겠어서 질문 드립니다.
아래는 윈도우즈 전체의 키보드 입력 금지를 하는 예제입니다
hook과 관련된 자료를 찾아보시면 더 좋은 에제가 있을겁니다
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
{IRQNum Tabelle:
Master:
IRQ 1: Keyboard
Slave:
IRQ 12: Mouse
OnOff:
True = it is on
False = it is off, cant be used}
procedure IRQ_Control(IRQNum: Byte; OnOff: Boolean);
var
NearIRQNum : Byte;
Port : Word;
Mask : Byte;
begin
NearIRQNum := IRQNum;
if IRQNum < 8 then
Port := $21
else
begin
Port := $A1;
Dec(NearIRQNum, 8);
end;
Mask := 128;
Mask := Mask shr (7-NearIRQNum);
if OnOff then
asm
mov dx, Port // activate irq
in al, dx
not Mask
and al, Mask
out dx, al
end
else
asm
mov dx, Port // deactivate it
in al, dx
or al, Mask
out dx, al
end;
end;
function FlushKeyBuffer: boolean;
var
KeyStateBuff: TKeyboardState;
begin
FillChar(KeyStateBuff, SizeOf(KeyStateBuff), #0);
Result := SetKeyboardState(KeyStateBuff);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
IRQ_Control(1, False); // 키보드 입력 금지
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
FlushKeyBuffer; // 키보드 버퍼를 flush 한다
IRQ_Control(1, True); // 키보드 입력 허용
end;
end.