在获得下载弹出对话框句柄后,想点击保存按钮弹出保存路径窗口lpszName_Submit = "保存(&S)";
EdithWnd = FindWindowEx(ParenthWnd,EdithWnd,lpszClass_Submit,lpszName_Submit);
PostMessage(EdithWnd ,WM_CLICK ,(IntPtr)0,"0");
没有响应,大家遇到过这样问题吗?如何解决的。
EdithWnd = FindWindowEx(ParenthWnd,EdithWnd,lpszClass_Submit,lpszName_Submit);
PostMessage(EdithWnd ,WM_CLICK ,(IntPtr)0,"0");
没有响应,大家遇到过这样问题吗?如何解决的。
WM_LBUTTONDOWN
WM_LBUTTONUP
两个都用后,也是没有反应。
[DllImport("User32.dll", EntryPoint = "PostMessage")] private static extern int PostMessage(IntPtr hwnd,int Msg,IntPtr wParam,string lParam);
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;namespace WindowsApplication48
{
public partial class Form1 : Form
{
[DllImport("User32.dll", EntryPoint = "PostMessage")]
static extern int PostMessage(IntPtr hwnd, int Msg, IntPtr wParam, string lParam); [DllImport("User32.dll ")]
static extern IntPtr FindWindowEx(IntPtr parent, IntPtr childe, string strclass, string strname); const int WM_CLICK = 0x00F5;
String lpszName_Submit = "保存(&S)"; public Form1()
{
InitializeComponent(); Button AcceptButton = new Button();
AcceptButton.Text = lpszName_Submit;
AcceptButton.Parent = this;
AcceptButton.Click += new EventHandler(B_Click); Button PostMessageButton = new Button();
PostMessageButton.Text = "发送消息";
PostMessageButton.Parent = this;
PostMessageButton.Click += new EventHandler(PostMessageButton_Click);
PostMessageButton.Location = Point.Add(AcceptButton.Location, new Size(100, 0));
} void B_Click(object sender, EventArgs e)
{
MessageBox.Show("AcceptButton按钮收到消息");
} void PostMessageButton_Click(object sender, EventArgs e)
{
// 我这里就直接把这个窗口的句柄当父句柄了
IntPtr EdithWnd = FindWindowEx(this.Handle, IntPtr.Zero, null, lpszName_Submit);
PostMessage(EdithWnd, WM_CLICK, IntPtr.Zero, null);
}
}
}
你想同步的话用SendMessage。而且我觉得吧,关键的问题是,你的接收端的消息循环是如何处理的,这才是问题的关键,而应该不仅仅是发送端的问题吧。
用在“取消”按钮上是可以的。高手们不妨试试
应该不是发送端的问题,
因为如果给“取消”按钮发生的话,那么下载就会取消,
如果给“保存(&S)”按钮发生,不会弹出保存文件的openFileDialog对话框。
文件夹-》工具-》文件夹选项-》文件类型-》MP3-》高级 中勾选“下载后确认打开”选项
然后到百度随便找个MP3,不用任何工具下载,就会出来一个下载对话框,然后给这个对话框的
“保存(&S)”按钮发消息试试看。
下载对话框是windows默认的下载对话框,不是我的程序。
保存和取消都是windows下载对话框的按钮。
明白了,那么接下来的问题是,你想向保存键发消息,然后想让系统自己按照“习惯”弹出它的对话框是吧……我明白你的意思了。
可能参数lparam 和wparam不应该为零吧……
或者测试一下EdithWnd = FindWindowEx(ParenthWnd,EdithWnd,lpszClass_Submit,lpszName_Submit); 是否返回了你期望的控件
因为用返回值在给取消发消息时OK的。
那很可能就是lparam和wparam是否应该发送0的问题了吧。
谢谢大家关注,结贴了。