游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1861|回复: 7

问几个问题

[复制链接]

8

主题

120

帖子

120

积分

注册会员

Rank: 2

积分
120
QQ
发表于 2005-11-8 03:08:00 | 显示全部楼层 |阅读模式
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

这个函数可以通过一个运行的程序的标题名来获取句柄号
比如我是这么写的:
l = FindWindow(vbNullString,"无标题 - 记事本")
请问一下,ByVal lpClassName As String这个参数是什么东西? 类型名?

如果我想通过某个映象名称来获取它的句柄号,我应该用什么函数? 请告诉我谢谢。

Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

这个函数可以像一个窗口发送消息,目前我能做到的是发送关闭程序,和模拟键盘。
我想知道如何模拟鼠标? 请告诉我谢谢
您就写个,把鼠标移动到100,100的位置双击左键


130

主题

2714

帖子

2714

积分

金牌会员

Rank: 6Rank: 6

积分
2714
发表于 2005-11-8 13:15:00 | 显示全部楼层

Re:问几个问题

Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Type POINTAPI
MI As Long
MJ As Long
End Type

Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Private Const VK_LBUTTON = &H1      '鼠标左键
Private Const VK_RBUTTON = &H2      '鼠标右键

--------------------------------------------------------------'

Dim POINT As POINTAPI
GetCursorPos POINT

Text1 = "(" & POINT.MI & "," & POINT.MJ & ")"      '显示鼠标的坐标(需要建一个TEXT文本框)

If POINT.MI > 0 And POINT.MI < 100 And POINT.MJ > 0 And POINT.MJ < 100 Then    '鼠标的位置0,0-100,100

If GetAsyncKeyState(VK_LBUTTON) And &H8000 Then      '按下鼠标左键
If GetAsyncKeyState(VK_RBUTTON) And &H8000 Then      '按下鼠标右键

不明白的话我发例子上来.

8

主题

120

帖子

120

积分

注册会员

Rank: 2

积分
120
QQ
 楼主| 发表于 2005-11-8 14:31:00 | 显示全部楼层

Re:问几个问题

If GetAsyncKeyState(VK_LBUTTON) And &H8000 Then      '按下鼠标左键
If GetAsyncKeyState(VK_RBUTTON) And &H8000 Then      '按下鼠标右键

这两句不明白啊,怎么用了IF
GetAsyncKeyState返回一个整形数值? 这里意思就是不返回0的话就THEN?
And &H8000 这又是什么意思?
THEN后面没写东西,我试着写:GetAsyncKeyState VK_LBUTTON不过没有用。

8

主题

120

帖子

120

积分

注册会员

Rank: 2

积分
120
QQ
 楼主| 发表于 2005-11-8 14:54:00 | 显示全部楼层

Re:问几个问题

我明白你写的了,不过你理解错了我的意思。

我要的效果相当于:
Private Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long
Private Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Const MOUSEEVENTF_LEFTDOWN = &H2 '  left button down
Private Const MOUSEEVENTF_LEFTUP = &H4 '  left button up

Private Sub Command1_Click()
    SetCursorPos 100, 100
    Sleep 100
    mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
    mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
End Sub

Private Sub Command2_Click()    '这个按钮在100,100的位置
    MsgBox "Click!"
End Sub

但是这个程序运行的时候,我就不能再移动我的鼠标了
其实就是要做一个在游戏里模仿鼠标和键盘的动作
但运行的时候我一样可以干别的事情,比如聊QQ。

130

主题

2714

帖子

2714

积分

金牌会员

Rank: 6Rank: 6

积分
2714
发表于 2005-11-8 15:09:00 | 显示全部楼层

Re:问几个问题

THEN  后面是你要做的事.

可能我没明白你的意思, 不过我的方法是可以实现你的想法, 还需要写更多的代码.

8

主题

120

帖子

120

积分

注册会员

Rank: 2

积分
120
QQ
 楼主| 发表于 2005-11-8 15:49:00 | 显示全部楼层

Re:问几个问题

可是我想知道的就是,要后面再写的代码
就是如何让程序模拟鼠标的移动的点击。
并不是判断鼠标是否在某一个区域点击了。

130

主题

2714

帖子

2714

积分

金牌会员

Rank: 6Rank: 6

积分
2714
发表于 2005-11-8 17:08:00 | 显示全部楼层

Re:问几个问题

你是不是搞外挂呀!!???

8

主题

120

帖子

120

积分

注册会员

Rank: 2

积分
120
QQ
 楼主| 发表于 2005-11-8 18:46:00 | 显示全部楼层

Re:问几个问题

是呀
Ultima Online知道吗?
这个游戏练功是允许挂机的,不是官方站。
这个游戏练功不挂机会死人的。
我是想试着做个外挂,主要还是学会。

何况只是模拟鼠标和键盘的,并不是修改什么东西呀。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-22 13:30

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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