2008年10月09日

置顶 原创 在VC中使用TabCtrl(TAB控件)

在VC中使用TabCtrl无疑是一件相当令人头疼的事情,而偏偏网上的相关资料又比较稀少,一些现成解决方案也多少存在一些问题,于是参考一些现成的TabCtrl类经过糅合修改成以下的一个类:CTabSheet该类以vckbase的一篇文章《在对话框中加入属性页》中提到的“方案五”的CTabSheet类为模板,并参考CodeProject的CXTabCtrl、XPTabCtrl以及网上的一些其它资料修改而成。该类具有以下特点:每个标签页都使用一个对话框以设计该页界面,可以随意设置禁用某页,可以设置隐藏TAB控件(用各页的对话框遮盖),可以随意设置选项卡的位置(顶部、底部、左边、右边),可以自由的添加或删除某页,可以为某个选项卡添加图标。使用方法:添加对话框资源,并且各个子对话框资源的属性应设置为:Style为Child,Border为None。阅读全文>

发表于 @ 2008年10月09日 12:08:00|评论(loading...)|举报|收藏

2008年04月30日

置顶 原创 一些东西

在这里将自己在各个时候用到的一些能简单直接拿来使用的代码做一下记录,方便自己查找。【不定期更新】阅读全文>

发表于 @ 2008年04月30日 23:14:00|评论(loading...)|举报|收藏

2009年06月18日

原创 远程注入DLL并自动显示DLL的窗口

以前也可以注入并显示窗口,但是一旦卸载则会导致宿主进程也被关闭,今天终于搞定卸载注入的DLL后不影响宿主进程。注入器源码部分:namespace pathfileFun{    //**************************************************************      //*  GetCurrentDirectory得到的不一定是应用程序所在的目录!要得到应用程序所在的目录,这里有一个函数:     //*函数名:     GetAppPath()      //*      //*      //*返回值         CString                     -   返回路径的形式是   C:\temp\          //功能               -   得到应用程序所在的路径,保存到strPathBuffer中      //*  阅读全文>

发表于 @ 2009年06月18日 12:17:00|评论(loading...)|举报|收藏

2009年06月17日

原创 "an unsupported operation was attempted"错误


【VC2005】
编译时一切正常,但是一运行就弹出窗口提示"an unsupported operation was attempted"
检查发现只要某个控件绑定了变量就会出现这个错误提示,将所有控件变量删除,又没错误了。
最后百度,查知,原来这个错误由于resource id出现了重复导致的(比如有2个控件IDC_EDIT1、IDC_EDIT2,由于某种原因导致它们的ID都是10010,然后这2个控件都绑定了变量,那么虽然编译不出错,但是一运行就会报错)阅读全文>

发表于 @ 2009年06月17日 13:36:00|评论(loading...)|举报|收藏

2009年06月15日

转载 【转】获得当前进程的列表

1、利用”EnumProcesses“【转载自:http://www.moon-soft.com/doc/8079.htm】//进程描述信息typedef struct _tagPROCESSINFO{ DWORD dwPID; TCHAR strPath[_MAX_PATH]; TCHAR strName[_MAX_FNAME];} PROCESSINFO, *LPPROCESSINFO;//获取进程信息列表BOOL EnumProcessesInfo( PROCESSINFO* lpPsInfo, ULONG ulSize, ULONG* pulNeeded )// lpPsInfo [out] : 指向PROCESSINFO结构数组的指针// nSize [in] : lpPsInfo中的元素个数// nNeeded [out] : 实际的元素个数// 返回值 : TRUE : 成功; FALSE : 失败。 前2个参数都为0则表示查询当前进程数量{ ASSERT( 阅读全文>

发表于 @ 2009年06月15日 17:48:00|评论(loading...)|举报|收藏

2009年05月26日

转载 [转]C\C++预处理指令#pragma详解


转自:http://www.bpsend.com/html/duandianwenzhang/C--/200903/21-14.html


在所有的预处理指令中,#Pragma指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和C ++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。
其格式一般为: #Pragma Para
其中Para 为参数,下面来看一些常用的参数。
(1)message 参数。 Message 参数是我最喜欢的一个参数,它能够在编译信息输出窗口中输出相应的信息,这对于源代码信息的控制是非常重要的。其使用方法为:
#Pragma message(“消息文本”)
    当编译器遇到这条指令时就在编译输出窗口中将消息文本打印出来。当我们在程序中定义了许多宏来控制源代码版本的时候,我们自己有可能都会忘记有没有阅读全文>

发表于 @ 2009年05月26日 10:42:00|评论(loading...)|举报|收藏

2009年03月18日

转载 【转】VC 隐藏模块、MFC 改变窗口类名


【转】VC 隐藏模块
void HideDll() { HMODULE hMod = ::GetModuleHandle("MyHook.dll"); PLIST_ENTRY Head,Cur; PPEB_LDR_DATA ldr; PLDR_MODULE ldm; __asm { mov eax , fs:[0x30] mov ecx , [eax + 0x0c] //Ldr mov ldr , ecx } Head = &(ldr->InLoadOrderModuleList); Cur = Head->Flink; do { ldm = CONTAINING_RECORD( Cur, LDR_MODULE, InLoadOrderModuleList); //printf("EntryPoint [0x%X]\n",ldm->BaseAddress); 阅读全文>

发表于 @ 2009年03月18日 22:27:00|评论(loading...)|举报|收藏

2009年03月01日

转载 【转】调用未知DLL中的导出函数

调用未知DLL中的导出函数【转载自:李马,http://www.titilima.cn/show-131-1.html】
Submitted by 李马 on 2006, May 28, 12:00 PM. 技术的角落
您可以任意转载这篇文章,但请在转载时注明原始链接和作者,谢谢。

不知道诸位看官是否有过这样的经历:在不经意之间发现一个DLL文件,它里边有不少有趣的导出函数——但是由于你不知道如何调用这些函数,所以只能大发感慨而又无能为力焉。固然有些知名的DLL可以直接通过搜索引擎来找到它的使用方式(比如本文中的例子ipsearcher.dll),不过我们诚然不能希望自己总能交到这样的好运。所以在本文中,李马希望通过自己文理不甚通达的讲解能够给大家以授人以渔的效果。
先决条件
阅读本文,你需要具备以下先决条件:初步了解汇编语言,虽然你并不一定需要去读懂DLL中导出函数的汇编代码,但是你至少应该了解诸如push、mov这些常用的汇编指令。 一个能够查看DLL中导出函数的工具,Visual Studio中自带的Depen阅读全文>

发表于 @ 2009年03月01日 18:24:00|评论(loading...)|举报|收藏

2009年02月11日

转载 【转】VC++中的CString操作指南


原文出处:codeproject:CString Management

通过阅读本文你可以学习如何有效地使用 CString。
  CString 是一种很有用的数据类型。它们很大程度上简化了MFC中的许多操作,使得MFC在做字符串操作的时候方便了很多。不管怎样,使用CString有很多特殊的技巧,特别是对于纯C背景下走出来的程序员来说有点难以学习。这篇文章就来讨论这些技巧。
  使用CString可以让你对字符串的操作更加直截了当。这篇文章不是CString的完全手册,但囊括了大部分常见基本问题。
这篇文章包括以下内容:
CString 对象的连接
格式化字符串(包括 int 型转化为 CString )
CString 型转化成 int 型
CString 型和 char* 类型的相互转化
char* 转化成 CString
CString 转化成 char* 之一:使用LPCTSTR强制转化
CString 转化成 char* 之二:使阅读全文>

发表于 @ 2009年02月11日 21:48:00|评论(loading...)|举报|收藏

转载 【转】INTEL X86 体系 32 位汇编语言速成


上回为大家简单介绍了 Visual C++ Inline Assembly,相信已经有人想实际动手来试试了。然而,要想自由使用 Inline Assembly,你首先必须掌握 INTEL X86 体系的 32 位汇编语言。本文正是为那些已经略有 8086 汇编语言基础却没接触过 X86 体系的 32 位汇编语言的同志们准备的。我们将一起了解和深入 INTEL X86 体系的 32 位汇编语言。
  因为我们的目标是“速成”,如果你能有点基础的话,那么在此之上展开讨论就能让彼此都感觉轻松很多。假若你以前完全没有学习过汇编语言,那么请务必先去找本 8086 汇编语言的教科书来补习补习之后再来阅读本文。
  学习一种的汇编语言,必须了解这种 CPU 的寄存器、寻址方式以及各种指令。我们就先从寄存器开始着手吧。
g
INTEL X86 常用寄存器
通用寄存器 段寄存器
AH/AL AX (EAX) 累加器 CS 代码段
BH/BL BX (EBX) 基址 DS 数据段
CH/CL CX (ECX阅读全文>

发表于 @ 2009年02月11日 21:17:00|评论(loading...)|举报|收藏

2009年02月10日

转载 [转]两种“动态调试程序”的方法


呵呵 看的写的不错就转过来了,都是些基本的东东
from:http://www.programfan.com/club/showpost.asp?id=147534&t=o
调试程序是一件苦差事,即使是经验老到的程序员,也会有焦头烂额的时候。对于大段大段的代码,找了几个钟头还没发现其中的错误,难免头昏眼花,这时 我们就想到:既然眼睛没看出代码中的错误,那么,我们让错误在运行的时候暴露出来,然后顺藤摸瓜,找到代码中的错误处。这就是所谓的“动态调试”。相对 的,不让程序运行,而是一行一行的看代码,找错误,可称为“静态调试”。
    方法一:使用断言。
     C和C++有一个很好用的东西:assert(即:断言),就是说程序员认为assert里面的东西必然成立。如果断言失败(程序员认为它必然成立,但事实上不成立),说明程序某个地方出了问题,程序将终止。
     例如,我们希望求一个整数x的算术平方根的整数部分r,如果计算正确,则必然有r*rx,所以我们可以这样写:阅读全文>

发表于 @ 2009年02月10日 23:01:00|评论(loading...)|举报|收藏

转载 [转]Visual C++ Inline Assembly 简介

如果你想编写出极高性能的游戏代码,那么使用汇编语言无疑将会是你的最佳选择。不过,眼看着编程技术已经发展到了今天这种格局,你再去直接用汇编语言来进行编程也未免太不合时宜了吧。作为一个高性能游戏程序的编写者,你应该用的是 Inline Assembly。什么是 Inline Assembly    Inline Assembly 就是我们通常所说的在线汇编,即直接在你的 C/C++ 代码里加入汇编语言代码。在线汇编的好处,那些习惯了在线汇编的人都觉得它用起来很方便。    同传统的汇编方式相比,我们可以完全避免那些烦琐的汇编和链接步骤,可以直接在汇编代码中使用 C变量名和函数名。这样一来,我们的汇编代码就能够很容易地同我们的 C 语言程序紧密而自然地结合在一起了。另外,由于是把汇编语句和 C 或者C++ 语句混合在一起进行编程,我们还将能实现许多原来光凭 C 或者 C++ 语句无法办到的事。在线汇编的用处阅读全文>

发表于 @ 2009年02月10日 22:59:00|评论(loading...)|举报|收藏

转载 【转】代码格式化工具Astyle


http://sourceforge.net/projects/astyle
和VC6的集成。
接呀后在bin目录中有astyle.exe,vc6 Tools->Customize->Tools 新建项目
Command:D:\tmp\devel_tools\astyle\bin\astyle.exe
Arguments:--style=ansi $(FileName)$(FileExt)
PS:这里的ansi指的是ansi风格,还有gun,linux,kr,java等风格,一般来说都使用ansi风格。
Initial directory:$(FileDir)阅读全文>

发表于 @ 2009年02月10日 22:59:00|评论(loading...)|举报|收藏

转载 【转】Using Visual C++ 2005 Express Edition with the Microsoft Platform SDK

from:
http://www.microsoft.com/express/2005/platformsdk/default.aspx


By Brian Johnson,
Microsoft Corporation

You can use Visual C++ Express to build powerful .NET Framework applications immediately after installation. In order to use Visual C++ Express to build Win32 applications, you'll need to take just a few more steps. I'll list the steps necessary for building Win32 applications using Visual C++ Express.
Step 1: Install Visual C++ Exp阅读全文>

发表于 @ 2009年02月10日 22:57:00|评论(loading...)|举报|收藏

2008年11月03日

原创 柴门牌RAR文件解压、暴破工具

本软件由柴门(wooddoor)开发,可以免费使用。本软件最初是由于本人遗忘了网上银行证书压缩包的密码,试用了n个RAR密码破解器,都没能达到自己的目的,于是自己利用WinRar官网提供的免费的UnRar.dll(http://www.rarlab.com/rar_add.htm)开发了这个软件。此版本尚未完全完成,目前暴破速度也还比较慢(大概1秒钟只能测试6、7个密码),不过开发这个软件的本意也并不是为了去破解别人的RAR文件密码,而只是为了找回自己被遗忘密码的RAR文件密码,因此,都是使用自己所有用过的密码构成字典进行暴破。而如果不用字典,即使网上其它号称速度最快的RAR密码暴破器也是难以完成破解任务的(往往所需时间都是以年计),除非可以设计成利用网络分布式计算,或许就可以不靠字典纯粹枚举暴破了。http://p.blog.csdn.net/images/p_blog_csdn_net/gnuljf/EntryImages/20081103/截图.jpg阅读全文>

发表于 @ 2008年11月03日 18:00:00|评论(loading...)|举报|收藏

Csdn Blog version 3.1a
Copyright © 柴门