高手请进,标题上写不清楚。 用PostMessage模拟点击网页的弹出框,一个“确定”一个“取消”,现在通过句柄点击“确定”没问题,通过句柄点击点击“取消”的时候却还是点击了“确定”,两个按钮的句柄是没有问题的。然后我先给“取消”按钮的句柄设置了setActiveWindow或setFocus,可还是不行,该怎么办啊各位大哥哥大姐姐 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 public partial class Form1 : Form{ delegate bool EnumChildProc(IntPtr hWnd, IntPtr lParam); [DllImport("user32")] static extern bool EnumChildWindows(IntPtr hWndParent, EnumChildProc callback, IntPtr lParam); [DllImport("user32.dll")] static extern int GetClassName(IntPtr hWnd, StringBuilder lpClassName, int nMaxCount); [DllImport("User32.dll")] static extern int SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, IntPtr lParam); public Form1() { InitializeComponent(); var webBrowser1 = new WebBrowser(); webBrowser1.Name = "webBrowser1"; webBrowser1.Height = ClientSize.Height - 25; webBrowser1.Dock = DockStyle.Top; this.Controls.Add(webBrowser1); var button1 = new Button(); button1.Location = (Point)this.ClientSize - button1.Size; button1.Left /= 2; button1.Anchor = AnchorStyles.Bottom; button1.Text = ">>|"; button1.Click += this.button1_Click; this.Controls.Add(button1); this.SizeChanged += (sender, e) => webBrowser1.Height = ClientSize.Height - button1.Height; this.WindowState = FormWindowState.Maximized; webBrowser1.Navigate("http://douban.fm/"); } public List<IntPtr> FindChildWindows(IntPtr hParent) { var handles = new List<IntPtr>(); EnumChildWindows(hParent, (hChild, p) => { handles.Add(hChild); handles.AddRange(FindChildWindows(hChild)); return true; }, IntPtr.Zero); return handles; } private void button1_Click(object sender, EventArgs e) { var sb = new StringBuilder(100); var ie = FindChildWindows(this.Handle).First(hwnd => { GetClassName(hwnd, sb, sb.Capacity); return sb.ToString().Contains("Internet Explorer"); }); var doc = ((WebBrowser)this.Controls["webBrowser1"]).Document; var player = doc.All["radioplayer"]; Point pos = new Point(); for (var el = player; el != null; el = el.OffsetParent) pos.Offset(el.OffsetRectangle.Location); var scrollPos = doc.GetElementsByTagName("html")[0].ScrollRectangle.Location; pos.Offset(385 - scrollPos.X, 150 - scrollPos.Y); // 模拟鼠标点击 const int WM_LBUTTONDOWN = 0x201; const int WM_LBUTTONUP = 0x202; IntPtr lParam = (IntPtr)((pos.Y << 16) | pos.X); SendMessage(ie, WM_LBUTTONDOWN, IntPtr.Zero, lParam); SendMessage(ie, WM_LBUTTONUP, IntPtr.Zero, lParam); }} 直接发送 WM_COMMAND 消息。之前用 GetDlgCtrlID API 获取 ID。 内网向外网传输数据,解决方案 asp.net 内联框架报错? 有没有PDA上点点通话的软件 (高手,救命啊!!!)不点击treeview子节点,实现点击事件。(急) 如何遍历一个类当前在内存中创建的所有实例? snk文件的问题 50分求如何取得一个下载地址的文件名,或者文件 WPF,数据绑定,为什么没有自动跟新 c#高效率传输一个对象? 在C#中怎样获得屏幕显示的图像? c# 数据库 图片 路径 vs每次运行都重新编译,哪怕我什么都没修改,怎么回事?
{
delegate bool EnumChildProc(IntPtr hWnd, IntPtr lParam); [DllImport("user32")]
static extern bool EnumChildWindows(IntPtr hWndParent, EnumChildProc callback, IntPtr lParam); [DllImport("user32.dll")]
static extern int GetClassName(IntPtr hWnd, StringBuilder lpClassName, int nMaxCount); [DllImport("User32.dll")]
static extern int SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, IntPtr lParam); public Form1()
{
InitializeComponent(); var webBrowser1 = new WebBrowser();
webBrowser1.Name = "webBrowser1";
webBrowser1.Height = ClientSize.Height - 25;
webBrowser1.Dock = DockStyle.Top;
this.Controls.Add(webBrowser1); var button1 = new Button();
button1.Location = (Point)this.ClientSize - button1.Size;
button1.Left /= 2;
button1.Anchor = AnchorStyles.Bottom;
button1.Text = ">>|";
button1.Click += this.button1_Click;
this.Controls.Add(button1); this.SizeChanged += (sender, e) => webBrowser1.Height = ClientSize.Height - button1.Height;
this.WindowState = FormWindowState.Maximized; webBrowser1.Navigate("http://douban.fm/");
} public List<IntPtr> FindChildWindows(IntPtr hParent)
{
var handles = new List<IntPtr>();
EnumChildWindows(hParent, (hChild, p) => {
handles.Add(hChild);
handles.AddRange(FindChildWindows(hChild));
return true;
}, IntPtr.Zero);
return handles;
} private void button1_Click(object sender, EventArgs e)
{
var sb = new StringBuilder(100);
var ie = FindChildWindows(this.Handle).First(hwnd =>
{
GetClassName(hwnd, sb, sb.Capacity);
return sb.ToString().Contains("Internet Explorer");
});
var doc = ((WebBrowser)this.Controls["webBrowser1"]).Document;
var player = doc.All["radioplayer"]; Point pos = new Point();
for (var el = player; el != null; el = el.OffsetParent)
pos.Offset(el.OffsetRectangle.Location); var scrollPos = doc.GetElementsByTagName("html")[0].ScrollRectangle.Location;
pos.Offset(385 - scrollPos.X, 150 - scrollPos.Y); // 模拟鼠标点击
const int WM_LBUTTONDOWN = 0x201;
const int WM_LBUTTONUP = 0x202; IntPtr lParam = (IntPtr)((pos.Y << 16) | pos.X);
SendMessage(ie, WM_LBUTTONDOWN, IntPtr.Zero, lParam);
SendMessage(ie, WM_LBUTTONUP, IntPtr.Zero, lParam);
}
}