Q&A
HOME
Tips & Tech
Q&A
Discuss
Download
자유게시판
홍보 / 광고
구인 / 구직
LOGIN
회원가입
메신저등에서 자리비움 표시하는것 말입니다.
메신저를 보면 대개 일정시간 키입력이나 마우스 입력이 없으면 자동적으로
자리비움 표시를 해주는데요 어떤식으로 구현하면될까요?
메신저 창이 활성화 되지 않았을때도 키입력이 있는지 없는지를 알아내야하는데
어떻게 하는건지를잘 모르겠네요.. ( 워낙에 초보다 보니.. ^^;;)
아시는 분은 좀 알려주세요.. ^^
1
COMMENTS
조규춘
•
2001.07.02 05:11
cyong.. wrote:
> 메신저를 보면 대개 일정시간 키입력이나 마우스 입력이 없으면 자동적으로
> 자리비움 표시를 해주는데요 어떤식으로 구현하면될까요?
> 메신저 창이 활성화 되지 않았을때도 키입력이 있는지 없는지를 알아내야하는데
> 어떻게 하는건지를잘 모르겠네요.. ( 워낙에 초보다 보니.. ^^;;)
> 아시는 분은 좀 알려주세요.. ^^
여러가지 방법들이 있을수 있지만..
가장 간단한 방법으로는 클라이언트에서 타이머 두개를 놓는거지요.~
딸랑 타이머 이야기 하니깐 이상하실 텐데 만들수 있는 구조는
화면보호기의 원리랑 똑같습니다.
보통 화면보호기가 작동하고있는 도중에 사용자에 의한 키나
마우스의 이동이 발생되면 화면보호기는 바루 종료를 하고 말지요~
그리하여 다음에서 이러한 사실을 이용해서..
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls;
type
TForm1 = class(TForm)
Timer1: TTimer;
Timer2: TTimer;
procedure Key_Mouse_Detect(var Msg: TMsg; var Handled:Boolean);
procedure Timer1Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Timer2Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
i : integer;
implementation
{$R *.dfm}
{ TForm1 }
procedure TForm1.Key_Mouse_Detect(var Msg: TMsg; var Handled: Boolean);
var
firstmousePos : TPoint;
begin
// 마우스의 이동을 감지한다.
if Msg.message = wm_Mousemove then
begin
// 마우스가 10 픽셀 이상의 이동이 있다면 타이머의 작동을 중지한다.
if (Abs(loword (Msg.lParam)- firstmousePos.X ) > 10) or
(Abs(Hiword (Msg.lParam)- firstmousePos.Y ) > 10) then
begin
timer1.Enabled := False;
end;
end
else
begin
case Msg.message of
WM_KEYDOWN : timer1.Enabled := False; // 키보드가 눌려졌을때
WM_KEYUP : timer1.Enabled := False; // 키보다가 눌렸다가 올라갔을때
WM_LBUTTONDOWN : timer1.Enabled := False; // 마우스의 왼쪽버튼이 눌렸을때
WM_RBUTTONDOWN : timer1.Enabled := False; // 마우스의 오른쪽버튼이 눌렸을때
WM_SYSKEYDOWN : timer1.Enabled := False; // 알트키나 컨트롤키같은게 눌렸을때
WM_SYSKEYUP : timer1.Enabled := False; // 알트키나 컨트롤키같은게 눌렸다가 올라갔을
0
0
삭제
수정
댓글
(NOTICE) You must be
logged in
to comment on this post.
박병순
2001.07.02 17:55
0
COMMENTS
/
0
LIKES
QuickRep에서 *.QRP 재 사용은?
달벌레
•
2001.07.02 17:34
3
COMMENTS
/
0
LIKES
Thread 에서 인수를 받는 방법?
kuma
•
2001.07.03 04:51
간단히 api로 만드는 방식을 올려 드릴께요... 후에 더 추가 하시면 될것도 같군요.... 일단 이벤트만 사...
나그네
•
2001.07.02 17:43
스레드내에 변수를 선언하고 스레드를 전달하면 될 것 같네요 동기화문제가 있을 것 같은데 생략하겠습니...
달벌레
•
2001.07.03 12:30
덕분에 먼가 실마리가 풀려가는거 같습니다. 스레드 어렵긴 어렵군요 ㅜ.ㅜ 완성의 그날까지 아자~
심재복
2001.07.02 16:52
0
COMMENTS
/
0
LIKES
[급질문]indy나 다른거 안쓰구 LookUp해서 IP알아내기
김남영
2001.07.02 15:19
0
COMMENTS
/
0
LIKES
Query에서 SQL문장을 쓰러고 하니 RichEdit line insertion erro
박동식
2001.07.02 08:45
0
COMMENTS
/
0
LIKES
[기초]델파이란 무엇인가요?
신규선
2001.07.02 08:44
0
COMMENTS
/
0
LIKES
gif 가 txt 보다 작은이유??
긴급[델초보]
•
2001.07.02 04:35
1
COMMENTS
/
0
LIKES
스티링그리드에콤보박스넣는방법좀....
송병철
•
2001.07.02 16:44
긴급[델초보] wrote: > 스트링그리드에 콤보박스를 넣어서 선택하려 하는데 > 어떻게 구현해야되나요? ...
이준
2001.07.02 04:21
0
COMMENTS
/
0
LIKES
꼭 부탁드립니다. 막혀습니다.
델~열띰히
2001.07.02 04:32
0
COMMENTS
/
0
LIKES
데이타베이스책이없어요
드기
•
2001.07.02 02:09
1
COMMENTS
/
0
LIKES
이럴때 LookUpfield를 사용하는건가요?? -_-;; 도와주세요..
블랙봉
•
2001.07.02 09:39
그냥 query로 될것 같은데요. SELECT Table1.모델코드, Table1.검사종류, Table2.검사날짜, Table1.상한...
김남영
•
2001.07.02 00:01
2
COMMENTS
/
0
LIKES
InstallShield 에서.... 급합니다..제발 아무나 답변좀,,으익
조규춘
•
2001.07.02 04:18
김남영 wrote: > 안녕하십니까 > 저는 델파이 5.0을 쓰고 설치프로그래도 델파이 5.0에 있는 인스톨프로...
김남영
•
2001.07.02 07:34
조규춘님의 이름은 인터넷을 통해 널리 알고 있지만 이렇게 도움이 돼어 기분이 매우 좋습니다. 언재 시...
달벌레
2001.07.01 20:32
0
COMMENTS
/
0
LIKES
Thread 를 만들어 보았는데...
cyong..
•
2001.07.01 19:43
1
COMMENTS
/
0
LIKES
메신저등에서 자리비움 표시하는것 말입니다.
메신저를 보면 대개 일정시간 키입력이나 마우스 입력이 없으면 자동적으로 자리비움 표시를 해주는데요 어떤식으로 구현하면될까요? 메신저 창이 활성화 되지 않았을때도 키입력이 있는지 없는지를 알아내야하는데 어떻게 하는건지를잘 ...
조규춘
•
2001.07.02 05:11
cyong.. wrote: > 메신저를 보면 대개 일정시간 키입력이나 마우스 입력이 없으면 자동적으로 > 자리비움...
김민수
•
2001.07.01 09:01
1
COMMENTS
/
0
LIKES
MS OFFice에서 개가 나오는데 델파이는 없나요?
Mr. Ziker
•
2001.07.01 11:32
안녕하세요 지커 입니다. 이곳의 자료실인가.. 보시면.. ms agent라는 게 있을겁니다. 참고하세요.....
진수빈
•
2001.07.01 08:59
1
COMMENTS
/
0
LIKES
오라클 서버의 Character Set 문제...
행인4
•
2001.07.02 21:04
http://otn.oracle.co.kr 에 가서 왼쪽 메뉴에서 아래에서 4번째 있는 OTN 포럼으로 가셔서 찾아보시는 게...
Ziker
•
2001.07.01 05:46
1
COMMENTS
/
0
LIKES
ClassID 변경이 가능하나요? 가능 하다면 어떻에..
Ziker
•
2001.07.03 02:28
질문을 올리고 해결 되어서리 이렇게 다시 올려 드립니다. ActiveX 플랫폼에서 항상 따라오는 ****_TL...
김현숙
•
2001.07.01 00:27
3
COMMENTS
/
0
LIKES
툴바에서 버튼이 잘립니다.급해요ㅠ.ㅠ
건
•
2001.07.01 19:57
툴바의 AutoSize가 True로 되어 있으면 그럴수도 있습니다 김현숙 wrote: > 개발시에는 아무이...
aparadin
•
2001.07.01 03:49
김현숙 wrote: > 개발시에는 아무이상이 없었는데.. > 특정 컴퓨터에서 툴바가 잘려집니다. > 개발시에 ...
김현숙
•
2001.07.01 23:11
제가 알기로는 탐색기의 메뉴도 툴바로 만들어 진거로 알고 있는데. 어떤 컴에서든 모든 잘 되는걸 봐서는...
김광철
2001.06.30 23:39
0
COMMENTS
/
0
LIKES
가끔씩 DLL을 찾을수 없다는 오류가 나옵니다
궁그미
•
2001.06.30 22:53
2
COMMENTS
/
0
LIKES
indy서버소켓의 active여부 알아낼수 있을까요
토맛토
•
2001.07.01 04:33
궁그미 wrote: > indy소켓(8..) > 델파이5 > os:win98 > > indy소켓서버가 꺼져있는 상태에서 클라이...
궁그미
•
2001.07.01 07:25
토맛토님 감사합니다. 물론 실행파일로 test했고요. 예외처리는 이렇게 했는데요 try IdTCPC...
윤종진
•
2001.06.30 22:36
1
COMMENTS
/
0
LIKES
[데이타베이스]dsbrowse에 대해서!! 알고잡아서~~~
방문현
•
2001.07.01 18:21
>dsBrowse 는 Dataset Status In Browse 즉 검색중이라는 말이지요. >데이터베이스는 검색 모드가 아닌 수...
cyong..
2001/07/01 19:43
Views
321
Likes
0
Comments
1
Reports
0
Tag List
수정
삭제
목록으로
한델 로그인 하기
로그인 상태 유지
아직 회원이 아니세요? 가입하세요!
암호를 잊어버리셨나요?
> 메신저를 보면 대개 일정시간 키입력이나 마우스 입력이 없으면 자동적으로
> 자리비움 표시를 해주는데요 어떤식으로 구현하면될까요?
> 메신저 창이 활성화 되지 않았을때도 키입력이 있는지 없는지를 알아내야하는데
> 어떻게 하는건지를잘 모르겠네요.. ( 워낙에 초보다 보니.. ^^;;)
> 아시는 분은 좀 알려주세요.. ^^
여러가지 방법들이 있을수 있지만..
가장 간단한 방법으로는 클라이언트에서 타이머 두개를 놓는거지요.~
딸랑 타이머 이야기 하니깐 이상하실 텐데 만들수 있는 구조는
화면보호기의 원리랑 똑같습니다.
보통 화면보호기가 작동하고있는 도중에 사용자에 의한 키나
마우스의 이동이 발생되면 화면보호기는 바루 종료를 하고 말지요~
그리하여 다음에서 이러한 사실을 이용해서..
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls;
type
TForm1 = class(TForm)
Timer1: TTimer;
Timer2: TTimer;
procedure Key_Mouse_Detect(var Msg: TMsg; var Handled:Boolean);
procedure Timer1Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Timer2Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
i : integer;
implementation
{$R *.dfm}
{ TForm1 }
procedure TForm1.Key_Mouse_Detect(var Msg: TMsg; var Handled: Boolean);
var
firstmousePos : TPoint;
begin
// 마우스의 이동을 감지한다.
if Msg.message = wm_Mousemove then
begin
// 마우스가 10 픽셀 이상의 이동이 있다면 타이머의 작동을 중지한다.
if (Abs(loword (Msg.lParam)- firstmousePos.X ) > 10) or
(Abs(Hiword (Msg.lParam)- firstmousePos.Y ) > 10) then
begin
timer1.Enabled := False;
end;
end
else
begin
case Msg.message of
WM_KEYDOWN : timer1.Enabled := False; // 키보드가 눌려졌을때
WM_KEYUP : timer1.Enabled := False; // 키보다가 눌렸다가 올라갔을때
WM_LBUTTONDOWN : timer1.Enabled := False; // 마우스의 왼쪽버튼이 눌렸을때
WM_RBUTTONDOWN : timer1.Enabled := False; // 마우스의 오른쪽버튼이 눌렸을때
WM_SYSKEYDOWN : timer1.Enabled := False; // 알트키나 컨트롤키같은게 눌렸을때
WM_SYSKEYUP : timer1.Enabled := False; // 알트키나 컨트롤키같은게 눌렸다가 올라갔을