c# 在WebBrowser中用SendMessage模擬鼠標(biāo)點(diǎn)擊
更新時(shí)間:2010年02月06日 14:04:10 作者:
想在WebBrowser控件里面模擬鼠標(biāo)點(diǎn)擊,在百度上找了半天,怎么也找不到,還是google強(qiáng)大,在一個(gè)國(guó)外網(wǎng)站上找到的,代碼比較清楚了,不做說明。
復(fù)制代碼 代碼如下:
using System;
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 BrowserMouseClick
{
public partial class Form1 : Form
{
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = false)]
static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr GetWindow(IntPtr hWnd, uint uCmd);
[DllImport("user32.dll", CharSet = CharSet.Auto)]
static extern int GetClassName(IntPtr hWnd, StringBuilder lpClassName, int nMaxCount);
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
webBrowser1.Navigate("http://www.devpub.com");
}
private void btnMouseClick_Click(object sender, EventArgs e)
{
int x = 100; // X coordinate of the click
int y = 80; // Y coordinate of the click
IntPtr handle = webBrowser1.Handle;
StringBuilder className = new StringBuilder(100);
while (className.ToString() != "Internet Explorer_Server") // The class control for the browser
{
handle = GetWindow(handle, 5); // Get a handle to the child window
GetClassName(handle, className, className.Capacity);
}
IntPtr lParam = (IntPtr)((y << 16) | x); // The coordinates
IntPtr wParam = IntPtr.Zero; // Additional parameters for the click (e.g. Ctrl)
const uint downCode = 0x201; // Left click down code
const uint upCode = 0x202; // Left click up code
SendMessage(handle, downCode, wParam, lParam); // Mouse button down
SendMessage(handle, upCode, wParam, lParam); // Mouse button up
}
}
}
想在WebBrowser控件里面模擬鼠標(biāo)點(diǎn)擊,在百度上找了半天,怎么也找不到,還是google強(qiáng)大,在一個(gè)國(guó)外網(wǎng)站上找到的,代碼比較清楚了,不做說明。
您可能感興趣的文章:
- C#模擬Http與Https請(qǐng)求框架類實(shí)例
- C#模擬http 發(fā)送post或get請(qǐng)求的簡(jiǎn)單實(shí)例
- C#采用mouse_event函數(shù)實(shí)現(xiàn)模擬鼠標(biāo)功能
- C#實(shí)現(xiàn)的三種模擬自動(dòng)登錄和提交POST信息的方法
- C# SendInput 模擬鼠標(biāo)操作的實(shí)現(xiàn)方法
- 使用C#發(fā)送Http請(qǐng)求實(shí)現(xiàn)模擬登陸實(shí)例
- C#基于socket模擬http請(qǐng)求的方法
- c#模擬銀行atm機(jī)示例分享
- C#模擬window操作鼠標(biāo)的方法
- C#如何使用Bogus創(chuàng)建模擬數(shù)據(jù)示例代碼
相關(guān)文章
asp.net 刪除項(xiàng)目文件/文件夾IIS重啟,Session丟失問題
最近在做一個(gè)項(xiàng)目,涉及到大量文件中轉(zhuǎn)(先上傳到本項(xiàng)目的某個(gè)文件夾中,在移動(dòng)到FTP中),后面發(fā)現(xiàn)每次一刪除文件之后在做操作都會(huì)提示未登錄,剛開始以為是WebService Session丟失問題,后面發(fā)現(xiàn)緩存也更新了2011-12-12
自定義 DataList 顯示數(shù)據(jù)行數(shù)的方法
自定義 DataList 顯示數(shù)據(jù)行數(shù)的方法,需要的朋友可以參考一下2013-03-03
asp.net 利用NPOI導(dǎo)出Excel通用類的方法
本篇文章主要介紹了asp.net 利用NPOI導(dǎo)出Excel通用類的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06
ASP.NET實(shí)現(xiàn)TreeView的XML數(shù)據(jù)源綁定實(shí)例代碼
這篇文章介紹了ASP.NET實(shí)現(xiàn)TreeView的XML數(shù)據(jù)源綁定實(shí)例代碼,有需要的朋友可以參考一下2013-11-11
淺談如何在ASP.NET Core中實(shí)現(xiàn)一個(gè)基礎(chǔ)的身份認(rèn)證
這篇文章主要介紹了淺談如何在ASP.NET Core中實(shí)現(xiàn)一個(gè)基礎(chǔ)的身份認(rèn)證,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2016-12-12
實(shí)例解析Java中的synchronized關(guān)鍵字與線程安全問題
首先要清楚的是synchronized鎖住的不是代碼而是對(duì)象,因而在編寫相關(guān)的代碼塊時(shí)要注意線程同步安全問題,下面就來以實(shí)例解析Java中的synchronized關(guān)鍵字與線程安全問題2016-06-06
Entity Framework加載控制Loading Entities
本文詳細(xì)講解了Entity Framework加載控制Loading Entities的用法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-03-03
asp.net Reporting Service在Web Application中的應(yīng)用
由于我們這個(gè)項(xiàng)目中使用微軟的報(bào)表服務(wù)(Reporting Services)作為報(bào)表輸出工具,本人也對(duì)它進(jìn)行一點(diǎn)點(diǎn)研究,雖沒有入木三分,但這點(diǎn)知識(shí)至少可以在大部分Reporting Service的場(chǎng)景中應(yīng)用。2008-11-11

