摘要:
在看windows via C/C++的时候,经常看到module, instance, image这样的字眼。其实这是windows中的一些术语,module就相当于exe, dll文件。在进程的地址空间中,exe, dll都当作module被load。所 以windows中的数据结构HMODULE和HINSTANCE是一样一样的,他们的值都是一个地址,就是该module的base address。这也就是为什么像LoadIcon/LoadImage这些函数都需要一个HMODULE的参数一样,他们需要这个参数去这个 module的地址开始去将资源读取出来。exe和dll一般都是通过memor 阅读全文
posted @ 2011-04-10 14:45
super119
阅读(342)
评论(0)
推荐(0)
摘要:
SDService和SDClient的通信,一开始想到的就是使用socket的方式。但后来想了一下,windows下进程间通信的方法很多,其他方法是否可以呢?socket的通信方式开销比较大阿。于是:1. 用Mutex+Memory map file(unnamed). 一开始SDService创建一个mutex,然后wait直到SDClient signal这个mutex。然后SDService就从memory map file中读取command,将结果数据填写入memory map file,再signal另外一个mutex通知SDClient。SDClient最终从memory map 阅读全文
posted @ 2011-04-10 14:45
super119
阅读(553)
评论(0)
推荐(0)
摘要:
最后面有完整的源代码,在Schedule Download项目中使用。这里描述几个关键点:1. 不能参考网上的文章,说的都很片面而且版本过老。请参考MSDN:Win32 and COM development -> Networking -> Network communication -> Routing and Remove Access Service -> SDK Document -> Routing and Remote Access Service下的内容。事实上,对于win32的编程开发,第一参考资料始终是MSDN,如果MSDN上的内容有些过于浅显 阅读全文
posted @ 2011-04-10 14:44
super119
阅读(790)
评论(0)
推荐(0)
摘要:
代码都在下面了,目前这个版本实现的功能还非常的少,能实现的有:1. GET方法。给定一个URL(可以带中文),返回http的响应数据,包括文本和二进制数据2. 支持代理服务器,需要用户预先设定好proxy server ip, port, username, password.不支持的有:1. POST2. 查询http响应的header。3. 将返回的文本数据重新编码,变成UTF-16。这需要首先从header取出http server响应的数据是什么编码的,然后就可以使用windows的MultiByteToWideChar来进行转换。这里总结几点开发过程中的注意点:1. MSDN上的资料 阅读全文
posted @ 2011-04-10 14:44
super119
阅读(3662)
评论(0)
推荐(0)
摘要:
做ScheduleDownload,要做一个logger,这个logger的大致结构如下:Code: Select all#ifdef _DEBUG#define LOGGER(log_level, filename, line, format, ...) \ logger_action(log_level, filename, line, format, __VA_ARGS__);#else#define LOGGER#endif/* * Log the strings. filename should be __FILE__ and line should be __LINE__ */vo 阅读全文
posted @ 2011-04-10 14:43
super119
阅读(2173)
评论(0)
推荐(0)
摘要:
1. 创建windows console应用程序。vs自带的windows service模板创建出来的项目看不懂。2. _tmain函数这样写:Code: Select all/* Main routine that starts the service control dispatcher */VOID _tmain (int argc, LPTSTR argv[]){ SERVICE_TABLE_ENTRY DispatchTable[] = { { ServiceName, ServiceMain }, { NULL, NULL } }; StartServiceCtrlDispatc 阅读全文
posted @ 2011-04-10 14:43
super119
阅读(653)
评论(0)
推荐(0)
摘要:
关于new、delete和堆的一些理解 先看以下的两个简单的程序: 第一: //////////Visula C++ 6.0环境 #include<iostream.h> void main() { int a=3; int *p=new int; p=&a; cout<<*p<<endl; delete p; /////////有错误 } 第二: //////////Visual C++ 6.0环境 #include<iostream.h> void main() { int a=3; int *p=new int; *p=a; cou 阅读全文
posted @ 2011-04-10 14:36
super119
阅读(193)
评论(0)
推荐(0)
摘要:
判断一个字符串是否是一个整型数或浮点数 两个函数:isNum-判断是否是一个整型数 isFloat-判断是否是一个浮点数 代码: Code: Select allbool CUtility::isNum(CString csInput){//将字符串一个一个字符拆出来判断是否是数字char cTemp;int nStringLength = csInput.GetLength();bool bReturnValue = true;for (int nLoopindex = 0; nLoopindex < nStringLength; nLoopindex++){ //将字符一个一个取出来 阅读全文
posted @ 2011-04-10 14:35
super119
阅读(1288)
评论(0)
推荐(0)
摘要:
1、首先需要include一个文件,如下: #include <tlhelp32.h> 2、参看以下代码: Code: Select all //遍历系统所有进程,杀死联众世界HANDLE handle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);PROCESSENTRY32 *info = new PROCESSENTRY32;info->dwSize = sizeof(PROCESSENTRY32); if(Process32First(handle,info)){ if(GetLastError()==ERROR_ 阅读全文
posted @ 2011-04-10 14:35
super119
阅读(203)
评论(0)
推荐(0)
摘要:
对话框中屏蔽回车键和ESC键 基于对话框的应用程序中,对于回车键和ESC键,在工程建立的时候就已经有了响应函数,分别是: void CXXXDialog::OnOK();和void CXXXDialog::OnCancel() 这两个函数中,都只有一句代码,分别是CDialog::OnOK();和CDialog::OnCancel 这会导致一个问题:按下回车键和ESC键之后会令对话框析构并消失,所不同的是按下回车键后DoModal 返回的是IDOK,按下ESC键盘之后DoModal返回的是IDCANCEL 但是大部分时候我们并不希望按下回车键和ESC键之后使对话框退出,所以应该屏蔽掉这两种情况 阅读全文
posted @ 2011-04-10 14:34
super119
阅读(577)
评论(0)
推荐(0)

浙公网安备 33010602011771号