小编Nei*_*ert的帖子

使用SharpDX和EasyHook捕获全屏DX11程序的屏幕截图

在任何人提到它之前,我参考了这个链接,找出我需要将后备缓冲区复制到位图.

现在的情况

  • 我被注入目标进程
  • 目标进程'FeatureLevel = Level_11_0
  • 目标SwapChain正在使用DXGI_SWAP_CHAIN_FLAG_ALLOW_MODE_SWITCH标志.
  • SwapChain :: Present函数被挂钩.
  • 屏幕截图显示黑色和目标进程崩溃.没有截图进程运行正常.

期望的情况

正确制作屏幕截图,让目标进程继续正常执行.

注意Hook类与链接中的相同.我只添加了一个UnmodifiableHook版本,它的名字就是这么说的.我遗漏了所有不重要的位.

TestSwapChainHook.cs

using System;
using System.Runtime.InteropServices;

namespace Test
{
    public sealed class TestSwapChainHook : IDisposable
    {
        private enum IDXGISwapChainVirtualTable
        {
            QueryInterface = 0,
            AddRef = 1,
            Release = 2,
            SetPrivateData = 3,
            SetPrivateDataInterface = 4,
            GetPrivateData = 5,
            GetParent = 6,
            GetDevice = 7,
            Present = 8,
            GetBuffer = 9,
            SetFullscreenState = 10,
            GetFullscreenState = 11,
            GetDesc = 12,
            ResizeBuffers = 13,
            ResizeTarget = …
Run Code Online (Sandbox Code Playgroud)

c# directx-11 sharpdx easyhook

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

逐个字符地读取文件,然后将它们放入java中的for循环模式

我目前正在研究一个小型的循环模式,我偶然发现了我的项目中的路障.基本上,我想要的是从我的.java文件中创建一个for循环模式,该文件通过char读取源char并替换当前for循环模式中的星号:

变成这样的事情

在此输入图像描述

这是我所拥有的for循环模式的当前代码

for( i = 1; i <= 5; ++i, z = 0) { // first line
    for(int space = 1; space <= segments - i; ++space) {
        System.out.print("  ");
    }

    while(z != 2 * i - 1) {
        System.out.print("* ");
       z++;
    }

    System.out.println();
}   
for( i = 1; i <= 10; ++i, z = 0) { // second line
    for(int space = 1; space <= segments - i; ++space) {
        System.out.print("  ");
    }

    while(z != 2 * i …
Run Code Online (Sandbox Code Playgroud)

java

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

标签 统计

c# ×1

directx-11 ×1

easyhook ×1

java ×1

sharpdx ×1