• 全部
  • C#综合技术
  • C#互联网桌面应用
  • AppLauncher
  • WinForm&WPF
  • C#开发新技术
  • 问答

怎么向别的程序发送鼠标点击消息?

shyworm 2004-04-23 02:06:48
或者说怎么用一个程序控制鼠标点击另外一个程序(例如浏览器)的某个位置?
...全文
129 点赞 收藏 10
写回复
10 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
whalefish2001 2004-05-02
那别人的程序要做成 DLL 并且还要提供一个接口。

这样的话,可以实现。

不过,不知道你是不是我所说的那个意思。

还是实现鼠标真实的点击?(叫鼠标动起来)




回复
shyworm 2004-04-30
Montaque的做法是,两个程序都是自己写的。问题是我想用我的程序点击别人的程序(例如浏览器)。
回复
潜水员2099 2004-04-24

UP
回复
Montaque 2004-04-24
App 2, 发送消息
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Runtime.InteropServices;

namespace AppB
{
/// <summary>
/// Form1 的摘要说明。
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.Container components = null;

public Form1()
{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent();

//
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//
}

/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}

#region Windows 窗体设计器生成的代码
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.button1 = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// button1
//
this.button1.Location = new System.Drawing.Point(192, 112);
this.button1.Name = "button1";
this.button1.TabIndex = 0;
this.button1.Text = "button1";
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(400, 326);
this.Controls.Add(this.button1);
this.Name = "Form1";
this.Text = "App2";
this.Load += new System.EventHandler(this.Form1_Load);
this.ResumeLayout(false);

}
#endregion

/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Form1());
}


[DllImport("user32.dll")]
public static extern Int32 PostMessage(IntPtr hWnd,
Int32 Msg,
Int32 wParam,
Int32 lParam
);

[DllImport("user32.dll")]
public static extern IntPtr FindWindow(String lpClassName , String lpWindowName ) ;

private System.Windows.Forms.Button button1;


public const Int32 WM_USER = 0x400;
public const Int32 WM_KKK =WM_USER+ 123 ;

private void button1_Click(object sender, System.EventArgs e)
{
//find windows
IntPtr app1Handle=FindWindow(null,"APP1");
System.Diagnostics.Debug.Assert(!app1Handle.Equals(IntPtr.Zero));

PostMessage(app1Handle,WM_KKK,0,0);

}

private void Form1_Load(object sender, System.EventArgs e)
{

}


}
}
回复
Montaque 2004-04-24
给段代码
应用程序1

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;

namespace AppA
{
/// <summary>
/// Form1 的摘要说明。
/// </summary>
public class Form1 : System.Windows.Forms.Form,IMessageFilter
{
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.Container components = null;

public Form1()
{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent();

//
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//
}

/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}

#region Windows 窗体设计器生成的代码
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(292, 266);
this.Name = "Form1";
this.Text = "APP1";
this.Load += new System.EventHandler(this.Form1_Load);

}
#endregion

/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Form1());
}

private void Form1_Load(object sender, System.EventArgs e)
{
Application.AddMessageFilter(this);
}
public const Int32 WM_USER = 0x400;
public const Int32 WM_KKK =WM_USER+ 123 ;

#region IMessageFilter 成员

public bool PreFilterMessage(ref Message m)
{
// TODO: 添加 Form1.PreFilterMessage 实现
if(m.Msg==WM_KKK)
{
MessageBox.Show("I received a messag from other app" );

return true;
}
return false;
}

#endregion


}
}
回复
HNU 2004-04-23


学习,哪位能给具体代码?
回复
whalefish2001 2004-04-23
Montaque(Rain + Man=Rainman) 说的到是种不错的方法,
不过不知道在C#里能不能实现。在vc++里实现没问题。

回复
Montaque 2004-04-23
直接sendmessage ,调用api,可以自定义一个消息.

另外程序中,实现ImessageFilter ,截获这个消息.
回复
terryxin 2004-04-23
不明白,你到底是自动的点击,有没有一定的规律性啊,
回复
Jinniu 2004-04-23
别的程序发送消息可以用消息队列来完成!这么捕获鼠标点击那就看你自己的呢!
回复
相关推荐
使用Windows API向指定窗口发送模拟鼠标及键盘消息
最近要做一个控制某个特定窗口的功能,需要将一些鼠标和键盘控制消息映射到对应的窗口上,再用这个就不行了。之后查了下,应该是可以用SendMessage或者PostMessage来做的,但使用的过程中遇到了一些问题,解决之后...
VBA调用WinAPI,后台程序发送鼠标消息(鼠标动作)
用 sendmessege 实现了对后台程序发送鼠标动作 做法是 先人手打开画图程序,切换回excel点击按钮 就可以在画图程序画出一个正方形图案 对想要学习 如何 sendmessage 到后台程序的同学很有帮助。 Private Declare ...
Delphi 模拟点击鼠标左键、右键和发送消息.rar
Delphi 模拟按键,将虚拟键转换为扫描码,模拟鼠标右键和左键以及发送消息的功能,Shift和Ctrl都定义了特殊的功能,一个简单的键盘鼠标模拟程序,适合Delphi初学者。比如模拟点击鼠标左键,具体的代码编写为:  ...
用投递消息实现点击外部程序的菜单(易语言源代码)
用投递消息实现点击外部程序的菜单(易语言源代码)
无法某些窗口发送模拟键盘鼠标消息的问题
一些情况下,我们可以通过postmessage 和sendmessage指定窗口发送模拟键盘及鼠标消息(像按键精灵一样的效果)。 但是有些游戏窗口我们貌似发送成功了,但是发现游戏压根没反应,这时我们可以用spy++检测指定窗口...
VC 其他程序发送按键消息
【转】VC 其他程序发送按键消息 VC如何模拟按键并释放? 模拟按键: 利用PostMessage函数发送按键消息. HWND hWnd; hWnd = ::FindWindow(NULL, "指定的窗口标题");//得到目标窗口句柄 if ( hWnd ...
python如何用一个程序另一个程序发送数据
假如有一个python程序等待输入,然后另一个程序这个程序发送A。请问该怎么实现?
MFC其他程序发送wm_command消息失败
MFC 点击按钮其他程序发送wm_command消息, _点击按钮发送后,要移动一下鼠标或键盘按一下键,才会发出消息,目标窗口才会做出响应, 请问是怎么回事,要怎么解决. 如果鼠标不动,消息发不出来.目标窗口没反应 ``` ...
后台鼠标点击后台鼠标点击
现在,市面上有很多键盘精灵、鼠标精灵,而且功能很强,而这一款软件与它们相比,功能简单了 一些,但是由于WS鼠标自动按键器与它们的工作原理不一样,它采用指定程序窗口发送鼠标按键消息的方式(实际上并不在该...
鼠标左键设置自动点击
鼠标自动点击 两种方发,一种是消息发送,一种是卓标定位发送,值得学习的
求助:程序如何模拟鼠标点击一个TreeView节点?
void CreateTreeViewControl(HWND hMainWnd) { g_hTreeView = CreateWindow(WC_TREEVIEW, _T("Tree View"), WS_VISIBLE | WS_CHILD | WS_BORDER | TVS_HASLINES | TVS_LINESATROOT, 5, 5, 320, 480, hMainWnd, NULL
通过API函数发送鼠标点击消息
此文来自http://topic.csdn.net/u/20090325/07/ab133e9f-de30-4ae0-a3d0-4c0238a651ff.html和http://topic.csdn.net/u/20090325/07/dcb048a0-c0ee-481f-b0ec-29e4e31e8acc.html这两个帖子的讨论,感谢Tiger_Zhao,...
mouse_event的鼠标点击事件 和 使用PostMessage或者SendMessage发送鼠标点击事件有何区别
A程序的主窗口下有个控件,我要在B程序中模拟鼠标点击该控件。 在B程序中,首先使用的是给控件发鼠标点击事件,大致代码如下,其中hwnd就是该控件的句柄。这种做法也很明确可以实现点击该控件的效果。 PostMessage...
c++实现定时qq好友发送消息
今天闲来无事突然想qq只能即时发送消息,能不能够使用其他的程序来控制qq发送指定的程序呢,后来参考了部分资料才发现,可以先通过获得qq的聊天窗口的句柄,然后通过模拟按键来实现qq消息的模拟发送。 ...
Windows下指定窗口模拟发送键盘消息
发送消息,我们可以使用SendMessage()和PostMessage(),所以,只要使用这两个函数来发送鼠标和键盘的相关消息就可以了。此外,还可以通过keybd_event()和mouse_event()两个专用的函数进行鼠标和键盘按键的模拟操作。...
模拟鼠标点击
原理当用户在对话框上进行一系列动作时,背后的行为就是一个动作产生一个消息,从而引发一系列消息响应,我们可以利用PostMessage或SendMessage函数去发送相对应的消息,就可以完成模拟操作了。...
SendMessage 模拟鼠标点击扫雷方块
鼠标模拟扫雷方块快速胜利程序是Windows控制台应用程序进去SaoLei.cpp里面的代码书写主要分下面六部分#include "stdafx.h"#include &lt;Windows.h&gt;//必备#include &lt;iostream&gt;//...
MFC 通过发送消息完成按钮操作模拟鼠标单击事件的发生的问题
实际上系统并不能区分按钮是真的按下了(如用鼠标点击), 还是一个我们自己用代码模拟出的一种"假象". 它所需要知道的只是哪个窗口(按钮也是一种窗口)发生了哪一种事件, 然后在消息循环中处理它. 系统怎么才 能知道...
windows编程之鼠标消息总结
1 确定鼠标是否存在:fMouse = GetSystemMetrics (SM_MOUSEPRESENT) ;...可以分为显示区域消息,非显示区域消息,总共21个鼠标消息,其中11个消息和显示区域无关。 WM_MOUSEMOVE --鼠标移过窗口的显示区
用C#调用Windows API指定窗口发送按键消息(转载)
用C#调用Windows API指定窗口发送按键消息 z 用C#调用Windows API指定窗口发送 一、调用Windows API。 C#下调用Windows API方法如下: 1、引入命名空间:using System.Runtime.InteropServices;  2、...
MFC模拟鼠标点击
急救包里有什么:这个项目需要Flash程序一直在桌面运行,以免扫码枪输出不了,所以就是让鼠标一直点击MFC中运行的Flash 2、初始化中: 1、使用公司标准库打开Flash,设置一下位置,里面的位置我都是写了配置文件,...
前端面试题
前端面试题汇总 ... 你做的页面在哪些流览器测试过?这些浏览器的内核分别是什么? 21 ... 21 Quirks模式是什么?它和Standards模式有什么区别 21 div+css的布局较table布局有什么优点?...img的alt与title有何异同?...
Word提示:“向程序发送命令时出现问题”解决方法
本来想给公司同事做一些名片的,但是刚刚一打开Word却半天没反映,Word打不开,也启动不了,过了会出现个提示框:“向程序发送命令时出现问题”。还好小编是学计算机专业的,这种事情肯定是难不倒我,相信遇到这种...
CAD出现向程序发送命令时出现问题提示解决方法分享
大家有没有遇到在使用cad打开图纸的时候提示向程序发送命令时出现错误的情况呢,如果你在使用cad的时候出现了这个提示,是由于软件的兼容性出现了问题,那么该怎么办呢,下面小编就给大家带来cad打开图纸提示向程序...
前端面试锦集
前端面试锦集
前端面试题(持续更新中)
前端面试题 1.闭包 闭包就是能够读取其他函数内部变量的函数。 闭包的缺点:滥用闭包函数会造成内存泄露,因为闭包中引用到的包裹函数中定义的变量都 永远不会被释放,所以我们应该在必要的时候,及时释放这个闭包...
告白代码
简介 这是程序员表白系列中的第二波网站表白,旨在让任何人都能使用并创建自己的表白网站给心爱的人看。 此波共有8个表白网站,可以任意修改和使用,源码已上传,演示网址如下。 ... 顺便求一波打赏,微信支付,金钱...
C#基础教程-c#实例教程,适合初学者
本章介绍C#语言的基础知识,希望具有C语言的读者能够基本掌握C#语言,并以此为基础,能够进一步学习用C#语言编写window应用程序和Web应用程序。当然仅靠一章的内容就完全掌握C#语言是不可能的,如需进一步学习C#语言...
2019最新Web前端经典面试试题及答案-史上最全前端面试题(含答案)
近期总结一一些面试题 都是企业的面试题笔记题 感觉薪资10k下的都会出笔试题 ...同时分享一个自己录制的CSS3动画特效经典案例【推荐教程】--后期会更新vue框架 微信小程序等内容。 https://ke.qq.com/cou...
测试开发笔记
测试开发笔记 第一章 测试基础 7 什么是软件测试: 7 ★软件测试的目的、意义:(怎么做好软件测试) 7 3.软件生命周期: 7 第二章 测试过程 8 1.测试模型 8 H模型: 8 V模型 9 2.内部测试 10 ...
发帖
C#
创建于2007-09-28

10.5w+

社区成员

.NET技术 C#
申请成为版主
帖子事件
创建了帖子
2004-04-23 02:06
社区公告

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