小编Vin*_*ghe的帖子

Excel Interop - 效率和性能

我想知道我可以做些什么来提高Excel自动化的性能,因为如果你在工作表中有很多事情,它可能会很慢......

这里有一些我发现自己:

  • ExcelApp.ScreenUpdating = false - 关闭重绘屏幕

  • ExcelApp.Calculation = Excel.XlCalculation.xlCalculationManual - 关闭计算引擎,以便Excel在单元格值更改时不会自动重新计算(在完成后将其重新打开)

  • 减少对Worksheet.Cells.Item(row, col)和的调用Worksheet.Range- 我不得不轮询数百个单元格以找到我需要的单元格.实现一些单元格位置的缓存,将执行时间从大约40秒减少到大约5秒.

什么样的互操作会对性能造成严重影响,应该避免?你还能做些什么来避免不必要的处理?

c# excel performance interop vsto

62
推荐指数
5
解决办法
3万
查看次数

Firefox扩展中的ContentScript,不使用附加SDK

有没有一种简单的方法可以为简单的内容脚本创建Firefox扩展,而无需使用Add-On SDK和PageMod?通过安装Python和SDK的麻烦,学习如何使用SDK和API,添加不必要的膨胀和抽象层,只是为了执行简单的内容脚本,这似乎有点过分.

我已经尝试过使用XUL浏览器覆盖并在那里注入脚本,但是在browser.xul上下文中注入所有内容而不是document.body增加了很多复杂性......

那么在html文档而不是XUL文档中注入一些脚本和css文件最简单,最轻量级的方法是什么?

javascript firefox firefox-addon content-script

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

如何构建PCSC智能卡读卡器"友好名称"?

我使用WinSCard列出所有读者,这给我一个这样的列表:

ASK RDR4x7 0
SCM Microsystems Inc. SCR3320 USB Smart Card Reader 0
SCM Microsystems Inc. SCR3320 USB Smart Card Reader 1
SCM Microsystems Inc. SCR3320 USB Smart Card Reader 2
Run Code Online (Sandbox Code Playgroud)

哪个好,但我不知道哪个名字属于哪个读卡器.

这些名字来自哪里?他们是如何建造的?

我到目前为止所发现的:在注册表中,有一个HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services密钥.在此密钥下,您可以找到与读卡器的"服务"(我通过查询WMI注册表找到)匹配的子项.例如:为SCM Microsystems Inc. SCR3320 USB Smart Card Reader读者提供的服务SCR3XX2K.

这个子键(SCR3XX2K)有另一个子键Enum,它有多个有趣的值:

  • Count:DWORD,连接的读者数量
  • 0,1,2:STRING,硬件设备ID

我猜这些是附加到'友好名称'的数字,但我无法弄清楚如何构造名称字符串.我需要这个将硬件设备ID(我通过WMI)映射到他们的友好名称.

那么,用于为智能卡读卡器创建"友好名称"的模式是什么?这些值来自何处?

.net c# pcsc smartcard-reader winscard

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

如何通过WMI获取系统中的所有智能卡读卡器?

我想使用WMI在我的系统上获取所有PCSC智能卡读卡器的DeviceID和服务.它们都是通过USB连接的,所以我查询所有Win32_PnPEntity的WMI注册表.但我不知道如何确定哪些设备是"读卡器".这是我已经拥有的:

ManagementObjectSearcher mos =
new ManagementObjectSearcher(@"\root\cimv2", @"Select * From Win32_PnPEntity");

ManagementObjectCollection mob = mos.Get();

foreach (ManagementObject mo in mob)
{
    Console.WriteLine("DeviceID: " + mo["DeviceID"].ToString());
    Console.WriteLine("Service: " + mo["Service"].ToString());
}
Run Code Online (Sandbox Code Playgroud)

我不能只是过滤设备名称,有不同的品牌/型号的读者,并没有共同点.在设备管理器中,它们都归为"智能卡读卡器",因此必须采用(其他)方式.

.net c# wmi smartcard pcsc

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