欢迎访问!
您的支持是我们不断前行的动力!

Asp.net 获取用户请求公网IP,通过IP地址查用户地理位置

蜘蛛侠阅读(1475)

演示地址:

https://spidersharp.com/ip/

https://spidersharp.com/GetIP/

获取用户请求公网IP

您暂时无权查看此隐藏内容!

正则匹配是否符合IP规则

public static bool IsValidIp(string ip)
{
    bool b = Regex.IsMatch(ip, @"^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$");
    return b;
}

域名转换为IP地址(可先替换掉http://以及Https://):

System.Net.IPHostEntry host = System.Net.Dns.GetHostEntry(ip);
string ip = host.AddressList[0].ToString();

调用纯真IP地址数据,根据IP地址查询地理位置

string address=IPLocation.IPLocation.IPLocate(AppDomain.CurrentDomain.BaseDirectory+"ip.dat", ip.Trim());

源码下载:IP查询

解压密码:

您暂时无权查看此隐藏内容!

 

C# PostMessage 后台鼠标拖动操作

蜘蛛侠阅读(3496)

该方法适用于后台拖动滚动栏等操作,思路:

1,鼠标点击滚动栏某处;2,移动鼠标到最终滚动后位置;3,在最终坐标处松开鼠标。

您暂时无权查看此隐藏内容!

C#通过窗体句柄后台屏幕截图

蜘蛛侠阅读(4246)

C#通过窗体句柄后台屏幕截图,窗体可隐藏无影响

调用方法:

public static Bitmap GetSnapHandlePics(IntPtr handle)
{
    WindowSnap snap = WindowSnap.GetWindowSnap((IntPtr)Convert.ToInt32(handle.ToString()), true);
    if (snap.Image != null)
    {
        Bitmap bitmap = snap.Image;
        return bitmap;
    }
    return null;
}

C# user32.dll KeyBoardHelper 前台、后台键盘模拟输入字符串

蜘蛛侠阅读(3462)

前台键盘模拟输入

以下方法示例仅支持输入字符,如需输入其他按键(组合按键),请参考码表,转换为对应的按键码即可。

缺点:keybd_event无法向指定窗口发送按键消息,除非让目标窗口位于最顶层,并且输入框获得焦点。

[DllImport("user32.dll", EntryPoint = "keybd_event")]
private static extern void Keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo);
public static void PressKeyBoard(string inputText)
{
    for (int i = 0; i < inputText.Length; i++)
    {
        char p = inputText[i];
        Keybd_event((byte)p, 0, 0, 0);
        Keybd_event((byte)p, 0, 2, 0);
        Thread.Sleep(10);
    }
}

后台键盘模拟输入

优点:此方法无需窗体处于最顶端,可通过句柄向窗体中输入字符串,若需输入到固定位置,可通过后台鼠标操作获得焦点后输入。

您暂时无权查看此隐藏内容!

C# user32.dll MouseHelper 鼠标前台模拟点击,鼠标后台模拟点击

蜘蛛侠阅读(2663)

前台鼠标点击

前台点击会占用鼠标操作,过程可见,且要求窗体在最顶层;

[DllImport("user32.dll", EntryPoint = "SetCursorPos")]
private static extern int SetCursorPos(int x, int y);

[DllImport("user32.dll", EntryPoint = "mouse_event")]
private static extern int Mouse_event(int dwFlags, int dx, int dy, int cButtons, int dwExtraInfo);
private static readonly int MOUSEEVENTF_MOVE = 0x0001;
private static readonly int MOUSEEVENTF_LEFTDOWN = 0x0002;
private static readonly int MOUSEEVENTF_LEFTUP = 0x0004;
private static readonly int MOUSEEVENTF_ABSOLUTE = 0x8000;
/// <summary>
/// 前台点击
/// </summary>
/// <param name="x">横坐标</param>
/// <param name="y">纵坐标</param>
public static void MouseClickHere(int x, int y)
{
     //1920和1080为屏幕分辨率,可根据情况调整
     Mouse_event(MOUSEEVENTF_MOVE | MOUSEEVENTF_ABSOLUTE, (x) * 65535 / 1920, (y) * 65535 / 1080, 0, 0);
     Mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
}

后台鼠标点击

后台点击不会占用鼠标操作,过程不可见,需传入窗体句柄作为参数;

您暂时无权查看此隐藏内容!

蜘蛛侠,您身边的爬虫专家!