data

1 char To wchar_t

void CProcess::charTowchar( char *chr, wchar_t *wchar, int size)
{
    /*
    DWORD dwSize = MultiByteToWideChar(CP_ACP, 0, chr, -1, NULL, 0);
    int dn = 2 * dwSize;
    wchar_t *wchr = (wchar_t*)malloc(dn);

    if (!wchr)
    {
    free(wchr);
    }
    charTowchar(chr, wchr, 2 * dwSize);
    */

    MultiByteToWideChar(CP_ACP, 0, chr,
        -1/*strlen(chr) + 1*/, wchar, size / sizeof(wchar[0]));
}

2 whcar To char

void wcharTochar( wchar_t *wchar, char *chr, int length)
{
    /*
    DWORD dwNum = WideCharToMultiByte(CP_ACP, NULL, wchar, -1, NULL, 0, NULL, FALSE);
    char  *chr = (char*)malloc(dwNum);
    if (!chr)
    {
    free(chr);
    }
    wcharTochar(wchar, chr, dwNum);
    */

    WideCharToMultiByte(CP_ACP, 0, wchar, -1,
        chr, length, NULL, NULL);
}

3 StringFind

int StringFind( char *pSrc, const char *pDst)
{
    int i, j;
    for (i = 0; pSrc[i] != '\0'; i++)
    {
        if (pSrc[i] != pDst[0])
            continue;
        j = 0;
        while (pDst[j] != '\0' && pSrc[i + j] != '\0')
        {
            j++;
            if (pDst[j] != pSrc[i + j])
                break;
        }
        if (pDst[j] == '\0')
            return i;
    }
    return -1;
}

4 printError(TCHAR* msg)

void printError(TCHAR* msg)
{
    DWORD eNum;
    TCHAR sysMsg[256];
    TCHAR* p;

    eNum = GetLastError();
    FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
        NULL, eNum,
        MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
        sysMsg, 256, NULL);

    // Trim the end of the line and terminate it with a null
    p = sysMsg;
    while ((*p > 31) || (*p == 9))
        ++p;
    do { *p-- = 0; } while ((p >= sysMsg) &&
        ((*p == '.') || (*p < 33)));

    // Display the message
    _tprintf(TEXT("\n  WARNING: %s failed with error %d (%s)"), msg, eNum, sysMsg);
}

5 EnableDebugPrivilege

BOOL EnableDebugPrivilege(BOOL bEnable)
{
    HANDLE hToken = INVALID_HANDLE_VALUE;
    //OpenProcessToken  
    if (0 == ::OpenProcessToken(::GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken))
    {
        return FALSE;
    }
    LUID luid;

    //  
    ::LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &luid);
    TOKEN_PRIVILEGES tp;
    tp.PrivilegeCount = 1;
    tp.Privileges[0].Luid = luid;
    if (bEnable)
    {
        tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
    }
    else
    {
        tp.Privileges[0].Attributes = 0;
    }

    if (!AdjustTokenPrivileges(
        hToken,
        FALSE,
        &tp,
        sizeof(TOKEN_PRIVILEGES),
        (PTOKEN_PRIVILEGES)NULL,
        (PDWORD)NULL))
    {
        return FALSE;
    }
    if (GetLastError() == ERROR_NOT_ALL_ASSIGNED)
    {
        return FALSE;
    }
    ::CloseHandle(hToken);
    return TRUE;
}

6 IsWow64()

BOOL IsWow64()
{
    BOOL bRet = FALSE;
    ::IsWow64Process(GetCurrentProcess(), &bRet);
    return bRet;
}

7 SetCurretDir

    // 代码调试时需将dll拷贝到工程目录;生成后就是当前目录
    char cCurDir[MAX_PATH];
    GetCurrentDirectoryA(MAX_PATH, cCurDir);
    char cModPath[MAX_PATH] = "\\ConsoleApplication5.dll";
    strcat_s(cCurDir, cModPath);

8 绝对路径和相对路径

9 VS–生成版本设置

9.1项目右键–>属性–>配置属性–>c/c++ –>代码生成 –>运行库–>多线程(\MT).
9.2项目右键–>属性–>配置属性–>常规–>平台工具集
9.3项目右键–>属性–>配置属性–>常规–>字符集–多字节/unicode
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值