小编nma*_*ier的帖子

如何从SDK插件数据文件夹加载DLL?

我们使用Web IDE创建插件.我的test.dll位于数据文件夹中.如何通过js-ctypes加载它?

像"c:\ test.dll"这样的绝对路径没有问题,但我不能用这个路径来分发它.

var lib = ctypes.open("c:\\test.dll"); 
// works but how i get path to addon inner data directory?
Run Code Online (Sandbox Code Playgroud)

javascript firefox-addon firefox-addon-sdk

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

WM_GETICON 不起作用(Windows)

如果我不首先使用 WM_SETICON 来设置图标,那么 WM_GETICON 总是返回 0。这很奇怪。请帮忙。

这是我的代码,可以复制粘贴到暂存器并运行。

当执行SendMessage(targetWindow_handle, WM_GETICON , ICON_SMALL, ctypes.voidptr_t(0)), hIconSmall_origandhIconBig_orig时总是返回 0 我不知道为什么。如果您首先在窗口上使用 WM_SETICON,那么它会正确获取 HICON,但整个目的是获取默认图标。

Cu.import('resource://gre/modules/ctypes.jsm');

var user32 = ctypes.open('user32.dll');

/* http://msdn.microsoft.com/en-us/library/windows/desktop/ms644950%28v=vs.85%29.aspx
 * LRESULT WINAPI SendMessage(
 * __in HWND hWnd,
 * __in UINT Msg,
 * __in WPARAM wParam,
 * __in LPARAM lParam
 * );
 */
var SendMessage = user32.declare('SendMessageW', ctypes.winapi_abi, ctypes.uintptr_t,
    ctypes.voidptr_t,
    ctypes.unsigned_int,
    ctypes.int32_t,
    ctypes.voidptr_t
);

var WM_GETICON = 0x007F;
var WM_SETICON = 0x0080;
var ICON_SMALL = 0;
var ICON_BIG = 1;
var …
Run Code Online (Sandbox Code Playgroud)

c++ icons user32 firefox-addon jsctypes

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

如何获取 UInt64 的值,只有 toString 的方法?

我有这个: "ctypes.UInt64("7")"

它是由这个返回的:

var chars = SendMessage(hToolbar, TB_GETBUTTONTEXTW, local_tbb.idCommand, ctypes.voidptr_t(0));
Run Code Online (Sandbox Code Playgroud)

所以

console.log('chars=', chars, chars.toString(), uneval(chars));
Run Code Online (Sandbox Code Playgroud)

'chars=' 'UInt64 {  }' "7" 'ctypes.UInt64("7")'
Run Code Online (Sandbox Code Playgroud)

所以我可以通过 go 来获取值chars.toString(),但我必须在上面运行一个parseInt,反正有没有像属性一样读取它?喜欢chars.UInt64

javascript firefox-addon jsctypes

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

在Firefox附加目录中选择一个文件

为简单起见,我正在将基于XUL的Firefox插件转换为基于SDK的版本.我在基于XUL的版本中使用的XPCOM模块似乎可以工作,但ci.nsIFile的行为有所不同.

我无法弄清楚如何导航到目前位于目录最高级别的smartProxy.py.

在XUL版本中,smartProxy.py位于chrome/bin/smartproxy.py上.我使用下面的命令来执行程序,它可以正常工作.

getExeFile: function() {
    var file = cc["@mozilla.org/file/directory_service;1"].getService(ci.nsIProperties).get("ProfD", ci.nsIFile);
    file.append("smartProxy.py");
    return file;
},
Run Code Online (Sandbox Code Playgroud)

下面是它执行的地方,它应该可以全面了解附加组件的工作原理.

start: function() {
    if (this.process && this.process.isRunning)
        return;
    this.process = cc["@mozilla.org/process/util;1"].createInstance(ci.nsIProcess);
    this.process.init(this.getExeFile());
    this.process.runAsync([], 0, this.processObserver);
    this.setProxy();
    this.executeObservers();
},
Run Code Online (Sandbox Code Playgroud)

我如何找到smartProxy.py以便它可以被执行?

javascript firefox firefox-addon firefox-addon-sdk

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

用读入的文本文件中的空格替换逗号

import os

os.chdir('my directory')
data = open('text.txt', 'r')
data = data.replace(",", " ")
print(data)
Run Code Online (Sandbox Code Playgroud)

我得到错误:

AttributeError:'_io.TextIOWrapper'对象没有属性'replace'

python text replace file

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