关于[SetWindowLong]函数

zuizhu 2002-07-12 11:05:00
我看过了很多关于该函数的例程,都是替换进程内的[hwnd],我尝试利用该函数写个替换进程外应用程序[窗口过程]的程序,但是总是替换失败(GetWindowLong过程成功,在SetWindowLong过程中失败),但是使用这个程序替换进程内的[窗口过程]成功,试问[SetWindowLong]只能替换进程内的[窗口地址]吗?
  小第孤落寡闻,恳请诸位高手赐教,给出例子。
  不胜感激。
...全文
50 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zuizhu 2002-07-12
  • 打赏
  • 举报
回复
也就是说,[SetWindowLong]只能替换进程内部的[窗口地址]拉,那么像[Spy++]这样的“消息跟踪”程序是怎么做的呢?使用[GetMessage]函数可以吗?
fling_boy 2002-07-12
  • 打赏
  • 举报
回复
首先你得明白windows程序的运行机制,它为每一个进程分配一段虚拟的空间,各个进程内部的过程,函数,数据,的地址都是以这个进程的
基地址为基础的,所以你在用setwindowlong为别得进程内的窗口指定窗口过程时会出错,但你用它来指定窗口样式时可以正确执行。
daviddivad 2002-07-12
  • 打赏
  • 举报
回复
不清楚。
关注!
不知道设置自己进程的级别(权限)后,是否可行。
Private Declare Function AdjustTokenPrivileges Lib "advapi32.dll" Alias "AdjustTokenPrivileges" (ByVal TokenHandle As Long, ByVal DisableAllPrivileges As Long, NewState As TOKEN_PRIVILEGES, ByVal BufferLength As Long, PreviousState As TOKEN_PRIVILEGES, ReturnLength As Long) As Long

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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