普通程序杂想
norsd
这个作者很懒,什么都没留下…
展开
-
在修改dll名字后如何使lib重建,定向到新名字的dll
ref:https://blog.csdn.net/GG_SiMiDa/article/details/81742924因为工作需要区分不同版本的dll(名字相同), 工程中不希望动态LoadLibrary,而是用lib所以必须重建lib。将dll改名为 原名.version.dll用 pexports 生成 def: pexports -o xxx.dll > xxx.d...原创 2019-08-22 12:49:43 · 1177 阅读 · 0 评论 -
如何删除 Internet Gateway ( Internet 网关 )
一次在无线上产生了,总算在国外网站找到了办法。 http://support.microsoft.com/default.aspx?scid=kb;en-us;821980&Product=winxp The Internet Gateway Device Discovery and Control Client permits Windows to detect and inte原创 2009-06-30 17:19:00 · 7447 阅读 · 0 评论 -
简单比较中的题
PSTR psTest = "/x89"; 0x89 == psTest[0] 是否 成立? 不成立. 我本来很疑惑, PSTR[0] 是一个 byte , 0x89 也是一个byte . 反汇编如下: 003533E7 8B 45 08 mov eax,dword ptr [psTest] 003533EA原创 2009-05-14 20:45:00 · 653 阅读 · 0 评论 -
MessageBox ShowNumber 之类的迷案
我以前发生过,并且经常发生这样一种情况 , 代码中加入 MessageBox , 则代码正常 , 一旦去除 ,立刻有问题.难道message box 是一个黑函数? 今天又遇到了 , 还好我有宝贝给我解决了这个问题. 症状: CreateThread( Global::GetHentaiIp .... ) 无法获取ip , 但是开头加个 MessageBo原创 2009-05-13 01:55:00 · 1440 阅读 · 0 评论 -
for 中 迭代器执行顺序 和 自加的一些问题
codes from comicOnline.Global for( int i = 0 ; *(pstHostent->h_addr_list + i) != NULL ; i++ ) Global::uHentaiOrgIps [ i ] = **(PDWORD*)(pstHostent->h_addr_list + i ) ; pstHostent原创 2009-05-13 01:00:00 · 1006 阅读 · 0 评论 -
用Notepad 遇到的"空格"问题 ASCII 7F
写Js脚本遇到一个奇怪问题: oResultArea .getElementsByTagName("input")[1].value = a_strContent ; oResultArea .getElementsByTagName("input")[1].value = a_strContent原创 2009-04-24 21:50:00 · 1804 阅读 · 0 评论 -
ListCtrl SDK 一些问题
ListCtrl 中 item 的创建: LVM_INSERTITEM LVITEM stItem ; stItem.iItem = i ; // 第几列 stItem.iSubItem = 0 ; //必须置0, 否则,无效 stItem.iImage = stShellFileInfo.iIcon; stItem.pszText = L"1st SubIt原创 2009-03-24 15:19:00 · 2076 阅读 · 0 评论 -
使用GetOpenFileName 选择文件夹
关键字: GetOpenFileName CFileDialog SDK Folder我一直不喜欢默认的文件夹选择. 相反地,我喜欢MFC中的CFileDialog这种对话框.如何使用SDK,实现CFileDialog对话框选择文件夹, 是我要解释和举例的.1. CFileDialog 的实现. CFileDialog 是MFC的类,实现了定制Open, Save, 这些Common Dialog原创 2008-12-08 14:50:00 · 13773 阅读 · 0 评论 -
在主线程中使用CRITICAL_SECTION 引起的阻塞
最近写的程序有一个小毛病,某一个地方使用MessageBox,如果不迅速click ok, 就会使整个程序无反应. 因为不是崩溃,所以考虑是死锁了.后来使用log,发现了问题,先来看看log file:Time At:0004234132Line:0AddDownloadTaskReady enter CriticalTime At:0004234194Line:1AddDownl原创 2009-01-04 13:45:00 · 1600 阅读 · 0 评论 -
BMP 文件的注意事项
BMP 文件的注意事项 BMP 文件作为古老的位图文件格式,本来是没什么屁事的. 但是最近折腾了我3天. 事情是这样的, 俺的一个GIF帧要复制成一个BMP, 然后出现奇怪问题, 有的图片能正常显示,有的就会失真,表现为长宽的失真, 而不是色彩的失真, 我实在是被弄的身心憔悴. 后来发现如果把bmp存储成 32位格式的bmp,则所有图片都能正常显示.原创 2008-11-02 13:22:00 · 1107 阅读 · 1 评论 -
使用SDK实现MFC模式的处理方法(一)
一.起子 没有,想用SDK而已, 程序看的清爽. 讨厌mfc许多麻烦的代码.有时候明明很简单,却只好用mfc,不爽.二.构想 如果你尝试模仿mfc, 你就会发现似乎有一道过不去的坎, 你想实现自己的CWnd, CDialog, 可是发现很难实现复用. 因为你的"CWnd,CDialog"似乎必须要有一个尾巴, 这个尾巴就是WndProc, 一个被要求是__stdcall 的函数.原创 2008-09-30 17:07:00 · 1780 阅读 · 0 评论 -
stdafx.h 包含的头文件出错,导致大问题.
莫名奇妙的,编译的时候无法识别 PVOID , 然后我 typedef void* PVOID; 还是不能识别. 最后发现stdafx.h 包含一个 h 文件. 里面 struct COMMANDINFO{ DWORD dwMagic ; DWORD dwVersion; DWORD dwCommand ; DWORD dwReve原创 2010-02-03 18:49:00 · 1292 阅读 · 0 评论 -
vs2010 vc 调试钩子dll
vs2010vcdll project propertiesdebuggingcommand: 被挂接的exe 路径. (比如C:/文华财经Mytrader行情交易系统/mytrader_wh.exe)Attach: yes 然后启动debug , 运行mytrader_wh.exe , 然后外部动态挂接钩子到mytrader_wh.exe , 就可以调试了.原创 2010-02-10 09:10:00 · 3219 阅读 · 0 评论 -
怎样判断一个exe可执行程序(dll文件)是32位的还是64位的?
https://blog.csdn.net/chenjianqi0502/article/details/79034403 怎样判断一个exe可执行程序(dll文件)是32位的还是64位的?简便方法: 直接用记事本或者notepad++打开exe文件(dll文件),会有很多乱码,不要头疼,接下来只需要在第二段中找到PE两个字母,在其后的不远出会出现d? 或者L。若是d,则证明该...转载 2018-07-30 17:20:38 · 1954 阅读 · 0 评论 -
CountBitsSetTable
ref: http://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetTableCounting bits set by lookup tablestatic const unsigned char BitsSetTable256[256] = {define B2(n) n, n+1, n+1, n+转载 2017-07-01 14:50:04 · 342 阅读 · 0 评论 -
c# KeyDown KeyPress 函数中event 的 Handled属性
很奇怪的KeyDown中的 Handled.true 只能使 Keys.Back 这类失效,如果要使比如数字失效,必须设置一个变量 _bHandled = true然后在紧接着会触发的 KeyPress中的 event.Handled = true注意 KeyPress这个消息没有 Key的信息,所以要通过先前的KeyDown来判断原创 2013-09-03 21:40:44 · 2930 阅读 · 0 评论 -
Git code.google.com
因为工作关系,需要维持一个Project,于是选定了code.google.com好吧,如果再让我选一次,我一定会.........说一下吧,首先去code.google.com建立一个工程,然后选择用GIT作为 版本控制工具。以前一直用TFS的,SVN也被弃用很久了,没办法,上手GIT把。下面说一遍 code.google.com 使用GIT 一步步开始配置1. 创建工程,选原创 2013-05-07 19:29:12 · 1604 阅读 · 1 评论 -
VAX Patch VA_X.DLL 安装位置的问题 for VS2008 , VS2010 , VS2011
在过去(VS2008), VA_X只要放在x64C:\Program Files (x86)\Visual Assist X\x86C:\Program Files\Visual Assist X\中替换就可以了。但是VS2010和VS2011都在另一个位置,比如:VS2011 BETAC:\Users\Administrator\A原创 2012-04-06 23:34:39 · 20366 阅读 · 2 评论 -
多网卡指定网卡发送数据
环境:2个网卡,分别在不同网络环境。局域网一: 网关:10.9.16.254 电脑地址1:10.9.16.88局域网二:网关:10.9.24.1 电脑地址2:10.9.24.88原创 2011-07-28 16:00:05 · 17316 阅读 · 10 评论 -
Dll 中设置全局类变量, LoadLibrary 998错误, TLS问题.
话说俺在把一个程序改成c#,然后有些功能还是用VC写比较方便,所以要求c#调用dll. 俺这个程序是WebBrowser界面,通过external 调用dll , 结果c#的WebBrowser就会抛出异常,说 object error . 这是一个说了等于白说的错误. 奇怪的是该dll通过vc调用一切"正常". 通过ida查看,一开始以为 C# 没有对CRT原创 2009-12-14 21:17:00 · 6121 阅读 · 0 评论 -
ARGB 排布
ARGB 分别为 Alpha , Red , Green , Blue 比如一个数: 0xffc864d2 ff代表Alpha , c8代表Red , 64代表Green , d2代表Blue 而在文件中,因为小头排布的问题: 显示的是: d2 64 c8 ff .原创 2010-02-20 21:09:00 · 1232 阅读 · 0 评论 -
截获ExtTextOutW , ETO_GLYPH_INDEX 问题.
一般而言,普通的第三方程序不会蛋疼的去直接使用 ETO_GLYPH_INDEX . 如果我们截获到这种情况, 很有可能是更高级的api调用所致. 比如 DrawTextA/W TextOutA/W 等. 具体情况,调试下断点, 看callstack就能一目了然. 很多时候都是 DrawTextA/W -->usp10.dll --> ExtTextOutW原创 2010-02-10 09:18:00 · 3618 阅读 · 0 评论 -
Edit控件无法添加字符串问题
Edit控件无法添加字符串问题 ,刚开始还好好的,通过 /::SendMessage(hInfoEdit, EM_SETSEL, -1, -1); ::SendMessage(hInfoEdit, EM_REPLACESEL, 0, (LPARAM)pcwInfo);可以追加字符串, 但是一旦追加的字符行数超过显示范围,则会有一次消息声, 追加的原创 2008-07-03 12:25:00 · 981 阅读 · 0 评论 -
stl::string 使用问题
包含 using namespace std;如果包含 iostream则可能会发生 operator + 不能使用的问题.原创 2008-06-12 01:18:00 · 728 阅读 · 0 评论 -
rc资源文件的宏定义
遇到一个问题,我希望在 DEBUG模式下包含资源A, 在RELEASE模式下包含B 于是我在 rc文件中写道: #ifdef _DEBUG .................A #else ................B #endif 编译后发现 _DEBUG 没有被定义. 原因: MS编译器中资源是单独编译的, 在Project + properti原创 2008-06-11 16:13:00 · 4742 阅读 · 0 评论 -
VC 2005 如何调整多工程编译次序
VC 2005 如何调整多工程编译次序 在左侧底部选择Solution Explorer 选项卡, 右键Solution YourProjectName ( X projects),在menu中选择: Properties, 在popup的Dialog中选择: Single startup project , 在listbox中选择你要优先编译的工程原创 2007-08-20 17:53:00 · 1640 阅读 · 1 评论 -
判断某个数值存在与一个区间的办法
WCHAR wcValue;如何判断 wcValue 是 0-9 这十个数字中的一个?许多人会写: if( wcValue>=0x30 && wcValue非常直观,但是不禁有点丑陋。实际上你可以改成:if( wcValue-0x30但是其中会出现一个问题。 wcValue作为数值将被作为有符号数,wcValue如果小于0x30,计算结果将被认为是一个负数。为了解决原创 2007-05-19 19:20:00 · 15163 阅读 · 0 评论 -
格式化输出的技巧
1.自动补0 是否想到这样的输出: 002314A2 只要写%08X 就可以自动实现哦.原创 2007-08-20 18:25:00 · 827 阅读 · 0 评论 -
void* PVOID 加减操作注意事项。
当函数提供参量为void* 时,+1,-1 等等类似指针操作将依赖 实际变量 的类型。比如。 memcpy 函数, void *memcpy( void* dest, const void* src, size_t count );我们看到,参量1,2都是void*。 假设有 char* pDest; char* pSrc; int nStrLen;原创 2007-05-09 19:35:00 · 1873 阅读 · 0 评论 -
在Vista下运行程序的注意事项
Microsoft 的Vista号称加入了众多安全特性。其中的UAC(User Account Control) 保证了恶意程序,或者用户非自愿的程序不被运行。同时,也把所有程序默认运行在Standard Account 权限。任何提升权限至Administrator Account 都需要用户许可。除了UCA,Vista还加入了一个奇特,但是的确有用的特性,Data Redirect (原创 2007-04-26 17:36:00 · 1479 阅读 · 0 评论 -
CArray 嵌套问题。 错误C2448;C2664;C2582
当CArray 嵌套时候,许多情况下会发生C2448;C2664;C2582这样的错误。并且指示CArray的内部错误。在KB231995中,微软描述了问题,并且简要的诉说了解决方案。英文版本: http://support.microsoft.com/kb/231995/en中文机器翻译版本:http://support.microsoft.com/kb/231995/zh-c原创 2007-04-25 17:26:00 · 2696 阅读 · 0 评论 -
改变控件颜色问题
改变控件颜色问题改变控件颜色,一般都是响应一个反射的消息:ON_WM_CTLCOLOR_REFLECT (=WM_CTLCOLOR)在不改变任何的情况下,函数如下: HBRUSH CMyEdit::CtlColor(CDC* pDC, UINT nCtlColor){ // TODO: Change any attributes of the DC here // TODO:原创 2007-03-29 16:42:00 · 979 阅读 · 0 评论 -
关于控件重载WM_PAINT消息
控件重载WM_PAINT消息。在WM_PAINT的重载中这样写道:Do not call CEdit::OnPaint() for painting messages //CPaintDC dc(this); // device context for painting // TODO: Add your message handler code here // Do not call原创 2007-03-29 15:01:00 · 2767 阅读 · 0 评论 -
控件字体问题
控件:Combo Box代码: static CFont font; font.CreateStockObject(ANSI_VAR_FONT); combo.SetFont(&font); 随后对 Combo Box 进行 AddString 操作。 字体将是 ANSI_VAR_FONT CDC* pDC = pComboBox->GetDC();原创 2007-03-14 17:03:00 · 1128 阅读 · 0 评论 -
SetWindowPos(...) 的一些注意事项。
前些天在调整控件位置,总是出现非预想的错误。我完全没有注意到msdn关于参数的注释:hWnd [in] Handle to the window. hWndInsertAfter [in] Handle to the window to precede the positioned window in the Z order. This parameter must be a原创 2007-03-18 00:15:00 · 2785 阅读 · 0 评论 -
在一条语句中同时实现赋值+判断
在一条语句中同时实现赋值+判断 我偶尔写着好玩的. 应该又出处,但是害怕兼容性有问题.如下: //2007.10.10 论述错误,见注LPVOID lpProcessBuf = NULL; if( NULL == ( lpProcessBuf = VirtualAllocEx(................)) ) {..................原创 2007-08-20 19:24:00 · 2966 阅读 · 0 评论 -
[原创]实现类嵌套的方法
1. Class CA; CA.h CA.cpp 2. Class CB; CB.h CB.cpp// ---------------CA.H-------------------//class CA{ p原创 2007-10-10 14:51:00 · 797 阅读 · 0 评论 -
妈的,混蛋 wfopen_s 函数
妈的,混蛋 wfopen_s 函数. 打开一个文件用 r 模式. 结果数据怎么和文件不一样的,总是差1, 比如 npData[10] 会指向 [11]去, 可是之前的数据都对,就是某一个数以后都错了, 后来仔细啊一看 0D0D0A read以后把一个0D给吃掉了. 后来一看文档,麻辣隔壁: If t or b is not given in mode, the default原创 2008-06-04 20:59:00 · 8052 阅读 · 0 评论 -
LNK1000: Internal error during IncrBuildImage 链接错误解决方法
操作系统: Vista Home Premium (English Version) Visual Studio版本: 9.0 微软支持页面: http://support.microsoft.com/kb/948127 微软补丁下载: https://connect.microsoft.com/VisualStudio/Downloads/Downloa原创 2008-08-27 23:00:00 · 5149 阅读 · 0 评论 -
rc资源文件
http://msdn.microsoft.com/en-us/library/aa380599(VS.85).aspx 在线MSDN的层次:Win32 and Com Development Tools Resource Complier 中详细描述了资源文件的编写与使用. 包括宏的使用. 举例: 在Debug模式下包含一个DebugDll,在Release 模式下包含原创 2008-06-04 12:29:00 · 842 阅读 · 0 评论