C++-vc如何实现无界面后台程序?
想实现一个无界面的程序,在后台响应一些热键执行不同任务。
如何在不创建程序窗口的前提下能够响应热键消息?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
想实现一个无界面的程序,在后台响应一些热键执行不同任务。
如何在不创建程序窗口的前提下能够响应热键消息?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(3)
把main 换成 WinMain
不要show window 就可以了
@zjufish(35300381) 说的方法
不创建窗口其实也可以, 刚写的
#include <Windows.h>
#include <tchar.h>
void OnHotKey(MSG& msg);
ATOM nAskMM;
ATOM nQuit;
int APIENTRY WinMain( __in HINSTANCE hInstance, __in_opt HINSTANCE hPrevInstance, __in_opt LPSTR lpCmdLine, __in int nShowCmd )
{
nAskMM = GlobalAddAtom(_T("谁能介绍个妹子huangdi915103@gmail.com"));
nQuit = GlobalAddAtom(_T("不介绍我就退出"));
BOOL nRes = RegisterHotKey(NULL,nAskMM,MOD_CONTROL | MOD_ALT,VK_NUMPAD0);// ctrl+alt+0(小键盘的0)
nRes = RegisterHotKey(NULL,nQuit,MOD_CONTROL | MOD_ALT,VK_NUMPAD1); //ctrl+alt+1(小键盘的1)
MSG msg;
while (GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
if (WM_HOTKEY == msg.message)
{
OnHotKey(msg);
}
}
return 0;
}
void OnHotKey(MSG& msg)
{
WORD keyCode = LOWORD(msg.lParam);
WORD vk = HIWORD(msg.lParam);
if (msg.wParam == nAskMM)
{
MessageBox(NULL,_T("有多余妹子请介绍给我"),_T("求妹子"),MB_OK);
}
else if (msg.wParam == nQuit)
{
MessageBox(NULL,_T("别忘了"),_T("求妹子"),MB_OK);
PostQuitMessage(0);
}
}
用MFC也可以实现,具体如下:
1.新建一个基于对话框的应用程序,
1.在OnInitDialog()函数中添加:ModifyStyleEx(WS_EX_APPWINDOW,WS_EX_TOOLWINDOW);
2.相应对话框的WM_NCPAINT,添加如下代码:
static int i = 2;
if (i <= 2)
{
ShowWindow(SW_HIDE);
i--;
}
else
CDialog::OnNcPaint();
最后运行程序,你会发现你程序就是在后台运行了
至于相应键盘消息,可以重写虚函数PreTranslateMessage()中检测;如果想实现快捷键,可以用虚拟键的方法,在资源视图中添加一个Accelerator资源
以上方法简单易行,望楼主采纳