怎么用SendMessage向其他窗口发送按键

ly19940807 2011-09-09 11:44:06
怎么用SendMessage向其他窗口发送按键?????
小弟想做一个DNF的连发程序,不想下载人家的,想自己写一个
比如向窗口发送 K 这个键,下面是我的代码

//发送按键
[DllImport("user32.dll", EntryPoint = "SendMessage")]
static extern bool SendMessage(IntPtr hWnd, Int32 msg, Int32 wParam, Int32 lParam);
//查找窗口句柄
[DllImport("USER32.DLL")]
public static extern IntPtr FindWindow(string lpClassName,
string lpWindowName);
//设置进程窗口到最前
[DllImport("USER32.DLL")]
public static extern bool SetForegroundWindow(IntPtr hWnd);
//WM_KEYDOWN 按下一个键
public static int WM_KEYDOWN = 0x0100;
//释放一个键
public static int WM_KEYUP = 0x0101;
//K键的键盘值
public const int VK_SPACE = 75;
private void button1_Click(object sender, EventArgs e)
{
IntPtr dnf = FindWindow(null, "地下城与勇士");
//如果找到窗口句柄
if (dnf != IntPtr.Zero)
{
//设置游戏窗口到最前
SetForegroundWindow(dnf);
SendMessage(dnf, WM_KEYDOWN, VK_SPACE, 0);
SendMessage(dnf, WM_KEYUP, VK_SPACE, 0);
}

}

代码哪里错了?我只知道第一个参数是发送目标窗口的句柄,那第二个,第三个,第四个参数都是怎么写的?
麻烦大家指导一下
...全文
1112 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ly19940807 2011-09-11
  • 打赏
  • 举报
回复
嗯,keybd_event这个函数我试了不行,想试试SENDMESSAGE但是不知道后3个参数怎么写
sdl2005lyx 2011-09-11
  • 打赏
  • 举报
回复
你在VC里面怎样使用SendMessage的,既然你采取平台调用,在C#做了对应的声明,那在C#的使用方:那第二个,第三个,第四个参数,跟VC使用一样!

只是在接收处理一方有区别:

protected override void DefWndProc(ref Message m)
{
try
{
switch (m.Msg)
{
case 0x0100: //处理消息WM_KEYDOWN,wParam,lParam在Message类对应成员里
//加上你处理的代码
break;
default:
base.DefWndProc(ref m);//调用基类函数处理非自定义消息。
break;
}
}
catch(Exception ex)
{
MessageBox.Show(ex.Message + "DefWndProc");
}

}
  • 打赏
  • 举报
回复
获取句柄发就是了。但是很多时候哈,默认是窗体标题收。所以你要获取控件句柄。
还有就是,QQ等一些有安全措施的,获取密码呀,发送按键都是不可行的,这也让我万分郁闷。但是可定有办法解决的,只是很难。我以前用鼠标点击和发送按键写梦幻西游外挂,最后sendmessage是不行的,只有sendkeys行(貌似是这个,我也快忘了,呵呵)这个不是win32Api的,就是一个方法而已。很简单~~~但是网上又有这些外挂和盗号的,证明是可以破解的。关键是技术,瞎扯了一通。
萧炎 2011-09-10
  • 打赏
  • 举报
回复
DNF?
地下城与勇士?
pupo 2011-09-10
  • 打赏
  • 举报
回复
很多游戏都是屏蔽了sendmessage的
Herbert 2011-09-10
  • 打赏
  • 举报
回复
游戏窗口和普通窗口不一样吧 你拿普通程序试下
Icedmilk 2011-09-09
  • 打赏
  • 举报
回复
如果你已经让接受消息的窗口在最前就可以直接调用keybd_event这个函数来产生消息

另外WinForm有个SendKeys类是干这个的

111,097

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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