sendmessage发送过后无效果

sianaci 2018-04-06 06:36:47
想做一个自动登录的程序
但是卡住了
求助

在ollydbg中的调用
而我自己编写的时候
参数一模一样 却无法实现同样的效果

请问是什么原因呢?
企鹅某游戏
...全文
639 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
schlafenhamster 2018-05-07
  • 打赏
  • 举报
回复
跨进程 的 SendMessage 不能 带 指针 参数(不同进程 指针 不可 存取)如

void CRemoteListCtrlDlg::RemoteHeaderItem(HWND hWnd)
{	
// GetItemCount
	int nHeaderCount=::SendMessage(hWnd,HDM_GETITEMCOUNT,0,0);// 不带 指针 参数
// Get hProcess
	DWORD pid;
	GetWindowThreadProcessId(hWnd,&pid);
	HANDLE hProcess=OpenProcess(PROCESS_ALL_ACCESS,FALSE,pid);
//
	HDITEM *pHeaderItem = (HDITEM*)VirtualAllocEx(hProcess, NULL, sizeof(HDITEM), MEM_COMMIT, PAGE_READWRITE);
	char   *pItem = (char*)VirtualAllocEx(hProcess, NULL, 80, MEM_COMMIT, PAGE_READWRITE);
	if ((!pHeaderItem) || (!pItem))
	{
		::MessageBox(NULL, "无法分配内存!", "错误!", NULL);
		CloseHandle(hProcess);
		return;
	}
//
	HDITEM HeaderItem;
	HeaderItem.cchTextMax = 80;
	HeaderItem.mask = HDI_TEXT;
	HeaderItem.pszText = pItem;
//
	char ItemBuf[80];
	for(int i=0; i<nHeaderCount; i++)
	{
		HeaderItem.iOrder=i;
		WriteProcessMemory(hProcess, pHeaderItem, &HeaderItem, sizeof(HDITEM), NULL);
		::SendMessage(hWnd, HDM_GETITEM, i, (LPARAM)pHeaderItem);//  带 同进程 的指针 ! 
		ReadProcessMemory(hProcess, pItem, ItemBuf, 80, NULL);
//		afxDump << ItemBuf << "\n";
	}
//释放内存
	CloseHandle(hProcess);
	VirtualFreeEx(hProcess, pHeaderItem, 0, MEM_RELEASE);
	VirtualFreeEx(hProcess, pItem, 0, MEM_RELEASE);
}
「已注销」 2018-05-07
  • 打赏
  • 举报
回复
6.0 以上必须是管理员权限执行,否则会被过滤。
zgl7903 2018-04-09
  • 打赏
  • 举报
回复

BOOL SimClick(LPCWSTR wsWindName, UINT uBtnID)
{
  BOOL bRet = FALSE;
  HWND hParent = FindWindowW(NULL, wsWindName);
  HWND hChild = GetDlgItem(hParent, uBtnID);
  if(hParent && hChild)
  {
    bRet = SendMessageW(hParent, WM_COMMAND, 
      MAKEWPARAM(uBtnID, BN_CLICKED), (LPARAM)hChild);
  }

  return bRet;
}

void CDlg7Dlg::OnButton1() 
{
  // TODO: Add your control notification handler code here
  SimClick(L"计算器", 0x83); //计算器数字7
}

l357630798 2018-04-09
  • 打赏
  • 举报
回复
消息要给BN_CLICKED, LPARAM/RPARAM给0试试
sichuanwww 2018-04-09
  • 打赏
  • 举报
回复
schlafenhamster 2018-04-09
  • 打赏
  • 举报
回复
跨进程 ,不能 传 地址 !
worldy 2018-04-09
  • 打赏
  • 举报
回复
可能是你FindWindow找到的窗口 1. 返回NULL 2 返回的窗口不是你的目标窗口句柄 3.你返回的窗口其窗口过程没有处理WM_COMMAND,ID为1001的消息
sdghchj 2018-04-07
  • 打赏
  • 举报
回复
用异步的PostMessage
paschen 2018-04-06
  • 打赏
  • 举报
回复
从图上看,你通知消息是BN_CLICKED

那个1001参数低位应该那个是按钮ID,高位是BN_CLICKED的值(0)

最后那个参数是按钮的句柄

具体参看:https://msdn.microsoft.com/en-us/library/windows/desktop/bb761825(v=vs.85).aspx

当然,不排除他软件采用一些其他手段进行防止

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧