用MFC写了个程序,调用了一个子模块,主程序界面可以关闭,但在进程里仍然存在,关不掉,请高手解答

用MFC写了个程序,调用了一个子模块,主程序界面可以关闭,但在进程里仍然存在,关不掉,请高手解答,第1张

可以用有名管道或者mutex之类的东西发个消息

程序启动后打开这个有名的东西, 如果发现它已经存在了, 就触发它, 然后用个线程wait在这个东西上(当然wait之前要先让它无效), 醒了就exit

MFC指的是Microsoft Foundation Classes ,是一种ApplicationFramework,随微软Visual C++开发工具发布。MFC以C++类的形式封装了Windows的API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。该类库提供一组通用的可重用的类库供开发人员使用。大部分类均从CObject 直接或间接派生,只有少部分类例外。 其中包含的类包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。

MFC实际上是微软提供的,用于在C++环境下编写应用程序的一个框架和引擎。VC++是Windows下开发人员使用的专业C++ SDK(SDK,Standard SoftWare Develop Kit,专业软件开发平台),MFC就是挂在它之上的一个辅助软件开发包。

MFC是WinAPI与C++的结合。API,即微软提供的Windows下应用程序的编程语言接口,是一种软件编程的规范,但不是一种程序开发语言本身,可以允许用户使用各种各样的第三方的编程语言来进行对Windows下应用程序的开发,使这些被开发出来的应用程序能在Windows下运行

MFC不只是一个功能单纯的界面开发系统,它提供的类绝大部分用来进行界面开发,关联一个窗口的动作,但它提供的类中有好多类不与一个窗口关联,即类的作用不是一个界面类,不实现对一个窗口对象的控制(如创建、销毁),而是一些在Windows(用MFC编写的程序绝大部分都在Windows中运行)中实现内部处理的类,如数据库的管理类等

安装鼠标钩子

      用到的函数有:

SetWindowsHookExA()       //设置钩子

GetModuleHandle()           //获取模块句柄

UnhookWindowsHookEx()    //关闭钩子

SetDlgItemText()              //设置控件文本

用到的结构体有:

KBDLLHOOKSTRUCT

步骤一:在XXXXXDlgcpp顶端定义

#define WH_KEYBOARD_LL     13

typedef struct tagKBDLLHOOKSTRUCT {

DWORD   vkCode;

DWORD   scanCode;

DWORD   flags;

DWORD   time;

DWORD   dwExtraInfo;

} KBDLLHOOKSTRUCT, FAR LPKBDLLHOOKSTRUCT, PKBDLLHOOKSTRUCT;

HHOOK 键盘;

HWND hwnd;

LRESULT CALLBACK LowLevelKeyboardProc(int nCode,WPARAM wParam,LPARAM lParam)

{

//这些就是HOOK代码

LRESULT lResult = CallNextHookEx(键盘, nCode, wParam, lParam);

//PMSG pmsg = (PMSG)lParam;

//这时候pmsg->message就是消息了

CString I;

IFormat(_T("键盘状态:%d"),wParam);

SetDlgItemText(hwnd,IDC_EDIT3,I);

KBDLLHOOKSTRUCT 指针=(KBDLLHOOKSTRUCT)lParam;

IFormat(_T("键代码:%d"),指针->vkCode);

SetDlgItemText(hwnd,IDC_EDIT4,I);

return FALSE;

}

步骤二:代码写:

hwnd=m_hWnd;

//键盘事件的响应步骤是:

//键盘驱动->系统键盘消息处理->当前进程消息处理->当前窗口消息处理

//WH_KEYBOARD_LL插在系统键盘消息处理前

     //而WH_KEYBOARD则插在当前进程消息处理前

//因此如果你WH_KEYBOARD hook正确而WH_KEYBOARD_LL hook得不到想要得结果,那么唯一可能就是你把一些不该过滤的键盘消息给过滤掉了。

键盘 = SetWindowsHookExA(WH_KEYBOARD_LL,LowLevelKeyboardProc,GetModuleHandle(NULL),NULL);

步骤三:在类视图XXXXXXDlg->消息->WM_DESTROY写:

UnhookWindowsHookEx(键盘);

以上就是关于用MFC写了个程序,调用了一个子模块,主程序界面可以关闭,但在进程里仍然存在,关不掉,请高手解答全部的内容,包括:用MFC写了个程序,调用了一个子模块,主程序界面可以关闭,但在进程里仍然存在,关不掉,请高手解答、C++语言中说的“MFC”一般是指什么啊、mfc中如果不用dll,主程序中直接用SetWindowsHookEx截获其他指定的应用程序的键盘 *** 作应该如何设置参数。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9504542.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存