小编Céd*_*non的帖子

枚举计算机上的监视器

我找到了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
查看次数

XPath中的多个条件(和运算符)

我有以下XML:

<bookstore>
    <books>
        <book name="book1" title="Title 1" author="Author 1"/>
        <book name="book2" title="Title 2" author="Author 2"/>
        <book name="book3" title="Title 1" author="Author 2"/>
    </books>

    <myBooks>
        <book name="Test1" title="Title 1" author="Author 1"/>
        <book name="Test2" title="Title 2" author="Author 1"/>
        <book name="Test3" title="Title 1" author="Author 2"/>
    </myBooks>
</bookstore>
Run Code Online (Sandbox Code Playgroud)

我想所有namebookmyBooks那没有一个相应bookbooks(标题和作者).

因此,对于该示例,我想要检索:该书,"Test2"因为该对("Title 2", "Author 1")不存在books.

到目前为止,我有:

//myBooks/book[not(@title = //books/book/@title and @author = //books/book/@author)]
Run Code Online (Sandbox Code Playgroud)

但是,当然,在这种情况下,上述XPath不起作用,因为存在组合("标题2","作者1")(来自"book2"和"book1").

如何and在同一节点上应用运算符?

xml xslt xpath

12
推荐指数
1
解决办法
3万
查看次数

c#将任何日期格式字符串解析为datetime

在C#中,我如何解析日期时间的格式"dd/mm/yyyy"或格式字符串"dd-mm-yyyy"?我收到一个错误,指出我的字符串格式不正确.我需要能够解析所有格式而不仅仅是其中一种格式.

c# datetime parsing

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

使用iTextSharp禁用扩展功能

我有一个PDF模板,其中包含启用了扩展功能的表单.使用iTextSharp填写此表单的字段后,使用acrobat reader的用户会收到错误消息:

本文档在Adobe Reader中启用了扩展功能.该文档自创建以来已更改,并且不再使用扩展功能.请联系作者以获取本文档的原始版本.

我google了一下,但所有的帖子都谈到了"启用"扩展功能,但是,我希望表单字段保持禁用状态关闭扩展功能

这是我正在使用的示例代码:

using (var existingFileStream = new FileStream(fileNameExisting, FileMode.Open))
using (var newFileStream = new FileStream(fileNameNew, FileMode.Create))
{
    // Open existing PDF
    var pdfReader = new PdfReader(existingFileStream);

    // PdfStamper, which will create
    var stamper = new PdfStamper(pdfReader, newFileStream);

    var form = stamper.AcroFields;

    var fieldKeys = form.Fields.Keys;

    foreach (string fieldKey in fieldKeys)
    {
        if (fieldKey.Equals("Retailer Name"))
            form.SetField(fieldKey, retailerName);
    }
    // “Flatten” the form so it wont be editable/usable anymore
    stamper.FormFlattening = true; …
Run Code Online (Sandbox Code Playgroud)

c# itextsharp

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

在WPF中使StackPanel方向水平

我有这个xaml代码View

<StackPanel>
    <Button Content="I am IRON" />
    <ListView ItemsSource="{Binding Path=MeasuringDeviceCommunicators}">
        <ListView.ItemTemplate>              
            <DataTemplate>
            <StackPanel Orientation="Horizontal">
                <TextBlock Text="{Binding Path=Name}"/>
            </StackPanel>
        </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)

所述ItemSourceListView结合于List在我的ViewModel(如图所示在代码)

当我运行应用程序时,所有我TextBlocks都垂直显示,即使我已将Orientation内部StackPanel设置为Horizontal.

c# wpf xaml

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

将具有月份名称的日期解析为C#DateTime

我想将以下日期格式解析为C#中的DateTime对象.

"19 Aug 2010 17:48:35 GMT+00:00"
Run Code Online (Sandbox Code Playgroud)

我怎么能做到这一点?

c# datetime

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

存储库模式和本地缓存

我有以下接口/类:

public interface IUnitOfWork : IDisposable
{
    event EventHandler<EventArgs> Saved;
    DbSet<T> Set<T>() where T : class;
    DbEntityEntry<T> Entry<T>(T entity) where T : class;
    void Commit();
}
Run Code Online (Sandbox Code Playgroud)

以及存储库的实现:

public class CachedSqlRepository<T, TKey, TContext> : ICacheRepository<T, TKey, TContext>
    where T : class
    where TContext : DbContext, IDisposable, new()
{
    //A list of the Navigation Properties to include
    private readonly Expression<Func<T, object>>[] _NavigationProperties;

    public CachedSqlRepository(params Expression<Func<T, object>>[] navigationProperties)
    {
        _NavigationProperties = navigationProperties;
        using (TContext dbContext = new TContext()) //Fetch the List of Entities …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework repository-pattern

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

如何将淫秽数据写入文件?

我正在开发一个应用程序,它从大量文本文件(~2.5 GB)读取行,将每行操作为特定格式,然后将每行写入文本文件.一旦输出文本文件关闭,程序"批量插入"(SQL Server)将数据存入我的数据库.它有效,它只是很慢.

我正在使用StreamReaderStreamWriter.

由于我必须操纵文本,我几乎一直在阅读一行.但是,我认为,如果我制作了一系列线条并且每1000行左右写出一个集合,那么它至少可以加快速度.问题是(这可能纯粹是出于我的无知),我不能写一个string[]使用StreamWriter.在探索StackOverflow和互联网的其余部分后,我遇到了File.WriteAllLines,它允许我写入string[]文件,但我不认为我的计算机的内存可以处理2.5 GB的数据一次存储.此外,文件已创建,填充和关闭,因此我必须制作大量较小的文件来分解2 GB文本文件,只是将它们插入数据库.所以我宁愿远离这个选择.

我能想到的一个黑客工作是制作一个StringBuilder并使用该AppendLine方法添加每一行来制作一个巨大的字符串.然后我可以将其转换StringBuilder为字符串并将其写入文件.

但足够我的推测.我已经实现的方法有效,但我想知道是否有人可以建议更好的方法将数据块写入文件?

c# optimization performance

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

如何模拟硬件来衡量.net应用程序的性能?

我正在尝试优化我的应用程序性能,这是由C#编写的,我正在尝试测量我的系统的某些功能,如(吞吐量,资源利用率,工作负载,执行时间,垃圾收集等)来衡量这些东西我我正在使用某种类型的Profilers和性能监视器.

我可以看到这些工具为不同的硬件配置提供了不同的结果.所以我想限制我的硬件配置以满足最低要求.我的问题是

  • 虚拟地(通过某种模拟器)如何限制硬件资源(如CPU,内存,存储)?
  • 这些测试是否存在任何工具(开源最好?
  • 如果我做错了,任何人都可以建议进行这些测试的专业方法是什么?

.net c# testing performance profiling

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

如何将ObservableCollection <bool>绑定到WPF中的Checkbox的Listbox

让我用这个问题作为前缀,说明我对C#和WPF都很新.

我正在尝试将一组Boolean值连接到一个包含6个复选框的容器,并在按下按钮时存储这些值的状态.我假设有一种简单的方法可以做到这一点,因为绑定到一个集合的复选框似乎是很自然的事情,但到目前为止我看到的所有解决方案似乎都过于复杂(例如:http:// merill. net/2009/10/wpf-checked-listbox /).

我通过修改的数据模板创建的复选框ListBox,设置ItemsSourceListBoxObservableCollection,但我的问题是,我不知道该怎么绑定IsChecked到,因为我试图将其绑定到实际对象的集合而不是对象的属性.

c# wpf mvvm

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