windows核心编程随笔

MultiByteToWideChar(char *转Unicode)
    char text[256] = {0};
    char text1[256] = {0};
    int i=0;

    GetDlgItemTextA(this->m_hWnd,IDC_EDIT1,text,256);
    int j= strlen(text);
    while (j)
    {
        text1[i] = text[j-1];
        i++;
        j--;
    }
    int len = MultiByteToWideChar (CP_ACP, 0, text1, -1, NULL, 0);
    TCHAR* text2 = new TCHAR [len];
    MultiByteToWideChar (CP_ACP, 0, text1, -1, text2, len);
    SetDlgItemTextW(IDC_TEXTOUT,text2);
    //SetDlgItemTextA(this->m_hWnd,IDC_TEXTOUT,text1);
    delete []text2;
WideCharToMultiByte(Unicode转char *)

    WCHAR text[256] = {0};
    WCHAR text1[256] = {0};
    int i=0;

    GetDlgItemTextW(IDC_EDIT1,text,256);
    int j= wcslen(text);
    while (j)
    {
        text1[i] = text[j-1];
        i++;
        j--;
    }
    int len = WideCharToMultiByte (CP_ACP,NULL,text1,-1,NULL,0,NULL,FALSE);
    char* text2 = new char [len];
    memset(text2,0,len);
    WideCharToMultiByte (CP_ACP,NULL,text1,-1,text2,len,NULL,FALSE);
    SetDlgItemTextA(this->m_hWnd,IDC_TEXTOUT,text2);

    delete []text2;
时间: 2024-10-24 09:28:09

windows核心编程随笔的相关文章

【转】《windows核心编程》读书笔记

这篇笔记是我在读<Windows核心编程>第5版时做的记录和总结(部分章节是第4版的书),没有摘抄原句,包含了很多我个人的思考和对实现的推断,因此不少条款和Windows实际机制可能有出入,但应该是合理的.开头几章由于我追求简洁,往往是很多单独的字句,后面的内容更为连贯. 海量细节. 第1章    错误处理 1.         GetLastError返回的是最后的错误码,即更早的错误码可能被覆盖. 2.         GetLastError可能用于描述成功的原因(CreatEvent)

【windows核心编程】DLL相关(2)

关于DLL的延迟加载 延迟加载DLL,使用的是隐式加载方式,当为exe使用的DLL指定为延迟加载的时候,连接器会将exe的[导入段]中去除该DLL的相关信息,同时在exe中嵌入一个新的[延迟加载段]表示要从该DLL中导入哪些函数. 通过让对延迟加载函数的调用跳转到delayimp.lib中的__delayLoadHelper2函数,来完成对延迟加载的DLL的解析. 当exe中第一次调用了一个延迟加载的DLL中的某个导出函数时,加载器才会将该DLL加载到进程地址空间中.需要注意的是:虽然此时已经加

《windows核心编程系列》十八谈谈windows钩子

windows应用程序是基于消息驱动的.各种应用程序对各种消息作出响应从而实现各种功能. windows钩子是windows消息处理机制的一个监视点,通过安装钩子能够达到监视指定窗体某种类型的消息的功能.所谓的指定窗体并不局限于当前进程的窗体,也能够是其它进程的窗体.当监视的某一消息到达指定的窗体时,在指定的窗体处理消息之前,钩子函数将截获此消息,钩子函数既能够加工处理该消息,也能够不作不论什么处理继续传递该消息.使用钩子是实现dll注入的方法之中的一个.其它经常使用的方法有:注冊表注入,远程线

【windows核心编程】DLL相关

DLL相关的东西 1.DLL的加载方式 隐式: #pragma comment(lib, "XX.lib"); 编译器去查找名为XX.dll的DLL,除了名字相同,该DLL和该LIB的GUID也相同. 显式: HINSTANCE   hInst = LoadLibrary(TEXT("XX.dll")); if(NULL == hInst)  retrun; HINSTANCE hInst = LoadLibrary(TEXT("XX.dll")

《Windows核心编程》第5版 学习进度备忘

学习资源:<Windows核心编程>第5版 知识基础支持: 跳过的内容: 1. 知识要点: 1: 注意事项: 1. 不理解知识点: 1. 进度: 1.2014-08-10,前两章结束,接下来“第3章内核对象” <Windows核心编程>第5版 学习进度备忘,布布扣,bubuko.com

windows核心编程(字符编码)

一.字符编码 字符集 1)字符集是字符的数字代码集.有ANSI/ASCII.MBCS(Multibytes).Unicode等.比如“汉”字Unicode代码为0x6c49. 编码方案 2)编码方案是记录字符代码的方式.有UTF-8.UTF-16.GB2312等.编码方案分“变长编码”与“定长编码”两种.UTF-8是变长编码(汉字有的两字节有的三字节),而UTF-16是两字节定长的编码. 字符集与编码方案 3)字符集与编码方案是配套的.如GB2312编码,即是GB2312字符集与GB2312编码

【windows核心编程】使用远程线程注入DLL

前言 该技术是指通过在[目标进程]中创建一个[远程线程]来达到注入的目的. 创建的[远程线程]函数为LoadLibrary, 线程函数的参数为DLL名字, 想要做的工作在DLL中编写.  示意图如下:  相关API 1.创建远程线程 //该函数除了第一个参数为目标进程句柄外 //其他参数均和CreateThread一样 HANDLE hThread = CreateRemoteThread( __in HANDLE hProcess, //目标进程句柄 __in_opt LPSECURITY_A

【windows核心编程】线程局部存储TLS

线程局部存储TLS, Thread Local Storage TLS是C/C++运行库的一部分,而非操作系统的一部分. 分为动态TSL 和 静态TLS 一.动态TLS 应用程序通过调用一组4个函数来使用动态TLS, 这些函数实际上最为DLL所使用. 系统中的每个进程都有一组 正在使用标志(in-use flag), 每个标志可被设置为FREE 或者 INUSE, 表示该TLS元素是否正在使用. 微软平台保证至少有TLS_MINUMUM_AVALIABLE个标志位可供使用, TLS_MINUMU

【windows核心编程】DLL相关(3)

DLL重定向 因为DLL的搜索路径有先后次序,假设有这样的场景:App1.exe使用MyDll1.0.dll, App2.exe使用MyDll2.0.dll, MyDll1.0 和 MyDll2.0是同一个DLL的两个版本,1.0为旧版本,2.0为新版本. 而如果MyDll2.0.dll的存放路径的优先次序比较靠前时,那么App1.exe就会去加载MyDll2.0.dll,这就可能引发 DLL地狱问题,因此DLL重定向可解决这个问题. 加载程序总是先检查应用程序目录,我们所要做的就是如下: ①在