Java教程

悬赏猫任务平台源码

本文主要是介绍悬赏猫任务平台源码,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

新版悬赏猫任务网站源码分享 可封装APP+教程

新版悬赏猫源码仿似度97(附详细教程)

想弄成APP,也可以打包源码封装成APP使用

源码开发语言:后端TP框架,前端H5。

vue框架 HB打包 宝塔php5.6 数据库5.6

后台地址 域名+admin

后台账号admin 密码qq1737571164

教程:见压缩包,小白也能做

文件:590m.com/f/25127180-498361278-fa0064(访问密码:551685)

以下内容无关:

-------------------------------------------分割线---------------------------------------------

我们也许会有一些奇怪的需求,比如说禁止一个外部程序的窗口大小更改。

如果我们没法修改外部程序的代码,那要怎么做呢?

当然,我们可以通过DLL注入目标程序的方式去Hook或registry一个事件来检测,但这也太麻烦了吧。

如果想做非侵入式的,那就需要用到Windows下的系统函数去完成工作。

查来查去,最好用的是MoveWindow函数

1 MoveWindow(IntPtr hWnd, int X, int Y, int nWidth, int nHeight, bool bRepaint)
可以看到,这个函数要求传入一个IntPtr类型的句柄、一组int类型的坐标、以及int类型的窗口的宽度和高度和最后的bool类型的是否刷新显示。

句柄大家应该都知道是什么,相当于是ID身份证一样的存在,坐标就是指你把窗口移动到屏幕上的那个坐标。高宽不必说,这就是我们要改的。至于刷新显示我们也无需过多理解,一个性能问题罢了。

首先我们要获取坐标,先写一个窗口枚举器

/*窗口句柄枚举器*/
public static class WindowsEnumerator
{
    private delegate bool EnumWindowsProc(IntPtr windowHandle, IntPtr lParam);
    [DllImport("user32.dll", SetLastError = true)]
    private static extern bool EnumWindows(EnumWindowsProc callback, IntPtr lParam);
    [DllImport("user32.dll", SetLastError = true)]
    private static extern bool EnumChildWindows(IntPtr hWndStart, EnumWindowsProc callback, IntPtr lParam);
    [DllImport("user32.dll", SetLastError = true)]
    static extern int GetWindowText(IntPtr hWnd, StringBuilder lpString, int nMaxCount);
    [DllImport("user32.dll", SetLastError = true)]
    static extern int GetWindowTextLength(IntPtr hWnd);
    private static List<IntPtr> handles = new List<IntPtr>();
    private static string targetName;
    public static List<IntPtr> GetWindowHandles(string target)
    {
        targetName = target;
        EnumWindows(EnumWindowsCallback, IntPtr.Zero);
        return handles;
    }
    private static bool EnumWindowsCallback(IntPtr HWND, IntPtr includeChildren)
    {
        StringBuilder name = new StringBuilder(GetWindowTextLength(HWND) + 1);
        GetWindowText(HWND, name, name.Capacity);
        if (name.ToString() == targetName)
            handles.Add(HWND);
        EnumChildWindows(HWND, EnumWindowsCallback, IntPtr.Zero);
        return true;
    }
}

调用方法是

WindowsEnumerator.GetWindowHandles(“窗口名字”)
然后这个方法返回的是一个数组,我们需要用到foreach去遍历里面的东西

foreach (var item in WindowsEnumerator.GetWindowHandles(“窗口名字”))
这个item的数据类型是IntPtr,也就是moveWindow函数所需的第一个参数hWnd——句柄

我们接着看第二组参数,需要传入X和Y,也就是窗口移动到屏幕上的位置。

如果把这个写死,你的窗口就无法移动了,只会固定在一个地方。

所以我们需要动态的去获取窗口当前位置,然后把位置传入给moveWindow方法所需的X和Y参数。

这篇关于悬赏猫任务平台源码的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!