Firefox 附加组件:1) 将 Python 脚本链接到附加组件主代码 | 2) JPM / NPM 中的 win32 api | 3) 在 Windows 和 OS.file 中设置文件属性

Firefox add-ons: 1) Linking Python script to add-on main code | 2) win32 api in JPM / NPM | 3) set file attributes in Windows with OS.file

我想使用 win32 API 在 Windows OS 上创建一个隐藏文件。 使用 JS / Node.js.

似乎是不可能的

使用 Python,导入 API,这是可能的(使用 SetFileAttributes 例程和 FILE_ATTRIBUTE_HIDDEN 参数)。

那么我怎样才能 link 一个 Python 脚本到我的 Firefox 附加组件的主要 JS 代码?你能给我一些关于这件事的参考吗?我在网上什么也没找到。

XPCOM 将被弃用。虽然这可以用 nsIFile 来完成,但我没有在这里展示它,因为主线程的性能更差。目前推荐的文件系统访问方式是`OS.File.

https://developer.mozilla.org/en-US/docs/JavaScript_OS.File/OS.File_for_the_main_thread

在 windows

上隐藏 files/directories

这就是你如何使用 OS.File:

OS.File.setPermissions(
        OS.Path.join(OS.Constants.Path.desktopDir, 'my hidden file.txt'),
          {
            winAttributes: {
                hidden: true
            }
        }
)
.then(x => console.log('success:', x), y => console.error('failure:', y));

这会将桌面上名为 my hidden file.txt 的文件设置为隐藏。这是其他 winAttributes:

https://dxr.mozilla.org/mozilla-central/source/toolkit/components/osfile/modules/osfile_win_front.jsm#1204-1227

在 *nix/Mac

上隐藏 files/directories

重命名或创建文件以将 . 作为其名称中的第一个字符并将其隐藏。使用 OS.File 这是通过 OS.File.move 函数完成的,因为重命名只是文件系统上的一个移动:

OS.File.move(
        OS.Path.join(OS.Constants.Path.desktopDir, 'my hidden file.txt'),
        OS.Path.join(OS.Constants.Path.desktopDir, '.my hidden file.txt')
)
.then(x => console.log('success:', x), y => console.error('failure:', y));

这会将桌面上的文件从 my hidden file.txt 重命名为 .my hidden file.txt

平台 API

如果您需要利用平台 API,则不需要 python。我们有 js-ctypes:

这里有一些关于 js-ctypes 的文档:

https://developer.mozilla.org/en-US/docs/Mozilla/js-ctypes/Standard_OS_Libraries

这里是 library/collection 类型和函数声明:

https://github.com/Noitidart/ostypes/issues/1#issuecomment-199492249