小编Man*_*hia的帖子

有没有办法在最小化时从流程中获取屏幕截图?

今天我现在可以获得最小化应用程序窗口的截图.例如,如果我打开Paint,即使Paint被最小化,我也会看到Paint主窗口的屏幕截图.

这个获取WindowsSnap的类有点长代码所以我将它添加到pastebin.com WindowSnap.cs

WindowSnapCollection类也将它添加到pastebin.com WindowSnapCollection.cs中

在form1顶部和构造函数我正在做:变量:

private Graphics g;
private Image img;
private Image imgClone;
Run Code Online (Sandbox Code Playgroud)

然后在构造函数中:

        img = new Bitmap(pictureBoxSnap.Width, pictureBoxSnap.Height);
        imgClone = new Bitmap(pictureBoxSnap.Width, pictureBoxSnap.Height);
        Graphics g;
        using (g = Graphics.FromImage(img))
        {
            g.Clear(Color.White);
        }

        pictureBoxSnap.Image = img;

        this.listBoxSnap.Items.AddRange(WindowSnap.GetAllWindows(true, true).ToArray());
        for (int i = listBoxSnap.Items.Count - 1; i >= 0; i--)
        {
            string tt = listBoxSnap.Items[i].ToString();
            if (tt.Contains(" ,"))
            {
                listBoxSnap.Items.RemoveAt(i);
            }
        }
        buttonSnap.Enabled = true;

        string[] myList = new string[listBoxSnap.Items.Count];

        for (int i = 0; i < listBoxSnap.Items.Count; i++) …
Run Code Online (Sandbox Code Playgroud)

.net c# winforms

7
推荐指数
1
解决办法
154
查看次数

如何获取用户视频目录?

我试过这个:

userVideosDirectory = Directory.GetParent(Environment.GetFolderPath
                                 (Environment.SpecialFolder.ApplicationData)).FullName + "\\Videos";
Run Code Online (Sandbox Code Playgroud)

但那给了我:

C:\Users\username\AppData\Videos
Run Code Online (Sandbox Code Playgroud)

但是我没有目录AppData:

C:\Users\username\Videos
Run Code Online (Sandbox Code Playgroud)

如何在没有AppData的情况下获取视频目录?

.net c# winforms

5
推荐指数
1
解决办法
885
查看次数

如何从一个方法返回多个变量?

此方法仅返回进程文件名:

public static string GetProcessInfo(IntPtr hwnd)
{
    uint pid = 0;
    GetWindowThreadProcessId(hwnd, out pid);
    Process proc = Process.GetProcessById((int)pid);
    return proc.MainModule.FileName.ToString();
}
Run Code Online (Sandbox Code Playgroud)

但是我想要返回进程名称:

proc.ProcessName;
Run Code Online (Sandbox Code Playgroud)

.net c# winforms

4
推荐指数
2
解决办法
127
查看次数

如何使用SetWindowPos?

IntPtr handle = process.MainWindowHandle;
if (handle != IntPtr.Zero)
{
    SetWindowPos(handle, 0, 0, 0, 0, 0, SWP_NOZORDER | SWP_NOSIZE | SWP_SHOWWINDOW);
}
Run Code Online (Sandbox Code Playgroud)

然后,当我在构造函数中调用例如SetWindowPos时,应该给它什么?处理很好,我知道应该是什么。但是所有的resr 0,0,0,0,0,0以及SWP_NOZORDER和SWP_NOSIZE的值应该是多少?

我要做的是将手柄置于屏幕的正面和中央。把它放到最前面,我知道我正在使用的方法SetForegroundWindow(IntPtr hWnd);,并且工作正常。但是,如何使用SetWindowPos强制将其置于屏幕中央?

.net c# winforms

1
推荐指数
1
解决办法
9366
查看次数

标签 统计

.net ×4

c# ×4

winforms ×4