Windows编程
文章平均质量分 76
zhengtingt108
一个人安静的生活,写字,聆听,流浪
展开
-
利用互斥对象实现线程同步
利用互斥对象实现线程同步1) 互斥对象(mutex)属于内核对象,它能够确保线程拥有对单个资源的互斥访问权。2) 互斥对象包含一个使用数量,一个线程ID和一个计数器。3) ID用于标识系统中的哪个线程当前拥有互斥对象,计数器用于指明该线程拥有互斥对象的次数。使用CreateMutex来创建互斥对象,用ReleaseMutex来释放互斥对象在线程执行程序中用WaitForS原创 2009-06-25 11:30:00 · 825 阅读 · 0 评论 -
HOOK的利用
HOOK的利用可以通过安装HOOK过程来屏蔽相应消息,比如说鼠标消息,相应键盘消息用SetWindowsHookEx来安装相应HOOK过程,如果想屏蔽所有线程的消息,则HOOK过程必须在动态链接库中定义。下面为屏蔽本进程中线程的鼠标和某些键盘消息的代码:HHOOK hmouse;HHOOK hkey;HWND hwnd=NULL; LRESULT CALLBAC原创 2009-07-01 17:55:00 · 751 阅读 · 0 评论 -
实现文件读写操作的几种方法
实现文件读写操作的几种方法下面为实现文件读取数据的代码://以下为用C语言读取文件FILE *pfile=fopen("2.txt","r"); char *pbuf; fseek(pfile,0,SEEK_END); long len=ftell(pfile); pbuf=new char[len+1];原创 2009-06-28 17:38:00 · 726 阅读 · 0 评论 -
进程间通信(一):利用剪贴板
进程间通信(一):利用剪贴板进程间通信的四种方式1) 剪贴板2) 匿名管道3) 命名管道4) 邮槽在利用剪贴板之前,必须先打开剪贴板,利用OpenClipboard和CloseClipboard来打开和关闭剪贴板。EmptyClipboard清除剪贴板,并释放句柄,并将所有权分配给当前打开剪贴板的窗口。SetClipboardData和GetClipbo原创 2009-06-27 23:11:00 · 545 阅读 · 0 评论 -
进程间通信(三):利用命名管道
进程间通信(三):利用命名管道进程间通信的四种方式1) 剪贴板2) 匿名管道3) 命名管道4) 邮槽命名管道是通过网络来完成进程间的通信,它屏蔽了底层的网络协议细节。我们在不了解网络协议的情况下,也可以利用命名管道来实现进程间的通信。将命名管道作为一种网络编程方案时,它实际上建立了一个客户机/服务器通信体系,并在其中可靠地传输数据。命名管道是围绕Wind原创 2009-06-27 23:09:00 · 661 阅读 · 0 评论 -
动态链接库
动态链接库1) 动态链接库通常都不能直接运行,也不能接收消息。它们是一些独立的文件,其中包含能被可执行程序或其它DLL调用来完成某项工作的函数。只有在其它模块调用动态链接库中的函数时,它才发挥作用。2) Windows API中的所有函数都包含在DLL中。其中有3个最重要的DLL,Kernel32.dll,它包含用于管理内存、进程和线程的各个函数;User32.dll,它包含用于执行用原创 2009-06-29 18:49:00 · 402 阅读 · 0 评论 -
进程间通信(二):利用匿名管道
进程间通信(二):利用匿名管道进程间通信的四种方式1) 剪贴板2) 匿名管道3) 命名管道4) 邮槽使用CreatePipe函数来创建匿名管道,由于匿名管道只能实现在父进程和子进程之间进行通信,所以在父进程创建完匿名管道之后,利用CreateProcess来创建子进程,然后通过ReadFile和WriteFile来实现从管道中读取和写入数据。下面为父进程原创 2009-06-27 23:10:00 · 594 阅读 · 0 评论 -
进程间通信(四):利用邮槽
进程间通信(四):利用邮槽进程间通信的四种方式1) 剪贴板2) 匿名管道3) 命名管道4) 邮槽邮槽是基于广播通信体系设计出来的,它采用无连接的不可靠的数据传输。邮槽是一种单向通信机制,创建邮槽的服务器进程读取数据,打开邮槽的客户机进程写入数据。为保证邮槽在各种Windows平台下都能够正常工作,我们传输消息的时候,应将消息的长度限制在424字节以下。原创 2009-06-27 23:06:00 · 621 阅读 · 0 评论 -
利用关键代码段(临界区)实现线程同步
利用关键代码段(临界区)实现线程同步 1) 关键代码段(临界区)工作在用户方式下。2) 关键代码段(临界区)是指一个小代码段,在代码能够执行前,它必须独占对某些资源的访问权。用InitializeCriticalSection来初始化临界区,最后用DeleteCriticalSection来释放临界区资源。在线程中用EnterCriticalSection和LeaveCri原创 2009-06-25 11:37:00 · 2859 阅读 · 0 评论 -
利用事件对象实现线程同步
利用事件对象实现线程同步1) 事件对象也属于内核对象,包含一个使用计数,一个用于指明该事件是一个自动重置的事件还是一个人工重置的事件的布尔值,另一个用于指明该事件处于已通知状态还是未通知状态的布尔值。2) 有两种不同类型的事件对象。一种是人工重置的事件,另一种是自动重置的事件。当人工重置的事件得到通知时,等待该事件的所有线程均变为可调度线程。当一个自动重置的事件得到通知时,等待该事件的原创 2009-06-25 11:36:00 · 1247 阅读 · 0 评论 -
VC中程序自修改实现
作者:combojiang地址:http://hi.baidu.com/combojiang/blog/item/b58750137ac144d6f6039e3c%2Ehtml说明:如果需要正常演示出程序中的结果,请使用原作者要求的IDE和编译版。本文只演示了程序自修改的实现过程,由于不同的编译器生成PE文件的偏移不一样,请原作者的要求来演示。当然这篇文章与实际应用还是有很大的距离转载 2009-09-15 16:31:00 · 2165 阅读 · 1 评论