Archive for 10 月, 2011

编译npruntime

星期一, 10 10 月, 2011

FireFox的plugin demo npruntime太难编译了,上次研究FireFox plugin时就没编译成功,这次总算编译成功了,记录下,避免忘记了又要折腾。

参考资料:
【原创】我的Firefox插件开发之旅(5)——编译和测试第一个Plugin例子:npruntime
Compiling The npruntime Sample Plugin in Visual Studio

npruntime的源码我是取自mozilla-2.0的源码包,具体目录是:mozilla-2.0\modules\plugin\sdk\samples\npruntime
Gecko SDK即xulrunner-sdk,我下载的是最新的xulrunner-7.0.1.en-US.win32.sdk.zip,具体可以到https://developer.mozilla.org/en/Gecko_SDK下载。

按照上面两个参考资料的方法做大体是对的,这里编译出了两个问题。一个是printf未定义,在plugin.cpp的XP_WIN条件编译段加入#include <stdio.h>即可。另一个是由于npapi.h中有未知类型导致的大段错误,在npapi.h的#elif defined(XP_WIN)条件编译段加入#include <stddef.h>即可。

补充资料:Windows下的Firefox plugins开发的N个坑

郁闷的cookie

星期一, 10 10 月, 2011

不多说,上聊天记录:

总结一下:
一个站点的页面如果调用另一个站点的页面设cookie,该站点的cookie中是没有该cookie的。所以本地的页面,或者架了服务器host没配,都是这种情况哦?

shop.xxx.com的登录页应该是在shop.xxx.com这个站点上,它请求verify2.xxx.com去获取验证码,并设cookie,为什么就能设呢?
shop.xxx.com和verify2.xxx.com这不也是垮站点cookie?
本地页面和verify2.xxx.com为什么就不能设cookie成功呢?
xxx.com   那应该是
这个一样就可以
原来如此,浏览器只认一级域名
而不管服务器是不是分布的

javascript 中cookie的存储,获取cookie,删除cookie的方法。

GetKeyState的疑惑

星期日, 9 10 月, 2011
#include "stdafx.h"
#include <Windows.h>
int main()
{
    int i = 0;
    while(1)
    {
        if(GetKeyState('A') < 0)
        {
            //VK_CONTROL
            //printf("Ctrl down: %d!\n", ++i);
            printf("A down: %d!\n", ++i);
        }
        //Sleep(1000);
    }
    return 0;
}

用GetKeyState来截获密码等好像不太实际,如果在死循环中Sleep就可能漏掉信息,如果不Sleep你会发现按一次键能得到N次这个键的信息。

疑惑是GetKeyState好像取不到WH_KEYBOARD_LL Hook后的键信息?

IObjectSafety IObjectSafetyImpl

星期日, 9 10 月, 2011

浏览器与ActiveX控件交互时会弹出警告,去掉它必须实现IObjectSafety接口。当一个ActiveX实现了该接口时就是声明了它是安全的,那么用户因为使用此控件造成的损失应该由此控件厂商承担,所以还是谨慎的好。

关于IObjectSafety的更多资料,参考:

再谈IObjectSafety

ATL中实现IObjectSafety接口,只需要继承IObjectSafetyImpl即可,详细资料参考:

如何为初始化 IObjectSafety 标记 ATL 控件安全

这篇参考资料的ATL版本比较低,但大体是对的,在新的ATL中有如下地方需要改动:

继承时使用:public IObjectSafetyImpl<CXLSafeEditWrap, INTERFACESAFE_FOR_UNTRUSTED_CALLER | INTERFACESAFE_FOR_UNTRUSTED_DATA>

COM MAP中使用:COM_INTERFACE_ENTRY(IObjectSafety)

VMware的杯具

星期五, 7 10 月, 2011

Win7下使用VMware 6是个杯具,因为网络环境很难配,而且会出现各种各样的问题。无奈,不挣扎了,卸载,准备装VMware 7。

卸载VMware 6更是一个杯具,因为VMware有键盘相关的驱动,卸载后重启,发现键盘失效了!!!

百度之,发现遇到这类问题的人不少,解决方案就是去掉VMware的键盘驱动:

VMware卸载后键盘失灵的解决方案

VMWare安装、卸载异常导致键盘失灵(代码19)

杯具的是我没有外接键盘,更杯具的是我开机有密码!!!这样,连Win7系统都登录不上去,怎么修改注册表?

好吧,只能使用WinPE试试了:

老毛桃winpe_U盘装系统图解

利用WINPE修改本机系统注册表

修改完毕,键盘可以使用了,装上VMware 7虚拟机也能上网了,希望下次卸载7的时候不会出现这问题……(::>_<::)