線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:7367
推到 Plurk!
推到 Facebook!

用bcb程式發訊息給msn??

答題得分者是:axsoft
july
一般會員


發表:18
回覆:17
積分:7
註冊:2003-07-09

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-07-12 17:26:50 IP:218.166.xxx.xxx 未訂閱
請問各位... 有沒有辦法利用bcb發訊息給某一個人的msn 比如我執行了bcb的程式..它會自動發訊息給123@hotmail.com此人 不是發mail...是發msn訊息哦...(或是發icq) 有誰知道怎麼做..感激不盡 ^^
JerryKuo
版主


發表:42
回覆:571
積分:322
註冊:2003-03-10

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-07-17 18:16:56 IP:210.68.xxx.xxx 未訂閱
你好: 我是覺得很難啦~ 1.要發訊息給123@hotmail.com,你要先設計你的程式可以登入MSN server。 msn的訊息有一定的規格,你只要能尊照msn的規格發出封包解開封包,程式就 成功了一半啦。 2.登入之後,會有一大堆訊息要程式要處理,包括好友名單... 3.程式可以做到第二步驟,要發出訊息通知使用者,就不是問題啦。 總之,結論,粉難~~ 建議另外寫一個client和server通訊程式在兩端電腦裡,這樣會比較好做一些
axsoft
版主


發表:681
回覆:1056
積分:969
註冊:2002-03-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-07-18 09:51:29 IP:61.218.xxx.xxx 未訂閱
July您好:    A.參考一下MSDN 1.Windows Messenger Overviews  http://msdn.microsoft.com/library/en-us/messenger/overview/overview_entry.asp?frame=true 2.Windows Messenger Client Reference http://msdn.microsoft.com/library/en-us/messenger/reference/messengeruasdk/cpp_client_entry.asp?frame=true 3.Windows Messenger Client Reference http://msdn.microsoft.com/library/en-us/messenger/reference/messengeruasdk/cpp_client_entry.asp?frame=true 4.Windows Messenger Service Reference http://msdn.microsoft.com/library/en-us/messenger/reference/messengerprivateapi/cpp_service_entry.asp?frame=true B.Automating the MSN Messenger http://www.codeproject.com/com/msn_messenger.asp HAVE A NICE DAY FOR YOU
axsoft
版主


發表:681
回覆:1056
積分:969
註冊:2002-03-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-07-18 09:56:29 IP:61.218.xxx.xxx 未訂閱

Using Msn Mesenger Api With C++

資料來源:http://www.msnfanatic.be/ Creating the Messenger Object: To create the Messenger Object use the CoCreateInstance API function.
//Your FriendlyName in a MessageBox
#include 
#include "msgrua.h"
#include "msgruaid.h"    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)  
{
   IMessenger *pIMessenger = NULL; //a pointer to an IMessenger interface
   BSTR pbstrName;
   CoInitialize(0);
   CoCreateInstance(CLSID_Messenger, NULL, CLSCTX_ALL, IID_IMessenger, (void **)&pIMessenger);
   pIMessenger->get_MyFriendlyName(&pbstrName);
   MessageBoxW(NULL, (LPCWSTR)pbstrName, (LPCWSTR)pbstrName, MB_OK);
   pIMessenger->Release();
   CoUninitialize();
   ExitProcess(0);
   return 0;
}
Internally Created Objects: These objects cannot be created using the CoCreateInstance API function. Each has a specific object creation method within the Messenger API.
//Internally Created Objects
#include 
#include "msgrua.h"
#include "msgruaid.h"    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)  
{
   IMessenger *pIMessenger = NULL;
   IDispatch *pIDispatch = NULL;
   IMessengerContacts *pIMessengerContacts = NULL;
   IMessengerContact *pIMessengerContact = NULL;
   long pCount;
   BSTR pbstrName;
   BSTR pbstrFriendlyName;
   CoInitialize(0);
   CoCreateInstance(CLSID_Messenger, NULL, CLSCTX_ALL, IID_IMessenger, (void **)&pIMessenger);
   pIMessenger->get_MyContacts(&pIDispatch);
   pIDispatch->QueryInterface(IID_IMessengerContacts,(void**)&pIMessengerContacts);
   pIDispatch->Release();
   pIMessengerContacts->get_Count(&pCount);
   pIMessengerContacts->Item(pCount-1,&pIDispatch);
   pIDispatch->QueryInterface(IID_IMessengerContact,(void**)&pIMessengerContact);
   pIMessengerContacts->Release();
   pIMessengerContact->get_SigninName(&pbstrName);
   pIMessengerContact->get_FriendlyName(&pbstrFriendlyName);
   MessageBoxW(NULL, (LPCWSTR)pbstrFriendlyName, (LPCWSTR)pbstrName, MB_OK);
   pIMessengerContact->Release();
   pIMessenger->Release();
   CoUninitialize();
   ExitProcess(0);
   return 0;
}
Handling Events:
#include 
#include "msgrua.h"
#include "msgruaid.h"    class msn;
class MessengerEvents;
msn *pMsn;    IMessenger  *pIMessenger = NULL;    IConnectionPoint *m_pConnectionPoint;
DWORD m_dwCookie;    class msn : public IUnknown {
public:
   msn();
   ~msn();
   ULONG STDMETHODCALLTYPE AddRef();
   ULONG STDMETHODCALLTYPE Release();
   STDMETHODIMP QueryInterface(REFIID iid, void ** ppvObject);
   MessengerEvents *m_pMessengerEvents;
   DWORD m_dwRefCount;
};    class MessengerEvents : public IDispatch {
public:
   MessengerEvents(msn *pmsn);
   ~MessengerEvents();
   STDMETHODIMP QueryInterface(REFIID iid, void ** ppvObject);
   ULONG STDMETHODCALLTYPE AddRef();
   ULONG STDMETHODCALLTYPE Release();
   HRESULT STDMETHODCALLTYPE GetTypeInfoCount(unsigned int FAR* pctinfo);
   HRESULT STDMETHODCALLTYPE GetTypeInfo(unsigned int iTInfo, LCID  lcid,
                                         ITypeInfo FAR* FAR*  ppTInfo);
   HRESULT STDMETHODCALLTYPE GetIDsOfNames(REFIID riid, OLECHAR FAR* FAR* rgszNames,
                                           unsigned int cNames, LCID lcid, DISPID FAR* rgDispId);
   HRESULT STDMETHODCALLTYPE Invoke(DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags,
                                    DISPPARAMS FAR* pDispParams, VARIANT FAR* parResult,
                                    EXCEPINFO FAR* pExcepInfo, unsigned int FAR* puArgErr);
private:
   msn *m_pmsn;
};    msn::msn()
{
   IConnectionPointContainer* pCPContainer;
   
   m_dwRefCount = 1;
   m_pMessengerEvents = new MessengerEvents(this); 
   HRESULT hr = pIMessenger->QueryInterface(IID_IConnectionPointContainer,(void**)(&pCPContainer));
   m_dwCookie = 0;
   if (SUCCEEDED(hr))
   {
       hr = pCPContainer->FindConnectionPoint(DIID_DMessengerEvents, &m_pConnectionPoint);
       if (SUCCEEDED(hr))
       {
           hr = m_pConnectionPoint->Advise(m_pMessengerEvents, &m_dwCookie);
       }
       
       if (pCPContainer) pCPContainer->Release();
   }
}    msn::~msn()
{
   m_pConnectionPoint->Unadvise(m_dwCookie);
   m_pConnectionPoint->Release();
   if (m_pMessengerEvents) delete m_pMessengerEvents;
}    ULONG STDMETHODCALLTYPE msn::AddRef()
{ 
   return ++m_dwRefCount;
}
ULONG STDMETHODCALLTYPE msn::Release()
{
   if(!--m_dwRefCount)
       delete this;
   return m_dwRefCount;
}        STDMETHODIMP msn::QueryInterface(REFIID iid, void ** ppvObject) {
   if(ppvObject == NULL) return E_INVALIDARG;
   *ppvObject = NULL;
   if(iid == IID_IUnknown)
       *ppvObject = (IUnknown*)this;
   else if(iid == DIID_DMessengerEvents || iid == IID_IDispatch)
       *ppvObject = m_pMessengerEvents;
   if(*ppvObject == NULL) return E_NOINTERFACE;
   AddRef();
   return S_OK;
}        MessengerEvents::MessengerEvents(msn *pmsn) { m_pmsn = pmsn; }
MessengerEvents::~MessengerEvents() {}    STDMETHODIMP MessengerEvents::Invoke(DISPID dispIdMember, REFIID riid, LCID lcid,
                                    WORD wFlags, DISPPARAMS FAR* pDispParams,
                                    VARIANT FAR* parResult,
                                    EXCEPINFO FAR* pExcepInfo,
                                    unsigned int FAR* puArgErr)
{
BSTR pbstrName;
   BSTR pbstrTemp;
   if (!pDispParams)
       return E_INVALIDARG;
   
   switch (dispIdMember)
   {
   case DISPID_MUAE_ONSIGNIN:
       MessageBox(0,"Signed in",0,MB_OK);
       break;
   case DISPID_MUAE_ONSIGNOUT:
       MessageBox(0,"Signed out",0,MB_OK);
       break;
case DISPID_MUAE_ONMYFRIENDLYNAMECHANGE:
 pbstrTemp = pDispParams->rgvarg[0].bstrVal;
       pIMessenger->get_MyFriendlyName(&pbstrName);
       MessageBoxW(0,(LPCWSTR)pbstrName,(LPCWSTR)pbstrTemp,MB_OK);
       break;
default:
       break;
   }
   
   return S_OK;
}        STDMETHODIMP MessengerEvents::QueryInterface(REFIID iid, void ** ppvObject)
{ 
   return m_pmsn->QueryInterface(iid, ppvObject); 
}    ULONG STDMETHODCALLTYPE MessengerEvents::AddRef()
{ return m_pmsn->AddRef();  }    ULONG STDMETHODCALLTYPE MessengerEvents::Release()
{ 
   return m_pmsn->Release(); 
}    HRESULT STDMETHODCALLTYPE MessengerEvents::GetTypeInfoCount(unsigned int FAR* pctinfo)
{ return E_NOTIMPL; }    HRESULT STDMETHODCALLTYPE MessengerEvents::GetTypeInfo(unsigned int iTInfo, LCID  lcid,
                                                      ITypeInfo FAR* FAR*  ppTInfo)
{ return E_NOTIMPL; }    HRESULT STDMETHODCALLTYPE MessengerEvents::GetIDsOfNames(REFIID riid,
                                                        OLECHAR FAR* FAR* rgszNames,
                                                        unsigned int cNames,
                                                        LCID lcid,
                                                        DISPID FAR* rgDispId)
{ return E_NOTIMPL; }    LRESULT CALLBACK WndProc(HWND hWindow, UINT uiMessage, WPARAM wParam, LPARAM lParam)
{
   switch(uiMessage)
   {
   case WM_CLOSE:
       DestroyWindow(hWindow);
       break;
   case WM_DESTROY:
       PostQuitMessage(0);
       break;
   default:
       return DefWindowProc(hWindow, uiMessage, wParam, lParam);
   }
   return NULL;
}    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
   MSG         msg;
   HWND        hwnd;
   WNDCLASSEX  wclsx;       wclsx.cbClsExtra = NULL;
   wclsx.cbSize = sizeof(wclsx);
   wclsx.cbWndExtra = NULL;
   wclsx.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
   wclsx.hCursor = LoadCursor(NULL, IDC_ARROW);
   wclsx.hIcon = LoadIcon(NULL, IDI_APPLICATION);
   wclsx.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
   wclsx.hInstance = GetModuleHandle(NULL);
   wclsx.lpfnWndProc = WndProc;
   wclsx.lpszClassName = "MessengerEvents";
   wclsx.lpszMenuName = NULL;
   wclsx.style = NULL;       RegisterClassEx(&wclsx);
   hwnd = CreateWindow("MessengerEvents", "Handling Events", WS_VISIBLE | WS_OVERLAPPEDWINDOW,
                       0, 0, 0, 0, NULL, NULL, GetModuleHandle(NULL), NULL);
   CoInitialize(0);
   CoCreateInstance(CLSID_Messenger, NULL, CLSCTX_ALL, IID_IMessenger, (void **)&pIMessenger);
   pMsn = new msn;
   while(GetMessage(&msg, NULL, NULL, NULL))
   {
       TranslateMessage(&msg);
       DispatchMessage(&msg);
   }
   pIMessenger->Release();
   delete pMsn;
   CoUninitialize();
   ExitProcess(0);
   return 0;
}
HAVE A NICE DAY FOR YOU 發表人 - axsoft 於 2003/07/18 10:05:43
JerryKuo
版主


發表:42
回覆:571
積分:322
註冊:2003-03-10

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-07-18 10:33:05 IP:210.68.xxx.xxx 未訂閱
axsoft你好: 小弟才疏學淺,我也想寫一個msn發訊息程式,以後比較好測試。 我看了這個程式,有好幾個物件在bcb都找不到,這是要在vc 才 有的?還是在bcb新增就有?
axsoft
版主


發表:681
回覆:1056
積分:969
註冊:2002-03-13

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-07-18 14:55:01 IP:61.218.xxx.xxx 未訂閱
引言: axsoft你好: 小弟才疏學淺,我也想寫一個msn發訊息程式,以後比較好測試。 我看了這個程式,有好幾個物件在bcb都找不到,這是要在vc 才 有的?還是在bcb新增就有?
1.Import Type Library建立一個 Messenger Type Library 
2.選擇"ADD" Button,瀏覽目錄選擇'C:\Program Files\messenger'(MSN Messager v4.6的版本)
  或'C:\Program Files\MSN Messenger'(MSN Messager v5.x以上的版本) 
  視你的安裝版本而定
3.選'msnmsgr.exe'
4.安裝,產生msnxxx_TLB.hpp跟msnxxx_TLB.lib
5.將兩者加入你的專案檔編譯就行了!
註:msnxxx_TLB因你安裝的MSN版本而有所不同! 其他控制MSN Messager的相關資訊請到這查看 1. http://www.msnfanatic.be/forums/index.php?act=idx 2. MSN Messenger Protocol http://www.hypothetic.org/docs/msn/phorum/list.php?f=1 HAVE A NICE DAY FOR YOU 發表人 - axsoft 於 2003/07/18 15:10:30
JerryKuo
版主


發表:42
回覆:571
積分:322
註冊:2003-03-10

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-07-18 17:25:05 IP:210.68.xxx.xxx 未訂閱
axsoft你好:    我是用bcb6.0,msn 6.0 我在Import Type Library->add msnmsgr.exe->install 他給我一堆選項選,全部按ok 產生的檔案不是msnxxx_TLB.hpp跟msnxxx_TLB.lib 而是MessengerPrivate_TLB.cpp和MessengerPrivate_TLB.h 顯然是我用錯了,當我想重做時,他不讓我新增,因為已經存在了。 有沒有辦法移除?或是因為版本不同,得到結果不同。 利用我得到的兩個檔案,我嘗試把程式compiler,發現class名稱 並不相同,實在很難繼續做下去。 請大家再指點一下 THANK YOU 發表人 - jerrykuo 於 2003/07/18 17:27:48
axsoft
版主


發表:681
回覆:1056
積分:969
註冊:2002-03-13

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-07-21 17:45:17 IP:61.218.xxx.xxx 未訂閱
JerryKuo 您好:   我想您的Import Type Library--->MSN6是沒有問題的    MSN4.x/MSN5.x/MSN6每一個版本都不太一樣的!M$老搞這種飛機...唉!    Import MSN6(Messenger Private Type Library),會產生檔案如下: MessengerPrivate_OCX.h MessengerPrivate_TLB.h MessengerPrivate_OCX.cpp MessengerPrivate_TLB.cpp MessengerPrivate_OCX.dcr MessengerPrivate_TLB.obj 如果想控制MSN還是多K一下MSDN吧! HAVE A NICE DAY FOR YOU
JerryKuo
版主


發表:42
回覆:571
積分:322
註冊:2003-03-10

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-07-21 17:58:59 IP:61.230.xxx.xxx 未訂閱
引言: MessengerPrivate_OCX.h MessengerPrivate_TLB.h MessengerPrivate_OCX.cpp MessengerPrivate_TLB.cpp MessengerPrivate_OCX.dcr MessengerPrivate_TLB.obj 如果想控制MSN還是多K一下MSDN吧!
沒錯,我就是產生這些檔案。然後就不曉得從哪開始寫,因為看不懂。 我會去查一下MSDN,希望能看出什麼端倪。謝啦^^
系統時間:2024-03-29 20:27:33
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!