【问题标题】:Windows 7 Gadgets - Programming language for developmentWindows 7 小工具 - 用于开发的编程语言
【发布时间】:2009-11-09 19:40:59
【问题描述】:

哪种是 Windows 7 小工具的首选开发语言?

我知道小工具使用 Xml、Html、CSS 和脚本(Java/VB),但我需要一些高级功能,例如:

  1. 写入/读取文件
  2. 获取正在运行的进程列表
  3. 将密钥发送到活动应用程序

对于上述任务,我需要使用 Windows API,或者如果可能的话,使用 .NET。是否可以在 Gadget 中具有上述功能?

【问题讨论】:

    标签: windows-7 windows-desktop-gadgets


    【解决方案1】:

    使用ActiveXObject 类有多种可用于JScript 的COM 对象。您可以使用 .NET 编写自己的互操作程序集,但这会带来几个问题:

    • 程序集中的每个公共类在使用前都需要在主机上注册。在 x64 中写入和创建键时会出现问题,WScript.Shell 对象在注册表的某些部分难以解决这些问题。不过,WMI 非常适合注册。
    • 从实例化开始,程序集 dll 被锁定,即使小工具关闭也无法删除。当卸载/软件更新开始发挥作用时,这主要是一个问题。一旦 sidebar.exe 进程结束,文件就会解锁。
    • 取消注册似乎有问题,即使使用 WMI。取消注册的时间通常是一个问题(您是在卸载时还是在实例化后进行?如果有多个使用它打开的小工具怎么办?)。此外,如果他/她决定不保留您的小工具,则不取消注册会在用户的计算机上留下不需要的注册表项。
    • 如果小工具 100% 依赖于程序集,并且无论出于何种原因,该程序集无法在用户的计算机上注册,则该用户无法获得该小工具的全部体验。为 Windows Live Gallery 上的一些低评价做好准备。

    如果您决定确实需要编写程序集。如果您正在为小工具编写自己的程序集,我建议您将其作为对小工具基本功能的扩展,并确保在用户无法使用该程序集时该小工具具有可用的功能。

    我的公司针对上述问题有一个尚未发布的解决方案,我们计划在不久的将来(即经过更多测试)向所有 Windows 桌面小工具开发人员提供该解决方案。

    至于您指定的高级功能,这些都可以使用一些内置的 Windows COM 对象来完成,这些对象已经注册并且不会随您的小工具一起分发,因此它们不会遇到上述相同的问题。为了满足您的具体要求,以下示例如下:

    文件系统对象
    可以使用FileSystemObject 完成写入/读取文件。 FileSystemObject 读取文件的一个基本例子是:

    var ForReading = 1, ForWriting = 2, ForAppending = 8;
    var oFSO  = new ActiveXObject("Scripting.FileSystemObject");
    var oFile = oFSO.OpenTextFile(System.Gadget.path+"\\test.txt", ForReading, true);
    var sText = oFile.ReadAll();
    window.prompt("", sText);
    

    Windows 管理规范 (WMI)
    WMI 具有广泛的用途。但是,它的某些部分需要管理权限(必须应用于 sidebar.exe)。 WMI 中的一个类是Win32_Process,它可用于遍历正在运行的进程。请注意,在 JScript 中使用 WMI 比在 VBScript 中要困难得多,而且您在 Internet 上找到的大多数示例都是针对 VBScript 的(这使得移植代码很痛苦)。

    Windows 脚本宿主外壳 WshShell Object 为 Windows 桌面小工具的限制提供了另一个很好的扩展,包括 SendKeys 方法。虽然该方法不能专门用于向应用程序发送密钥,但可以使用AppActivate 方法激活应用程序,然后使用 SendKeys 在激活的应用程序中模拟击键。

    希望对你有帮助:-)

    【讨论】:

    • 非常感谢安迪!这就是我正在寻找的那种细节。这里还有一个问题:我需要在我的小工具上显示大约 40 个按钮。您是否建议在 Gadget 本身中创建 HTML UI 或打开另一个 Forms 应用程序来显示 UI,因为 Gadget 似乎没有太多的 UI 区域。
    • 很高兴它对您有所帮助 :-) 小工具没有最大尺寸(我知道),但在 Windows Vista 上,小工具从边栏中开始,除非它们被拖到屏幕。我注意到您的问题主要是关于 Windows 7 的小工具,它没有侧边栏,因此您实际上并不受限于特定尺寸,除了您的小工具必须满足 60 像素的最小高度。浮出控件还可用于在必要时显示更多信息。
    猜你喜欢
    • 2011-02-14
    • 1970-01-01
    • 1970-01-01
    • 2010-12-06
    • 2010-10-28
    • 2010-09-14
    • 2011-08-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多