我想知道我可以做些什么来提高Excel自动化的性能,因为如果你在工作表中有很多事情,它可能会很慢......
这里有一些我发现自己:
ExcelApp.ScreenUpdating = false
- 关闭重绘屏幕
ExcelApp.Calculation = Excel.XlCalculation.xlCalculationManual
- 关闭计算引擎,以便Excel在单元格值更改时不会自动重新计算(在完成后将其重新打开)
减少对Worksheet.Cells.Item(row, col)
和的调用Worksheet.Range
- 我不得不轮询数百个单元格以找到我需要的单元格.实现一些单元格位置的缓存,将执行时间从大约40秒减少到大约5秒.
什么样的互操作会对性能造成严重影响,应该避免?你还能做些什么来避免不必要的处理?
有没有一种简单的方法可以为简单的内容脚本创建Firefox扩展,而无需使用Add-On SDK和PageMod?通过安装Python和SDK的麻烦,学习如何使用SDK和API,添加不必要的膨胀和抽象层,只是为了执行简单的内容脚本,这似乎有点过分.
我已经尝试过使用XUL浏览器覆盖并在那里注入脚本,但是在browser.xul
上下文中注入所有内容而不是document.body
增加了很多复杂性......
那么在html文档而不是XUL文档中注入一些脚本和css文件最简单,最轻量级的方法是什么?
我使用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)映射到他们的友好名称.
那么,用于为智能卡读卡器创建"友好名称"的模式是什么?这些值来自何处?
我想使用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)
我不能只是过滤设备名称,有不同的品牌/型号的读者,并没有共同点.在设备管理器中,它们都归为"智能卡读卡器",因此必须采用(其他)方式.