API函数OpenProcess的问题

纪俊 2003-01-23 05:06:20
我在Winme下的CB中试图用OpenProcess打开扫雷并在接下来用ReadProcessMemory和WriteProcessMemory来修改

扫雷中的数据,但是却在OpenProcess处出错,提示Access violention.请高手们帮忙.
我是按照去年<<程序员>>二月刊中的<<跨越内存禁区,修改游戏数据>>一文写的程序.笔者用Delphi成功地实现

了这些功能.

HWND pt;//窗口句柄
pt=FindWindowEx(0,0,"扫雷",0);
if (pt==0)
{
ShowMessage("扫雷没有启动!");
Close();
}
else
{
ShowMessage("扫雷启动了!");
unsigned long *ptid;
GetWindowThreadProcessId(pt,ptid);
HWND ptprocess;
ptprocess=OpenProcess(PROCESS_ALL_ACCESS,true, *ptid); //Access violention wrong
//上边这一行出错了
ShowMessage("成功了!");
CloseHandle(ptprocess);
}


请高手们帮忙.谢谢!
...全文
131 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
纪俊 2003-01-23
  • 打赏
  • 举报
回复
感谢大家!
qing_li73 2003-01-23
  • 打赏
  • 举报
回复
refer to :

http://www.codeproject.com/cpp/kill_process.asp
http://www.codeproject.com/threads/processes.asp
ykj76 2003-01-23
  • 打赏
  • 举报
回复
HWND pt;//窗口句柄
pt=FindWindowEx(0,0,"扫雷",0);
if (pt==0)
{
ShowMessage("扫雷没有启动!");
Close();
}
else
{
ShowMessage("扫雷启动了!");
unsigned long ptid;
GetWindowThreadProcessId(pt,&ptid);
HWND ptprocess;
ptprocess=OpenProcess(PROCESS_ALL_ACCESS,true, ptid);
ShowMessage("成功了!");
CloseHandle(ptprocess);
}

// 试试可以了吗
web_spider 2003-01-23
  • 打赏
  • 举报
回复
unsigned long *ptid;
GetWindowThreadProcessId(pt,ptid);
HWND ptprocess;
ptprocess=OpenProcess(PROCESS_ALL_ACCESS,true, *ptid);
改成下面的试试:
unsigned long ptid;
GetWindowThreadProcessId(pt,&ptid);
HWND ptprocess;
ptprocess=OpenProcess(PROCESS_ALL_ACCESS,true, &ptid);

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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