首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏Eureka的技术时光轴

    BSTR和WCHAR*

    实际上bstr很像delphi里面的string,平时只是指向pchar或pwchar,但是在pchar和pwchar的前面却有长度信息,以下是一段来自网络的解释: BSTR并不是WCHAR*,BSTR 所以,你可以将BSTR当作WCHAR*用,但是不能将WCHAR*当作BSTR用! 要使用(_bstr_t)进行类型转换,必须引用以下库: #include <comutil.h> #pragma comment(lib,"comsuppw.lib") 或 comsuppwd.lib (d一般代表debug版本) HRESULT hres = (*pSvc)->ExecQuery((_bstr_t)_T("WQL"), szQuery, WBEM_FLAG_FORWARD_ONLY

    1.1K20发布于 2019-07-24
  • 来自专栏全栈程序员必看

    BSTR LPSTR LPWSTR CString VARIANT COleVariant variant t CC

    例如: CComBSTR bstr1; bstr1 = “Bye”; // 直接赋值 OLECHAR* str = OLESTR(”ta ta”); // 长度为5的宽字符 CComBSTR bstr2 ”)); CComBSTR bstr4(5, “Hello World”); CComBSTR bstr5(OLESTR(”Hey there”)); CComBSTR bstr6(”Hey there ”); CComBSTR bstr7(bstr6); // 构造时复制,内容为”Hey there” _bstr_t是是C++对BSTR的封装,它的构造和析构函数分别调用SysAllocString和SysFreeString 例如: BSTR bstrText = CComBSTR(”This is a test”); 或 CComBSTR bstr(”This is a test”); BSTR bstrText = bstr.m_str 、_bstr_t与CComBSTR CComBSTR、_bstr_t是对BSTR的封装,BSTR是指向字符串的32位指针。

    1.6K20编辑于 2022-09-09
  • 来自专栏鸿鹄实验室

    利用 WMI and COM 绕过windows defender

    n"); CoUninitialize(); return 0; } IWbemServices* pSvc = 0; hr = pLoc->ConnectServer(BSTR Clname = BSTR(L"MSFT_MpPreference"); hr = pSvc->GetObject(Clname, 0, NULL, &pClass, NULL); BSTR MethodName = BSTR(L"Add"); IWbemClassObject* pInSignature = 0; hr = pClass->GetMethod(MethodName ; V_BSTR(&vString) = _bstr_t(exclpath); LONG lArrayIndex = 0; SafeArrayPutElement(psaStrings, & lArrayIndex, V_BSTR(&vString)); VariantClear(&vString); // variant array VARIANT vStringList;

    1.3K50发布于 2021-11-12
  • 来自专栏MasiMaro 的技术博文

    COM学习(四)——COM中的数据类型

    BSTR COM中规定了一种通用的字符串类型BSTR,查看BSTR的定义如下: typedef /* [wire_marshal] */ OLECHAR *BSTR; typedef WCHAR OLECHAR ; 从上面的定义上不难看出BSTR其实就是一个WCHAR ,也就是一个指向宽字符的指针。 在BSTR类型中,定义了两个函数SysAllocString(),和SysFreeString()用来分配和释放一个BSTR的内存空间。 在这总结一下他们之间的相互转化: char*----->BSTR: _com_util::ConvertStringToBSTR WCHAR---->BSTR:可以直接用 = 进行赋值,也可以使用SysAllocString BSTR---->WCHAR:一般是直接使用等号即可,但是在WCHAR使用完之前不能释放,所以一般都是赋值给一个CString BSTR---->char:_com_util::ConvertBSTRToString

    1.5K30发布于 2019-02-25
  • 来自专栏艳艳代码杂货店

    python十进制转二进制,可指定位数

    Python24 vegaseat 6/1/2005 def Denary2Binary(n): '''convert denary integer n to binary string bStr ''' bStr = '' if n < 0: raise ValueError, "must be a positive integer" if n == 0: return '0' while n > 0: bStr = str(n % 2) + bStr n = n >> 1 return bStr def int2bin

    1.1K31发布于 2021-11-02
  • 来自专栏代码伴一生

    python十进制转二进制,可指定位数

    Python24 vegaseat 6/1/2005 def Denary2Binary(n): '''convert denary integer n to binary string bStr ''' bStr = '' if n < 0: raise ValueError, "must be a positive integer" if n == 0: return '0' while n > 0: bStr = str(n % 2) + bStr n = n >> 1 return bStr def int2bin

    90430发布于 2021-11-01
  • 来自专栏爬虫逆向案例

    大众点评app分析记录

    com.dianping.nvnetwork.tunnel.Encrypt.SocketSecureManager"); SocketSecureManager.decryptData.implementation = function(bstr , str){ console.log('bstr: ', bstr); console.log('bstr-tojson:',gson. $new().toJson(bstr)); console.log('bstr-hex: ', ByteString.of(bstr).hex()); console.log ('str: ', str); var ret = this.decryptData(bstr, str); // console.log(Java.use("android.util.Log

    2.3K31编辑于 2022-03-24
  • 来自专栏前端博客

    base64与二进制互转,保存内容,文件读写:Blob/FileReader/URL/FormData

    ;/)[1],    bstr = atob(arr[1]),    n = bstr.length,    u8arr = new Uint8Array(n)  while (n--) {    u8arr [n] = bstr.charCodeAt(n)  }  return new Blob([u8arr], {    type: mime  })}DataURL转文件:Uint8Array/File/ ;/)[1]  // 解码base-64字符串  var  bstr = atob(arr[1])  var n = bstr.length, u8arr = new Uint8Array(n)  while  (n--) {    u8arr[n] = bstr.charCodeAt(n)  }  return new File([u8arr], filename, {type: mime})}var blob

    3.3K10编辑于 2023-05-07
  • 来自专栏除除的专栏

    对数据进行模糊匹配搜索(动态规划、最长公共子串、最长公共子序列)

    calLongestCommonSubstring * @description 计算两个字符串的最长公共子串 * @param {String} aStr 字符串 * @param {String} bStr ; const bLen = bStr.length; // 创建二维数组并且深拷贝 const arr = deepCopy(new Array(aLen).fill(new for (let i = 0; i < aLen; ++i) { for (let j = 0; j < bLen; ++j) { if (aStr[i] === bStr ; const bLen = bStr.length; const arr = deepCopy(new Array(aLen).fill(new Array(bLen).fill(0))); for (let i = 0; i < aLen; ++i) { for (let j = 0; j < bLen; ++j) { if (aStr[i] === bStr[j]

    63240编辑于 2023-06-11
  • 来自专栏嵌入式项目开发

    QT应用编程: Qt数据类型和(ActiveX)COM接口数据类型对应关系

    Qt支持作为COM组件信号和槽函数参数的数据类型如下: Qt data type COM property bool VARIANT_BOOL QString BSTR int int uint unsigned type COM parameter bool [in] VARIANT_BOOL bool& [in, out] VARIANT_BOOL* QString, const QString& [in] BSTR QString& [in, out] BSTR* QString& [in, out] BSTR* int [in] int int& [in,out] int uint [in] unsigned VARIANT) QList<QVariant>& [in, out] SAFEARRAY(VARIANT)* QStringList, const QStringList& [in] SAFEARRAY(BSTR ) QStringList& [in, out] SAFEARRAY(BSTR)* QByteArray, const QByteArray& [in] SAFEARRAY(BYTE) QByteArray

    1.3K30编辑于 2022-01-07
  • 来自专栏技术杂记

    C++基础(六).多态(1)

    { cout<<pstr<<endl; //将字符串内容进行显示 } STR STR::operator + (const STR &str) //对此类的加法运算符进行重载 { STR bstr ; //构建一个空对象 bstr.slen=slen+str.slen; //设定长度 delete[] bstr.pstr; //回收内存,这一步非常必要,否则会逐渐泄露内存,一次一个字节 bstr.pstr=NULL; //指空,避免野指针 bstr.pstr=new char[bstr.slen+1]; //根据长度重配内存 strcpy(bstr.pstr,pstr); //复制主体内容 strcat(bstr.pstr,str.pstr); //复制被加对象内容 return bstr; //将新构造的对象进行返回 } STR STR::operator

    48310发布于 2021-09-15
  • 来自专栏liulun

    ACTIVEX和OCX控件传递字符串给网页上的JS

    KSDLL2.idl文件中 dispinterface _DKSDLL2 { properties: methods: [id(1)] void CheckIt(); [id(2)] BSTR GetIt(); }; 第二步: KSDLL2Ctrl.h文件中 protected: void CheckIt(void); BSTR GetIt(); 第三步: KSDLL2Ctrl.cpp dispidCheckIt, CheckIt, VT_EMPTY, VTS_NONE) DISP_FUNCTION_ID(CKSDLL2Ctrl, "GetIt", dispidGetIt, GetIt, VT_BSTR , VTS_NONE) END_DISPATCH_MAP() 第四步: KSDLL2Ctrl.cpp文件中 BSTR CKSDLL2Ctrl::GetIt() { CString strmac;

    2.7K20编辑于 2022-05-09
  • 来自专栏全栈程序员必看

    JS大数运算_大数阶乘运算

    type = 1是与运算,type = 2 是或运算,默认是与运算 a = a + ""; b = b + ""; var aStr = toBin(a); var bStr = toBin(b); var longer = aStr.length > bStr.length ? aStr : bStr; var sorter = aStr.length > bStr.length ? bStr : aStr; var _tstr = "", _fix = longer.length - sorter.length; for (var i = longer.length - 1;

    2K10编辑于 2022-11-08
  • 来自专栏java大数据

    java中Comparator有什么用,举例说明

    .     */     public int compare(Object a, Object b) {         String aStr, bStr;         aStr = (String ) a;         bStr = (String) b;         /* compareTo(String anotherString)Compares two strings                    */         /* the following two statements will have the opposite effect. */         // return bStr.compareTo (aStr);         return aStr.compareTo(bStr);     } } public class TestMark_to_win {     public static

    50240发布于 2021-04-30
  • 来自专栏转载gongluck的CSDN博客

    ADO大总结

    CoInitialize(NULL); try{ //创建Connection对象 m_pCOnnection.CreateInstance("ADODB.Connection"); //设置连接字符串 _bstr_t =NULL)  m_pRecordset->Close(); m_pConnection->Close(); ::CoUninitialize();//释放环境 3.获取记录集数据 传入一个_bstr_t { e.Description(); return false; } 4.遍历记录集 MoveNext,MoveFirst,MoveLast,MovePrevious; (char *)(_bstr_t ;//更新字段 } 6.修改数据 try{ m_pRecordset->Move((long)pos,vtMissing); m_pRecordset->PutCollect("姓名",(_bstr_t ){   ::AfxMessageBox(_T("fail to create instance for _ConnectPtr"));   PostQuitMessage(-8);  }  bstr_t

    1.2K80发布于 2018-03-08
  • 来自专栏全栈程序员必看

    mshtml一些用法

    { CString pointData,id; BSTR if( hr == S_OK ) { BSTR bstr = SysAllocString(L””); pElem->get_innerText(&bstr); // 获取该表格元素的文本信息 strInfo =bstr; //MessageBoxExA(NULL,strInfo,NULL,

    47430编辑于 2022-07-25
  • 来自专栏大白技术控的技术自留地

    史上最最靠谱,又双叒叒(ruò,zhuó)简单的基于MSXML的XML解析指南-C++

    <layoff index=\"12\"/>\r\n" L" <layin index=\"17\"/>\r\n" L" </layouts>\r\n" L"</root>\r\n"; 然后从BSTR BSTR类型的变量是一个指针, 指向字符串的第一个字符处。 如何选取节点,and取节点属性有哪些方法? 类字符串 CComBSTR ssName; printf("Node name:%ls\n", ssName); // 用%ls打印BSTR字符串内容 SysFreeString(ssName /test.xml"; // hr = iXMLDoc->load(CComVariant(filePath.c_str()), &bSuccess); // or from a BSTR.. FAILED(hr)) { wstring strVal; if (deVal.vt == VT_BSTR) strVal = deVal.bstrVal; wcout

    1.2K20发布于 2019-03-05
  • 来自专栏热爱IT

    JS 将 base64编码的图片转化为图片文件【未测试】

    ;/)[1] let suffix = mime.split('/')[1] let bstr = atob(arr[1]) let n = bstr.length let u8arr = new Uint8Array(n) while (n--) { u8arr[n] = bstr.charCodeAt(n) } return new File([u8arr],

    5.9K30发布于 2019-07-12
  • 来自专栏sofu456

    com组件中的数据类型

    bstrVal; /* VT_BSTR */ IUnknown * punkVal; /* VT_UNKNOWN */ DATE * pdate; /* VT_BYREF|VT_DATE */ BSTR * pbstrVal; /* VT_BYREF|VT_BSTR */ IUnknown ** ppunkVal; /* VT_BYREF variant_t,但是没有int的转换函数,所以很多像ado函数不接受常量,需要强转long类型 _RecordsetPtr record; record->GetCollect((long)0); _bstr_t 封装BSTR类型,通过构造转换类型,可以接收char*

    1.1K40编辑于 2021-12-06
  • 来自专栏Rust语言学习交流

    【Rust日报】2022-07-06 Android 平台中的 Rust

    更多请看原文:https://www.microsoft.com/security/blog/2022/07/05/hive-ransomware-gets-upgrades-in-rust/ bstr 1.0 征求意见 bstr 这个 crate 为 &[u8] 和 Vec<u8> 提供了扩展特性,可以将它们用作字节字符串,其中字节字符串通常是 UTF-8。 bstr 现在即将迎来 1.0 版本,现征求大家的意见、建议,项目地址:https://github.com/BurntSushi/bstr 详情请看:https://github.com/BurntSushi /bstr/issues/40 ---- From 日报小组 @Jancd 社区学习交流平台订阅: Rust.cc论坛: 支持rss 微信公众号:Rust语言学习交流

    58640编辑于 2022-11-28
领券