作者: admin

  •  CString 对象的 AllocSysString 方法将 CString 转化成 BSTR

     CString 对象的 AllocSysString 方法将 CString 转化成 BSTR的方法:

    CString s; 
    s = "i love you";
    BSTR b = s.AllocSysString();

  • VS2003调试DLL, 不中断的问题

    VS2003调试DLL, 不中断的问题,直接把所有工程 rebuild all,然后再 替换新生成的dll,再设置断点,调试

  • CHttpFile 获取URL重定向后的文件名

    CHttpFile 获取URL重定向后的文件名

    // 获取URL重定向后的文件名,如果没有重定向,也返回下载文件名
    CString GetFileNameFromRedirectUrl(CString strUrl)
    {
    	CInternetSession iSession; 
    	CStdioFile* pFileDown = NULL; 
    	CString sFileName; 
     
    	pFileDown = iSession.OpenURL(strUrl, 1, INTERNET_FLAG_TRANSFER_BINARY); 
     
    	CHttpFile* pHttpFile = (CHttpFile *)pFileDown; 
    	HINTERNET hHttpFile = HINTERNET(*pHttpFile); 
     
    	//获得重定向文件名 
    	BOOL bResult = pHttpFile->QueryOption(INTERNET_OPTION_URL, sFileName);
    	int flag=sFileName.ReverseFind('/');
    	CString strFileName=sFileName.Mid(flag+1);
     
    	return strFileName;
    }
  • 禁止WIN32系统关机

    建立MFC程序,截获WM_QUERYENDSESSION消息,响应ON_WM_QUERYENDSESSION() ,消息响应函数对应为:   afx_msg BOOL OnQueryEndSession();  直接在该函数中return false 则拒绝了Windows的WM_QUERYENDSESSION的请求,Windows则无法正常软关机。(开始->关闭计算机->关机、注销、重启)。

    Windows在关机的时候会向所有顶层窗口广播一个消息WM_QUERYENDSESSION,应该不是所有进程,而是已经注册窗口类的程序。所以控制台程序不接收WM_QUERYENDSESSION消息。

  • C#中的@符号详解

    @符号是特殊而又实用的C#符号。

    比如它在string中的应用。

    1

    字符@表示,其后的字符串是个“逐字字符串”(verbatim string)。 // 这个说法来自C# Primer 中文版(Stanley B. Lippman, 侯捷/陈硕合译)

    2

    对于逐字字符串字面变量(verbatim string literal ),我们不再需要使用“转义序列”就可以指定反斜线之类的特殊字符。@的这个特点使得在表示文件路径时很方便。

    如:

    string str = @"C:/Test.txt";

    3

    另外一点,用@表示的字符串能够跨越数行。这数行之内的空白字符(White Space)都会保留在字符串里。

    这样便能允许存储和生成带有格式的文本块。

    如:

    string strText = @"Line1
                       Line2
                       Line3";

    有意思的是如果在VS.NET2003中当你输入完第一行(string strText = @"Line1)换行后,光标会自动到第二行最开头 ^_^。很智能化、人性化的判断。

    4

    不知道大家在最初看到@的功能时有没有想,如果“转义序列”(/)在字符串中“失效”,那么想包含一个双引号(”),怎么办?我找到了答案。

    方法很简单。在双引号之前再加一个双引号即可。

    如:

    string str = @"""Great!""Said Allen Lee";

    5

    这仅仅是@在字符串中的用法,有机会再去看看@的其他东东。

  • 错误: _malloc 已经在 Libcmtd.lib 中定义, 引发的思考

    错误: _malloc 已经在 Libcmtd.lib 中定义, 引发的思考:

    C++编译器选项:/MT,/MTd,/Md,/MDd
    必须让工程所使用的库都使用相同的配置,否则就会有相应的警告或错误提示,甚至出现无法解析的函数,
    有时,我们使用的库不是自己可以控制的,那么就只能把工程属性设置成你使用库的选项相同,这样可以编译通过了.

  • 可以通过执行vbs脚本来隐藏执行bat

    可以通过执行vbs脚本来隐藏执行bat:

    (将以下代码保存为.vbs文件,假设要执行c:/x.bat)

    createobject("wscript.shell").run "c:/x.bat",0

  • ShellExecute不能执行批处理文件

    ShellExecute不能执行批处理文件,以下是解决办法:

    以下代码怎么都不执行a.bat,最后通过WinExec("./a.bat", SW_SHOW);解决

    ShellExecute(NULL, "open", "./a.bat", NULL, NULL, SW_SHOW);

  • Delphi使用流读写控件数据

    Delphi使用流读写控件数据

    保存到文件

    MS := TMemoryStream.Create;
    try
            MS.WriteComponent(listview1);
            MS.SaveToFile('文件名');
    finally
            MS.Free;
    end;

    从文件读入控件

    MS := TMemoryStream.Create;
    try
         	MS.LoadFromFile('文件名');
         	MS.ReadComponent(listview1);
    finally
    	MS.Free;
    end;
  • Delphi自动提交表单(这里只有一个表单)

    Delphi自动提交表单(这里只有一个表单),弄了一个晚上,经过一个大牛的指点,10分钟搞定

    procedure TMainForm.WebBrowser2DocumentComplete(Sender: TObject;
      const pDisp: IDispatch; var URL: OleVariant);
    var
      oFrames:OleVariant;
    begin
      oFrames := WebBrowser2.OleObject.document.forms;
      if oframes.length <> 0 then
      begin
      oFrames.item(0).submit;
      end;
    end;