hdqqq

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  35 随笔 :: 0 文章 :: 104 评论 :: 0 Trackbacks

#

这几天在网上下电子书,准备放到手机上看,在网页上ctrl+c ,然后ctrl+v到记事本,太麻烦了,
于是写了个ie的右键菜单处理,直接在ie里面存到文本文件里面

把下面的javascript存成一个htm文件

<script language="javascript">
   
var  fso,ForAppending,ts;   
   fso
=new  ActiveXObject("Scripting.FileSystemObject");  
   ForAppending  
=  8;  
   ts  
=fso.OpenTextFile("c:\\collect.txt",ForAppending,false);    //在这里是一个决对路经,用的时候必须修改  
   ts.WriteLine(external.menuArguments.document.selection.createRange().text);
   ts.WriteLine(
"#########################");
   ts.close();  
</script>



然后在注册表中添加下面的项
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\信息收集(&Q)

 

设置两个键值

默认 D:\rocket\Download\pagehook.htm   //即先前存的htm文件,需要绝对路径
contexts 243

就可以了,以后就可以在ie里面收集你要的文本了.
使用的时候,先用鼠标选择你需要的文字,然后右键选"信息收集"菜单,就可以把选择的文字
存储到c:\collect.txt 中了.

posted @ 2007-12-21 09:18 hdqqq 阅读(1159) | 评论 (3)编辑 收藏

     摘要: gcc 的STL 中 list ::size() 使用需要注意的问题  阅读全文
posted @ 2007-12-11 11:56 hdqqq 阅读(10424) | 评论 (19)编辑 收藏

     摘要: windows 关闭文件保护功能.  阅读全文
posted @ 2007-11-15 11:13 hdqqq 阅读(3173) | 评论 (2)编辑 收藏

     摘要: ubuntu tplink 无线网卡  阅读全文
posted @ 2007-11-11 20:53 hdqqq 阅读(3212) | 评论 (0)编辑 收藏

     摘要: boost bjam  阅读全文
posted @ 2007-09-20 14:00 hdqqq 阅读(3293) | 评论 (0)编辑 收藏

     摘要: 简单的模板显示字符串函数,简化使用.  阅读全文
posted @ 2007-07-31 10:51 hdqqq 阅读(1557) | 评论 (5)编辑 收藏


前几天在搞一个udp穿透功能的,有个同事,毕业2年多,平时的时候就是整天qq,要么看论坛,让他写段代码,功能是反复从服务端收取ip地址信息并存入map,然后向这些ip地址发送数据包.框架已经有了,只要加入相关的功能代码就可以了,结果代码写了两个小时,调试花了三个半小时,后来看了他写的代码,我晕.

插入map是这么写的

map<int, string>::iterator it = lmap.end();
it->first = 34;
it->second.ip = inet_ntoa(343);
...
...

把上面的这段代码改了,还是不行,再看,我再晕,
他两个客户端之间数据包封装和接受的读取位置根本就不对,难怪取不到需要的数据.

修改了代码,还是不行,再仔细看代码,终于找到了原因
原来他用了一个sockaddr_in变量存储服务器地址,
结果用recvfrom接受数据的时候,也用的这个变量,所以再次向服务器发送地址的时候,就错了.我当时实在有些抓狂,难道他写代码的时候就不能看看帮助文档?

这几天看看,继续老样子,qq + 论坛.

有的时候,让新手写代码,再修改实在是比较花时间的,确实还不如直接自己写,但是只要上进,新手总归回变老手的,关键还是看是否有学习的态度.

遇到这样的,我只能摇头.
posted @ 2007-07-22 09:03 hdqqq 阅读(326) | 评论 (2)编辑 收藏

       从去年开始,因为工作需要,开始在linux下开发一些程序,所以在本地的一个虚拟机上装了个ubuntu的系统,一直使用字符界面,后来在网上看到一些介绍xgl和beryl的演示,感觉不错,正好家里面新装了台机器,拿来装个ubuntu试一下,查了点资料后,分辨率,设置等什么都弄好了,启动一看,果然效果不错.看来ubuntu在做桌面系统上还是很不错的,桌面显示效果和微软差不多了.
      但是从应用程序的角度来讲,还是不如windows系统的来的好.比如缺省装的totem媒体播放器,无法播放windows下可看的avi文件,我也不知道从那里去下插件,xmms也是,可以放mp3,但是菜单是乱码.还要花时间去查资料改进.还有一个重要的方面是字体显示和中文的输入法等方面的问题,都需要自己配置.在应用程序的数量上面,ubuntu社区提供了很多的软件,但我用的是gprs上网,速度比较慢,下不了那么多,希望ubuntu以后可以出多光盘的版本,不需要用apt-get下载再安装.总体的感觉,如果linux系统在易用性,本地化和应用软件的数量和质量上再改进的话,差不多就可以和微软一较长短了.当然路还很长.

posted @ 2007-04-28 09:33 hdqqq 阅读(335) | 评论 (1)编辑 收藏

     摘要: 模板, ADO 数据库操作  阅读全文
posted @ 2007-03-26 11:18 hdqqq 阅读(1362) | 评论 (3)编辑 收藏

创建一个基于模板的数据库记录集操作类(三)


ado封装
前面讲了建立一个记录的结构和对variant数据结构进行转换,在这篇里面,对ado接口进行封装.微软的ado数据操作接口是以com的形式发布的,在用import指令对com的动态库进行导入之后,会在工程的输出目录下生成tlh和tli两个文件,tlh是于c和c++用于操作com接口的头文件,在其中声明了一些 com接口和com对象的 IID和CLSID,还有接口的属性和方法,都以c/c++可以用的形式做了转换,那个tli文件其实就是tlh文件中声明的一些结构的成员函数的实现,被tlh文件包含.在tlh文件中,通过宏_COM_SMARTPTR_TYPEDEF用模板类_com_ptr_t对接口进行了包装,


_COM_SMARTPTR_TYPEDEF是一个很奇怪的宏,最终生成的是一个以Ptr结尾的类如:
_COM_SMARTPTR_TYPEDEF(Field15, __uuidof(Field15));
实际上生成的类的名称是Field15Ptr类, 类型是_com_ptr_t<Field15, __uuidof(Field15)>

在我实现的模板类中,没有打算在类的整个生命周期中拥有一个ADO接口的记录集成员或者或者ADO连接,我只打算在一些成员函数中,通过局部变量来使用ADO接口.所以对ado进行了部分的封装.

#define MAKE_ADO_COM_CLASS_TYPEDEF(e) typedef CComWrapper <  e##Ptr  >  CCom##e

template 
< typename  com_class >
class CComWrapper : 
public  com_class
{
private :
    void CreateInstance() {
        
int  i  =   100 ;
    }
public :    
    
    com_class 
&  operator = ( const  com_class &  cp) {
        com_class::operator
= (cp);
        return 
* this;
    }
    
    CComWrapper() {}
    
    CComWrapper(CLSID uid) {
        ::CoInitialize(
NULL );
        HRESULT hr 
=  com_class::CreateInstance(uid);
        
if  (FAILED(hr)) {
            
// AfxMessageBox(_T( " Create Com Object Error! " ));
            TRACE(_T(
" Create Com Object Error!\n " ));
        }
    }
    
    ~CComWrapper() {
        
if  (GetInterfacePtr())
            com_class::Release();
    }
};


MAKE_ADO_COM_CLASS_TYPEDEF(_Collection);
MAKE_ADO_COM_CLASS_TYPEDEF(_DynaCollection);
MAKE_ADO_COM_CLASS_TYPEDEF(_ADO);
MAKE_ADO_COM_CLASS_TYPEDEF(Properties);
MAKE_ADO_COM_CLASS_TYPEDEF(
Property );
MAKE_ADO_COM_CLASS_TYPEDEF(
Error );
MAKE_ADO_COM_CLASS_TYPEDEF(Errors);
MAKE_ADO_COM_CLASS_TYPEDEF(Command15);
MAKE_ADO_COM_CLASS_TYPEDEF(Connection15);
MAKE_ADO_COM_CLASS_TYPEDEF(_Connection);
MAKE_ADO_COM_CLASS_TYPEDEF(Recordset15);
MAKE_ADO_COM_CLASS_TYPEDEF(Recordset20);
MAKE_ADO_COM_CLASS_TYPEDEF(Recordset21);
MAKE_ADO_COM_CLASS_TYPEDEF(_Recordset);
MAKE_ADO_COM_CLASS_TYPEDEF(Fields15);
MAKE_ADO_COM_CLASS_TYPEDEF(Fields20);
MAKE_ADO_COM_CLASS_TYPEDEF(Fields);
MAKE_ADO_COM_CLASS_TYPEDEF(Field20);
MAKE_ADO_COM_CLASS_TYPEDEF(Field);
MAKE_ADO_COM_CLASS_TYPEDEF(_Parameter);
MAKE_ADO_COM_CLASS_TYPEDEF(Parameters);
MAKE_ADO_COM_CLASS_TYPEDEF(Command25);
MAKE_ADO_COM_CLASS_TYPEDEF(_Command);
MAKE_ADO_COM_CLASS_TYPEDEF(ConnectionEventsVt);
MAKE_ADO_COM_CLASS_TYPEDEF(RecordsetEventsVt);
MAKE_ADO_COM_CLASS_TYPEDEF(ConnectionEvents);
MAKE_ADO_COM_CLASS_TYPEDEF(RecordsetEvents);
MAKE_ADO_COM_CLASS_TYPEDEF(ADOConnectionConstruction15);
MAKE_ADO_COM_CLASS_TYPEDEF(ADOConnectionConstruction);
MAKE_ADO_COM_CLASS_TYPEDEF(_Record);
MAKE_ADO_COM_CLASS_TYPEDEF(_Stream);
MAKE_ADO_COM_CLASS_TYPEDEF(ADORecordConstruction);
MAKE_ADO_COM_CLASS_TYPEDEF(ADOStreamConstruction);
MAKE_ADO_COM_CLASS_TYPEDEF(ADOCommandConstruction);
MAKE_ADO_COM_CLASS_TYPEDEF(ADORecordsetConstruction);
MAKE_ADO_COM_CLASS_TYPEDEF(Field15);

在上面的代码中,通过一个模板类CComWrapper,对ado生成的Ptr类型作了继承,主要是在析构函数中自动释放接口.同时,我把tlh和tli着两个文件改成了一个h文件和一个inl文件,这样在使用的时候,就不用再使用import指令了.
posted @ 2007-01-31 09:15 hdqqq 阅读(1474) | 评论 (0)编辑 收藏

仅列出标题
共4页: 1 2 3 4