游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2444|回复: 8

关于外挂的问题?

[复制链接]

2

主题

4

帖子

8

积分

新手上路

Rank: 1

积分
8
发表于 2008-7-23 06:21:00 | 显示全部楼层 |阅读模式
这是现在的代码

Option Explicit

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long

Private Sub Timer1_Timer()
Dim hwnd As Long ' 储存 FindWindow 函数返回的句柄
hwnd = FindWindow(vbNullString, "NavyFIELD") ' 取得进程标识符

If hwnd = 0 Then
Label1.Caption = "游戏未运行"
Else
Label1.Caption = "游戏已运行"
End If
End Sub

Private Sub Form_Load()
Timer1.Interval = 100
End Sub

    我下一步想用setwindowpos函数让NavyFIELD这个游戏窗口一直处于最顶层 然后使用postmessage函数进行键盘的模拟

可看了3个多钟头 还是把握不了该如何使用这两个函数  烦请大大们给举个实例 写一段代码 该怎么将目标为NavyFIELD的游戏窗口设为最顶层再发送键盘模拟?谢谢!

26

主题

537

帖子

537

积分

高级会员

Rank: 4

积分
537
发表于 2008-7-23 09:24:00 | 显示全部楼层

Re:关于外挂的问题?

setwindowpos关键是正确的窗口句柄和两个常量值

Const HWND_TOPMOST As Long = -1
Const SWP_SHOWWINDOW As Long = &H40

使用时 SetWindowPos(hd, HWND_TOPMOST, Left, Top, Width, Height, SWP_SHOWWINDOW)

35

主题

1735

帖子

1739

积分

金牌会员

Rank: 6Rank: 6

积分
1739
QQ
发表于 2008-7-23 10:32:00 | 显示全部楼层

Re:关于外挂的问题?

不是有外挂区吗?

29

主题

475

帖子

483

积分

中级会员

Rank: 3Rank: 3

积分
483
发表于 2008-7-23 13:06:00 | 显示全部楼层

Re:关于外挂的问题?

先声明API
Public Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long

再声明常量
Public Const HWND_TOPMOST = -1
Public Const HWND_NOTOPMOST = -2
Public Const SWP_NOSIZE = &H1
Public Const SWP_NOMOVE = &H2
Public Const SWP_NOACTIVATE = &H10
Public Const SWP_SHOWWINDOW = &H40
Public Const SPI_GETWORKAREA = 48

使用这个函数就可以了让窗口置顶了,如果是别的窗口,把那个Me改成窗口名就可以了
SetWindowPos Me.hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOMOVE Or SWP_NOSIZE

29

主题

475

帖子

483

积分

中级会员

Rank: 3Rank: 3

积分
483
发表于 2008-7-23 13:22:00 | 显示全部楼层

Re:关于外挂的问题?

关于POSTMESSAGE的用法

POSETMESSAGE用于向指定窗口消息列队发送消息

先声明API
Public Declare Function PostMessage Lib "user32" Alias &quotostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

再声明常量
Public Const WM_MOUSEMOVE = &H200
Public Const WM_LBUTTONDOWN = &H201
Public Const WM_LBUTTONUP = &H202
Public Const WM_CLOSE = &H10
(更多消息常量可以上网去查)

事先通过FindWindow获得窗口句柄WinWnd,使用上面的常量可以对窗口发送指定的消息,后面两个是消息参数,视消息类型而定
PostMessage WinWnd, WM_CLOSE, 0&, 0&

0

主题

15

帖子

15

积分

新手上路

Rank: 1

积分
15
发表于 2008-7-23 17:21:00 | 显示全部楼层

Re:关于外挂的问题?

为什么不用SendMessage WinWnd, WM_CLOSE, 0&, 0&?

2

主题

4

帖子

8

积分

新手上路

Rank: 1

积分
8
 楼主| 发表于 2008-7-24 06:53:00 | 显示全部楼层

Re:关于外挂的问题?

元帅师兄 不管用啊!

29

主题

475

帖子

483

积分

中级会员

Rank: 3Rank: 3

积分
483
发表于 2008-7-24 16:28:00 | 显示全部楼层

Re: Re:关于外挂的问题?

游戏家长: Re:关于外挂的问题?

为什么不用SendMessage WinWnd, WM_CLOSE, 0&, 0&?


命题指定使用PostMessage

2

主题

4

帖子

8

积分

新手上路

Rank: 1

积分
8
 楼主| 发表于 2008-7-24 23:10:00 | 显示全部楼层

Re:关于外挂的问题?

元帅师兄 我按你教的 对程序添加了一个模块 将函数声明和调用语句都写在上面 运行提示“未定义变量”

之后我又在窗口里试了遍 将函数常量的public属性改为private 然后在from load里写的调用语句 还是提示“未定义变量”
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-21 22:14

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表