小编Sim*_*ier的帖子

枚举计算机上的监视器

我找到了7种不同的方法来枚举连接到计算机的显示器.但是所有解决方案都会给出不同的结果(监视器的数量和每个监视器上的信息).

这些解决方案是:

  1. 使用着名的 EnumDisplayDevices

  2. 运用 EnumDisplayMonitors

  3. 使用Windows Management Instrumentation(WMI):
    使用以下查询:SELECT * FROM WmiMonitorIDroot\\WMI命名空间中.

  4. 再次使用WMI:
    使用新查询:SELECT * FROM Win32_DesktopMonitorroot\\CIMV2命名空间中.

  5. 使用Setup API:
    首先调用SetupDiGetClassDevs以检索设备信息集,然后迭代SetupDiEnumDeviceInfo

  6. 使用的DirectX图形基础结构(DXGI)
    随着第一IDXGIFactory::EnumAdapters,然后IDXGIAdapter::EnumOutput

  7. 使用连接和配置显示(CCD)API:
    QueryDisplayConfig(QDC_ALL_PATHS, &numPathArrayElements, pathInfoArray, &numModeInfoArrayElements, modeInfoArray, nullptr);

我试图准确理解所有这些方法与MSDN参考之间的区别,徒劳无功.

意见

从我观察到的:

  • WmiMonitorID安装程序API查询返回连接(不一定活性)显示器的列表.
  • Win32_DesktopMonitor WMI查询返回错误(至少意想不到的)结果(仅1个显示器枚举即使不活动时,和桌面另一台显示器上).
  • EnumDisplayDevices返回活动设备列表(除非只有1个监视器处于活动状态且其他监视器已连接)
  • EnumDisplayMonitorsDXGI查询返回活动监视器列表.
  • CCD似乎是最可靠的方法(在目标和源之间提供所有可能的路径).

问题

使用这些方法时(连接显示列表,已安装显示列表,活动显示列表),我真正期望得到什么结果?如果我使用镜像显示器或扩展显示器怎么办?如果计算机有多个没有多个输出的图形卡怎么办?

额外奖励:某些方法(DXGI …

c++ windows gdi dxgi

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

通过C#解析并执行JS

我有简单的爬虫爬行和搜索页面.但现在我有问题如何从该页面执行和解析js链接.有没有人知道如何解析和执行js页面?

例:

  • some_url很容易用webhtmltoolktit解析
  • JAVASCRIPT:runmeat(1,7,0,2,7,9)是js链接,然后重定向到some_url2页面,我需要抓取此页面.但问题是如何在C#中执行此javascript以获得some_url2链接?

javascript c# scriptengine

19
推荐指数
2
解决办法
5万
查看次数

frame_dummy在分析的上下文中意味着什么?

在使用gprof配置我编写的C++程序的过程中,我注意到绝大部分执行时间都花在函数"frame_dummy"上.更确切地说,gprof输出的平面轮廓中的第一个条目显示花费的样本时间占76.38%,而24611191调用名称为frame_dummy的函数.

总之,我想了解双方frame_dummy指的是什么 - 因为我没有命名为这样的任何功能 - 以及这是什么意思我的优化工作.

虽然它不太可能相关,但我应该补充说,该程序旨在使用多重网格算法解决泊松方程,并使用MPI来并行化任务.但是,虽然存在MPI函数调用,但上面提到的gprof输出源自仅运行单个进程.我还应该注意,除了MPI之外,我的程序没有依赖性,并且使用g ++ 4.6.1编译.

c++ profiling g++

12
推荐指数
2
解决办法
7701
查看次数

使用 C# 监听系统重启/关闭事件 - 跨平台

如果我们只是谈论 Windows,我可以使用Microsoft.Win32.SystemEvents.SessionEnding

有什么跨平台的东西可以使用吗?我想要一些可以在 Windows 和 Linux 上运行的东西。我将使用 .NET 6.0

c# linux windows .net-6.0

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

ASP.NET结束标记

当我在我的.aspx应用程序中使用VisualStudio 2010中的自动完成时,关闭控件标记有不同的默认完成:

<asp:CheckBox /> 
<asp:Label></asp:Label>
Run Code Online (Sandbox Code Playgroud)

这种行为有解释吗?

<asp:CheckBox></asp:CheckBox>
<asp:Label />
Run Code Online (Sandbox Code Playgroud)

不会无效.

asp.net webforms visual-studio

10
推荐指数
3
解决办法
718
查看次数

属性网格数格式

是否可以格式化winforms的PropertyGrid中显示的数字属性?

class MyData
{
      public int MyProp {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

我希望它在网格中显示为例如1.000.000.

这有什么属性吗?

c# propertygrid winforms

9
推荐指数
2
解决办法
5760
查看次数

如何从矩形中获取图像?

我正在制作一个裁剪图像的程序.我有两个PictureBoxes和一个名为'crop'的按钮.一个图片框包含一个图像,当我在其中选择一个矩形并按"裁剪"时,所选区域出现在另一个图片框中; 所以当我按下裁剪时程序正在运行.问题是:如何将裁剪区域的图像转换为图片框?

 Rectangle rectCropArea;
 Image srcImage = null;

 TargetPicBox.Refresh();
 //Prepare a new Bitmap on which the cropped image will be drawn
 Bitmap sourceBitmap = new Bitmap(SrcPicBox.Image, SrcPicBox.Width, SrcPicBox.Height);
 Graphics g = TargetPicBox.CreateGraphics();

 g.DrawImage(sourceBitmap, new Rectangle(0, 0, TargetPicBox.Width, TargetPicBox.Height), 
 rectCropArea, GraphicsUnit.Pixel);

 //Good practice to dispose the System.Drawing objects when not in use.
 sourceBitmap.Dispose();

 Image x = TargetPicBox.Image;
Run Code Online (Sandbox Code Playgroud)

问题是x = null并且图像显示在图片框中,那么如何将图像从此图片框中转换为Image变量?

c# system.drawing winforms

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

将包含属性的上下文传递给TypeConverter

我正在寻找一种方法将附加信息传递给a TypeConverter,以便为转换提供一些上下文而无需创建自定义构造函数.

传递的额外信息将是原始对象(在编译时称为接口),其中包含我正在转换的属性.它包含自己的属性,这些属性Id对于查找转换相关信息非常有用.

我已经看过ITypeDescriptorContext的文档,但是我还没有找到一个如何实现该接口的明确示例.我也不相信这是我需要的工具.

目前,在我的代码中我打电话:

// For each writeable property in my output class.

// If property has TypeConverterAttribute
var converted = converter.ConvertFrom(propertyFromOriginalObject)

propertyInfo.SetValue(output, converted, null);
Run Code Online (Sandbox Code Playgroud)

我想做的就像是.

// Original object is an interface at compile time.
var mayNewValue = converter.ConvertFrom(originalObject, propertyFromOriginalObject)
Run Code Online (Sandbox Code Playgroud)

我希望能够使用其中一个重载来执行我需要的操作,以便任何自定义转换器都可以从TypeConverter具有自定义构造函数的基类继承,因为通过依赖注入和DependencyResolver.Current.GetService(type)从MVC使用初始化可以使生活更轻松我的转换器.

有任何想法吗?

c# type-conversion typeconverter typedescriptor icustomtypedescriptor

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

更改VS重新加载文件的行为

我有一个VSIX项目,它将在ASPNET5项目的Project.json文件中进行一些更改.我正在使用以下命令编辑.json文件.

ProjectJson jsonObj = JsonConvert.DeserializeObject<ProjectJson>(jsonContents);
jsonObj = JsonConvert.DeserializeObject<ProjectJson>(jsonContents);

var resultJson = JsonConvert.SerializeObject(jsonObj, Formatting.Indented);

JsonSerializer serializer = new JsonSerializer();
using (StreamWriter sw = new StreamWriter(projectObjects.ProjectJsonPath))
{
     var writer = new JsonTextWriter(sw);
     serializer.Serialize(writer, resultJson);
}

// File.WriteAllText(projectObjects.ProjectJsonPath, resultJson);
Run Code Online (Sandbox Code Playgroud)

通过使用stream writer和writealltext我在ASPNET 5项目中获取以下消息

该文件在此编辑器中有未保存的更改,并已在外部更改.你想重装吗?

如何编辑.json文件而不收到上述消息?

json visual-studio vsix

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

具有多视频适配器 (GPU) PC 的 DirectX11

通常DirectX11初始化是从创建DirectX11设备开始的:

D3D_DRIVER_TYPE driverTypes[] =
{
    D3D_DRIVER_TYPE_HARDWARE,
    D3D_DRIVER_TYPE_WARP,
    D3D_DRIVER_TYPE_REFERENCE,
};

UINT nNumDriverTypes = ARRAYSIZE(driverTypes);

// Feature levels supported
D3D_FEATURE_LEVEL featureLevels[] =
{
    D3D_FEATURE_LEVEL_11_0,
    D3D_FEATURE_LEVEL_10_1,
    D3D_FEATURE_LEVEL_10_0,
    D3D_FEATURE_LEVEL_9_1
};

UINT nNumFeatureLevels = ARRAYSIZE(featureLevels);
D3D_FEATURE_LEVEL featureLevel;

// Create device
for (UINT n = 0; n < nNumDriverTypes; ++n)
{
    hr = D3D11CreateDevice(nullptr,driverTypes[n],nullptr, D3D11_CREATE_DEVICE_BGRA_SUPPORT,featureLevels,nNumFeatureLevels,
        D3D11_SDK_VERSION,&m_pDevice,&featureLevel,&m_pDeviceContext);
Run Code Online (Sandbox Code Playgroud)

然后为您的窗口创建一个交换链:

IDXGIDevice* pDXGIDevice = nullptr;
HRESULT hr = m_pDevice->QueryInterface(__uuidof(IDXGIDevice),
    reinterpret_cast<void**>(&pDXGIDevice));
if (SUCCEEDED(hr))
{
    IDXGIAdapter* pDXGIAdapter = nullptr;
    hr = pDXGIDevice->GetParent(__uuidof(IDXGIAdapter),
        reinterpret_cast<void**>(&pDXGIAdapter));   
    if (SUCCEEDED(hr))
    {
        IDXGIFactory2* pDXGIFactory = nullptr;
        hr = …
Run Code Online (Sandbox Code Playgroud)

c c++ gpu directx-11 dxgi

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