C++-vc如何实现无界面后台程序?

发布于 2016-11-26 00:14:31 字数 64 浏览 1880 评论 3

想实现一个无界面的程序,在后台响应一些热键执行不同任务。
如何在不创建程序窗口的前提下能够响应热键消息?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

清晨说ぺ晚安 2017-09-16 10:15:31

把main 换成 WinMain
不要show window 就可以了

夜无邪 2017-05-25 02:35:15

@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);
}
}

泛泛之交 2017-03-12 01:10:57

用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资源

以上方法简单易行,望楼主采纳

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文