수안이의 컴퓨터 연구실

  • Mainpage
  • About Me
  • Tags
  • Metapage
  • Notice
  • Location
  • Keywords
  • Guestbook
  • Admin
  • Write an Article
  • Total | 1694424
  • Today | 169
  • Yesterday | 606

1 Articles, Search for 'Interfaces'

  1. 2007/01/09 Messenger Application Programming Interfaces
Programming/Useful Library2007/01/09 09:24

Messenger Application Programming Interfaces

Messenger Application Programming Interfaces

2002-08-27 조경민 (bro@shinbiro.com)

.NET Messenger Service 개요

.NET 메신저 서비스에 접속하는 MS의 클라이언트 제품은 두가지 종류가 있다. 하나는 Microsoft® Windows® Messenger라고 불리는 Windows XP에 기본으로 내장된 메신저 제품( 이하 XP메신저 또는 윈도우메신저라 함)과 여러분이 인터넷에서 다운받아서 쓰고 있는 MSN Messenger가 그것이다.

.NET 메신저 서비스는 여러가지가 있을 수 있으며 그중 기본적인 것이 Microsoft .NET Messenger Service이다. 그리고 그 외 Microsoft® Exchange Instant Messaging같은 다른 서비스도 있을 수 있다. 메신저 클라이언트는 이런 서비스에 접속하여 .NET Messenger 서비스를 이용하게 된다. Microsoft .NET Messenger Service를 메신저 서버라고 짧게 부르도록 한다.

메신저와 관련된 프로그래밍 인터페이스(API)는 세가지 종류로 나뉜다.

-         Messenger APIs

현재 설치되어 실행중인 MSN메신저와 연동되어 여러가지 재미있는 일을 할 수 있는 API로 XP메신저와 MSN메신저 둘다 해당되는 API이다.

주로, 두가지 기능에 초점이 맞춰져 있으며, 메신저 친구 리스트 관리와 메신저 클라이언트 자체에 대한 자동화(Automation)이다.

-         Messenger Service APIs

서비스API는 메신저클라이언트가 접속해서 새로운 서비스를 받을 수 있도록 하는 서비스 API이다. 서비스API는 메신저서버와 연동이 필요없는 API이다. 그러나 메신저서버를 통하지 않더라도 .NET Messenger Service를 통하게 된다면, .NET Messenger Service 동의서에 동의하고 특별한 ID와 key 쌍을 받아야 한다. 이 서비스 API를 이용하여 만들어진 테스트 서버 혹은 상용 서버는 msgrapi@microsoft.com 에 메일을 보내서 사용 가능한 ID와 Key를 부여 받아야 한다. 주료 서비스로 들어온 클라이언트를 인증과정을 거친후 해당 서비스의 세션을 생성하고, 해당 서비스에 다른 클라이언트를 초대하여 참여하여 서비스가 이뤄지게 된다.

-         Messenger Add-In APIs

XP에서 동작하는 윈도우 메신저의 애드온 API들이다. 이 API를 통해서 이메일보내기시 특수한 작업을 하거나, 채팅룸 가기시 특수한 다른 채팅서비스를 하거나, 개인정보를 수정하거나, 문자메시지를 보내거나, 광고 같은것을 띄울 수 있다.


Messenger APIs

(  Service와 Addon은 설명에 들어있지 않다. 필자가 관심이 있는 부분이 아니라서 죄송)

주요 기능 분류

1.       접속자 리스트 관리 : 접속자 리스트를 얻어오거나, 각 접속자의 등록정보를 얻어올 수 있다. 어떤 그룹에 속해있고, 이름은 무었이며, 로그인 이름은 무었이고, 전화번호 등을 얻어 올 수 있다.  그러나 보안상 문제로, 웹 스크립트에서는 몇몇의 등록정보와 메소드가 지원되지 않는다.

2.       메신저 자동화

메신저 대화창을 띄운다든지, 환경설정창을 띄운다든지, 전화걸기 창을 띄운다든지의 메신저 기능을 사용할 수 있다.

시작하기

Messenger API를 사용하려면 다음 사이트로 가서 최신의 MSN메신저를 다운받아야 한다.

http://Messenger.Microsoft.com.

세팅하기

For Visual C++

Lib와 h가 있는 디렉토리를 주메뉴/Option에 Directories의 Include Files와 Library Files에 각각 해당 파일이 있는 디렉토리를 추가한다.

For Visual Basic

메뉴 프로젝트/ 참조(Reference)부에 Messenger API Type Library를 추가하면 된다.

서비스와 메신저 API

기본적으로 Microsoft .NET Messenger Service가 첫번째 서비스에 해당한다. 클라이언트는 이 첫번째 서비스 외에도 Microsoft® Exchange Instant Messaging 또는 the pending Instant Message Interoperability Protocol (IMIP) 같은 서비스에도 접속하여 서비스를 받을 수 있다.

간단히 Messenger API를 통하여 현재 접속되어 있는 MSN을 이용하여 어떤 사람에게 보내기 위한 메시지창을 생성해 보자


VB로 설명하는 것이 수월하므로 예제를 VB로 해봤다.

VB의 경우 프로젝트 참조에 Messenger API Type Library를, VC의 경우에는 위에 프로젝트 세팅에서 알려준 방식대로 SDK에 있는 lib와 h를 각각 Include / Library 디렉토리 추가해야 한다.

Public WithEvents msn As MessengerAPI.Messenger

Public user As MessengerAPI.IMessengerContact

Private Sub Command1_Click()

    ' 실행중인 MSN을 얻어온다. 아예 없다면 CreateObject해주면 되겠지.

    Set msn = GetObject("", "Messenger.UIAutomation")

    ' MSN 로그인 중이 아니면 아래처럼 로그인도 하면 되겠지.

    msn.Signin 0, "bro@shinbiro.com", ""

End Sub

Private Sub msn_OnSignin(ByVal hr As Long)

  ' 다음 이메일의 친구를 얻어온다.

  Set user = msn.GetContact("da_c_side@hotmail.com", "")

  ' 대화창을 시작한다.

  msn.InstantMessage user

End Sub

만일 MSN을 실행하되 로그인 하지 않은 상태에서 위와 같은 코드를 실행하면 MSN은 Signin에 의해 로그온 창을 띄우고 ( 암호가 없기 때문에, 내 컴퓨터에서는 암호를 넣어도 로그온창이 또 역시 떴다 -_- 알수없음이다. ), 로그온이 성공하면 OnSignin 이라는 곳에 와서 해당 이메일을 갖은 사용자를 찾아서 그 사용자와 대화를 하기 위한 대화창을 띄우게 될 것이다.

이 외의 인터페이스 사용 및 여러 함수 예를 들어 파일 보내기인 SendFile 등은 SDK에 있는 MSN API 도움말을 참조해보면 쉽게 알 수 있다.

이 것으로 MSN API 설명을 마친다. 서비스와 애드온 API 데해서는 설명하지 않는다.

실제로 더 많은 짓을 할 수 있는 것은 이 Messenger API Type Library 가 아니다.

그것은 Messenger Type Library 자체 인터페이스이다.

참조 사이트 :

Messenger API 공식 홈페이지 :

이곳을 통해서 위에 간단히 설명한 Messenger API, Messenger Service API, Addon API에 대한 lib, h 그리고 도움말을 얻을 수 있을 것이다.

http://msdn.microsoft.com/downloads/def ··· opic.xml


Messenger Type Library

위의 예제에서 보여준 Messenger API라는 것은 Messenger API Type Library에서 얻어온 COM 인터페이스 API이다. VB에서 이 형식라이브러리의 실제 로드 모듈의 패스는

‘C:\Program Files\Messenger\msmsg.exe\3’라고 나오고 있다. 

근데 그놈 말고 또 다른 MSN을 만지작 거릴수 있는 인터페이스가 있다 Messenger 1.0 Type Library가 그것인데, 이 인터페이스를 이용하면 많은 재미있는 짓거리를 할 수 있다.

일딴 설명은 쉽게 VB로 설명한다. ( 코드가 간략하다. 이벤트 핸들링이 쉽다. VC로 하면 싱크하는 클래스를 따로 만들어야 함으로 코드가 많이 들어간다. 하지만 VC에서 COM을 쓸 줄 알면 VB로 된 코드를 보고 바로 감이 오리라 생각한다. )

VB를 킨다.

프로젝트 참조에 가서 다음처럼 체크한다.

이제 간단한 예로 자동으로 응답하는 MSN 로봇을 만들어보자.

(VB로 하면 이렇게 엄청 쉽다 ㅡ_ㅡ )


‘ 이벤트를 받아내자. 메신저 객체한테서

Public WithEvents MSN As MsgrObject

Private Sub Form_Load()

Set MSN = New MsgrObject ‘ 폼이 로드되면 바로 메신저객체와 연결하자.

‘ MSN이 실행중이어야 겠죠?

End Sub

‘ 메신저에 어떤 메시지가 왔다는 이벤트 -_-.

Private Sub MSN_OnTextReceived(ByVal pIMSession As Messenger.IMsgrIMSession, ByVal pSourceUser As Messenger.IMsgrUser, ByVal bstrMsgHeader As String, ByVal bstrMsgText As String, pfEnableDefault As Boolean)

If bstrMsgText = vbCrLf Then Exit Sub '사용자가 아직 타이핑중이므로 보내진 않는다.

‘자동 응답 메시지를 보낸다. 

pSourceUser.SendText vbNullString, “자동응답””Text1.Text, MMSGTYPE_NO_RESULT

End Sub

이게 코드의 전부다. 컴파일해서 exe를 얻어보자. 상대방이 메시지를 보내면 바로 “자동응답”이라는 말이 전달될 것이다 ( 내 메시지창에는 안보이지만 상대방은 의아해한다. )

MSN Fantastic 사이트에는 더 많은 재미있는 이야기가 여기에 있다. 참조하면 여러가지 이야기기 있는 것을 발견 할 수 있다. 일딴 아주 간단한 것만 훑었지만, 여기서부터 시작을 하여 좋은 참조 사이트를 방문해보면 쉽게 하고자 하는 일을 마칠 수 있으리라 본다.


참조 사이트

MSN에 관련된 많은 툴, 그리고 샘플 예제, 풀 소스가 있다. 정말 좋은 곳이다. 이곳에서 많은 자료를 얻었다.

http://www.msnfanatic.com/

Messenger 1.0 Type Library의 COM 인터페이스에 대한 문서가 없어 문서화하는 사이트이다. 참조가 될만하다.

http://www.geocities.com/messengerdoc/

코드 프로젝트에 VC로 구현한 MSN관련 샘플이다. 코드가 긴 것이 흠이다.

http://www.codeproject.com/com/msn_mess ··· x89006xx

가장 최근의 MSN 프로토콜 설명 사이트다  완벽하진 않지만 새로운 Clone을 개발한다면 보아야할 사이트이다.

http://www.hypothetic.org/docs/msn/

물어볼 것이 생겼는다면 다음 구굴 뉴스그룹을 적극 활용하자. 이미 MSN에 대한 이야기는 나올 만큼 나온 방대한 QNA를 형성하고 있다.

http://www.dejanews.com

작성자: 조경민 ( 마지막날짜: 2002-08-29 )

Email: bro@jiran.com

"Useful Library" 카테고리의 다른 글
  • Messenger Application Programming Interfaces (0)2007/01/09
  • CxImage Library (0)2005/07/28
2007/01/09 09:24 2007/01/09 09:24
Posted by webdizen
Tags Application, Interfaces, Messenger, Programming
No Trackback No Comment

Trackback URL : http://www.webdizen.net/blog/trackback/2565

Leave your greetings.

[로그인][오픈아이디란?]

«Prev  1  Next»

RSS HanRSS
Blog Image
webdizen
이곳은 컴퓨터에 대해 연구하고, 공유하고, 소통하기 위한 연구실입니다. 개인적으로는 OLAP, Data Mining, Semantic Web, Data Modeling에 대해서 연구하고 있습니다.

Categories

전체 (3009)
Webdizen (141)
Life (6)
Diary (16)
Blog (9)
IDEA (2)
Travel (10)
Book (16)
Photo (7)
Movie (8)
Music (14)
Leisure Sports (10)
Funny (6)
Hardware (121)
Software (120)
Windows (5)
Unix & Linux (120)
Installation (5)
Kernel (10)
System (34)
Develop (22)
X-Window (0)
Applicaton (31)
Security (4)
Framework (2)
Hadoop (2)
Programming (804)
Algorithm & Data Structure (1)
Assembly (38)
UNIX/Linux C (95)
C++ (128)
STL (4)
Java (38)
Win32 API (92)
ATL/COM (44)
MFC (151)
.NET (26)
WCF/WPF (4)
C# (28)
Network Programming (17)
Database Programming (12)
OpenGL / DirectX (13)
Multimedia Programming (0)
Game Programming (21)
Parallel Distributed Progra... (0)
Reverse Engineering (0)
Debugging (9)
Python (1)
Ruby (1)
Ruby on Rails (1)
QT (4)
GTK (0)
JSP (0)
PHP (6)
ASP.NET (6)
ASP (2)
Development (28)
Useful Library (2)
Data Modeling (0)
Database (105)
Oracle (4)
MSSQL (41)
MySQL (2)
Data Warehouse (2)
Data Mining (4)
Network (66)
Web (79)
DHTML (4)
XHTML (1)
Javascript (1)
CSS (1)
AJAX (9)
XML (11)
Flex (1)
Silverlight (3)
Security (91)
DoS (1)
Kernel (10)
Scanning (3)
Sniffing (0)
Spoofing (4)
Overflow (28)
Web (11)
Shell (10)
Format String (14)
Window (2)
Embedded (70)
Multimedia (27)
Mobile (14)
Graphic (24)
Management (633)
Knowledge (581)
Hadoop (0)

Notice

  • 메타 블로그 사이트에 등록
  • 새해 맞이 블로그의 변화
  • 블로그 명칭 변경
  • 도메인(www.webdizen.net) 구...
  • TEXTCUBE 1.6.1로 업그레이드...

Tags

  • DBCC
  • 너구리게임
  • FK 설정
  • DOCTYPE
  • 인맥
  • tr
  • 습관
  • Top N
  • .NET Framework
  • ASCII Character
  • iostream.h
  • Naver
  • Multithreading
  • 데이터베이스
  • Detection
  • 데이터 타입
  • 전처리
  • 템플릿
  • 튜닝
  • 컴퓨터과학

Recent Articles

  • 트위터(Twitter)의 시작!.
  • 청년 리더의 조건.
  • 애플의 타블렛 PC - 아이패드....
  • 미래의 인터페이스 - 육감 기....
  • 기초발성법 동영상 강좌.

Recent Comments

  • 학교 과제물중 쓰레드에 대하....
    장진혁 03/17
  • 관리자만 볼 수 있는 댓글입....
    비밀방문자 03/12
  • 상대방의 이야기를 열심히 경....
    DoNuts 03/03
  • Lots of students know techn....
    Bobbi35Shannon 02/25
  • 좋은글 잘 보고 갑니다..
    Und_hacker 01/08

Recent Trackbacks

  • printf,scanf를 이용한 형식....
    yundream의 프로그래밍 이야기 03/10
  • 파일 열기/저장하기 CFileDialog.
    은마군의 나태블록 2009
  • World IT Show 2008.
    상우 :: Oranzie's BLOG 2008
  • cvs서버 설치하기.
    3인3색 2008
  • 속속 공개되는 Google Chart....
    PHP와 Web 2.0 2007

Archive

  • 2010/02 (1)
  • 2010/01 (6)
  • 2009/12 (5)
  • 2009/09 (3)
  • 2009/08 (1)

Calendar

«   2010/03   »
일 월 화 수 목 금 토
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      

Bookmarks

    • Administration
      • IIS.NET
      • NTFAQ
      • OS의 모든 것
      • 리눅스포털
    • Database
      • SQL Server Central
      • SQL Team
    • Development
      • .NET Heaven
      • ASP Alliance
      • ASP.NET 2.0
      • Bullog.net
      • C# Corner
      • C++ (C PlusPlus.com)
      • C++ Reference
      • CodeGuru
      • CodePlex
      • DebugLab
      • Dev Articles
      • Devpia
      • DotNet Junkies
      • DotNet Zone
      • Driver Online
      • GOSU.NET
      • HOONS 닷넷
      • Joinc 팀블로그
      • KOSR
      • MSDN Home Page
      • OSR Online
      • Sky.ph - 개발자 커뮤니...
      • TAEYO.NET
      • The Code Project
      • WindowsClient.net
      • 김상욱의 개발자 Side
      • 조인시 위키
    • Human Networks
      • belief21c's e-space
      • I think I can
      • Invisible Rover's Blog :D
      • Rodman®
      • ■ Feel So Good~! ■
      • 까만 나비
      • 나를 가꾸는 시간.
      • 나만의 즐거움~~!
      • 단녕
      • 상우 :: Oranzie's BLOG
    • Information Technology
      • Microsoft TechNet
      • 지디넷코리아 - 글로벌...
    • Security
      • FoundStone
      • milw0rm
      • NewOrder
      • OpenRCE
      • Phrack.org
      • Reverse Engineering b1...
      • Reverse Engineering Team
      • RootKit
      • SecurityFocus
      • SecurityXploded by Nag...
      • Wow Hacker
      • Zone-H
Textcube
Louice Studio Inc.
Powered by Textcube. Original designed by Tistory.