我想做一个关于MSN自动发消息的程序 
下面是我的DLL  我在里面是用小i机器人对话框,
主要问题是SendMessage(h_wnd, EM_REPLACESEL, 0,(LPARAM)msg);
我想问的是MSN是不是屏蔽了EM_REPLACESEL消息?老是黏贴不起我的内容啊。
dll
#include "stdafx.h"
#include "ismsndll.h"
#include <stdio.h>#pragma data_seg("MySec")HWND h_wnd=NULL;
HHOOK g_hhook = NULL;
DWORD g_dwThreadIdMsn = 0;
char msg[255];
#pragma data_seg()
//#pragma comment(linker,"/section:MySec,RWS")HINSTANCE g_hinstDll = NULL;
DWORD dwThreadId=NULL;
BOOL APIENTRY DllMain( HANDLE hModule, 
DWORD ul_reason_for_call, 
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
g_hinstDll = (HINSTANCE)hModule;
break;
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
LRESULT CALLBACK KeyboardProc(
  int code,       // hook code
  WPARAM wParam,  // virtual-key code
  LPARAM lParam   // keystroke-message information
)
{
if(VK_F3==wParam)
{
//MessageBox(h_wnd,L"启动成功",L"nihao",MB_OK);
}
//拦截Ctrl+回车,自动追加自己设置的信息
if (VK_F4==wParam)
{   
SendMessage(h_wnd, EM_REPLACESEL, 0,(LPARAM)msg);
}
return CallNextHookEx(g_hhook, code, wParam, lParam);
}
void CPHook(char *pstr)
{
strcpy(msg,pstr);
}
void SetHook(DWORD dwThreadId)
{
if(dwThreadId != 0)
{
  MessageBox(h_wnd,L"线程启动成功",L"nihao",MB_OK);
  g_dwThreadIdMsn = GetCurrentThreadId();
  h_wnd=FindWindowEx(NULL,NULL,L"IMWindowClass",L"小i机器人 — 对话");
} if(h_wnd==NULL)
{
MessageBox(h_wnd,L"启动失败",L"nihao",MB_OK); }
g_hhook =SetWindowsHookEx(WH_KEYBOARD,KeyboardProc,g_hinstDll,dwThreadId);}
启动程序主要代码
void ChahaaDlg::OnEnChangeEdit1()
{
// TODO:  如果该控件是 RICHEDIT 控件,则它将不会
// 发送该通知,除非重写 CDialog::OnInitDialog()
// 函数并调用 CRichEditCtrl().SetEventMask(),
// 同时将 ENM_CHANGE 标志“或”运算到掩码中。 // TODO:  在此添加控件通知处理程序代码
  CWnd   *pWnd;   
  pWnd=this->GetDlgItem(IDC_EDIT1);   //EdIT控件的ID   
     
  pWnd->GetWindowText(str);
  CPHook((char*)(LPCTSTR)str);
  //MessageBox(str); 
  //strcpy(msg,(char*)(LPCTSTR)str);}void ChahaaDlg::OnBnClickedButton1()
{ // TODO: 在此添加控件通知处理程序代码
CWnd *pMsnWin = FindWindow(TEXT("IMWindowClass"),NULL);
if(pMsnWin != NULL) MessageBox(L"找到句柄"); //通过窗口句柄得到对应的线程的ID
hDll=LoadLibrary (L"..\\ismsndll\\debug\\ismsndll.dll");

SetHook(GetWindowThreadProcessId(pMsnWin->GetSafeHwnd(),NULL));
/*CWnd   *pWnd;   
    pWnd=this->GetDlgItem(IDC_EDIT1);   //EdIT控件的ID   
    CString   str;   
    pWnd->GetWindowText(str);   

    strcpy((char*)GetProcAddress(hDll,"msg"),(char*)(LPCTSTR)str);*/
}