一、FindWindow应用于WM_COPYDATA消息进程通信
以前做WM_COPYDATA进程通信时,经常要用到::FindWindow,也吃了它不少苦头,最后把WM_COPYDATA进程通信封装成一个DLL,结果发现好多地方,还是::FindWindow方便,唉,,,
二、今天准备学习一下,共享内存通信,不料还是少不了它,创建映射文件并映射到进程的地址空间之后,也即准备工作做完之后,还得告诉数据的接收方,我写完了,你用吧,这时还得使用::FindWindow(NULL, "窗口标题"),看来这个FindWindow就是我们常用的1、2、3之类的数字一样,影响着我们的编程生活,,,
三、::FindWindow还可用于程序的唯一实例性限制,但我一般使用创建互斥对象来解决程序唯一实例的问题,即:
3.1、在App类的.h文件中,创建对象 HANDLE hMutexInstance;
3.2、在App类的初始化函数中,添加如下代码判断
hMutexInstance = ::CreateMutex(NULL, TRUE, "软件标识");
if(hMutexInstance != NULL)
{
if( ERROR_ALREADY_EXISTS == GetLastError() )
{
exit(0); //退出,保证唯一实例
}
}
本文探讨了FindWindow函数在WM_COPYDATA消息通信、共享内存通信及确保应用程序唯一实例性中的应用场景。通过具体案例介绍了如何利用该函数实现进程间通信,并提供了一种通过创建互斥对象保证程序唯一性的替代方案。
126

被折叠的 条评论
为什么被折叠?



