注册 登录
编程论坛 VC++/MFC

有关隐藏进程和窗口的问题

八画小子 发布于 2011-09-22 06:10, 3745 次点击
以前曾经有人在问如何运行程序而不显示窗口也不在任务栏中显示,当时我不知道该如何实现。刚刚想到,如果把在入口函数WinMain()中有关 hwnd=CreateWindow()、 ShowWindow()、 UpdateWindow() 这三句删除掉,就应该可以实现前面说的了,试了一下好像没问题。
我想问问各位高手,
1、这样做是否正确?
2、还有没有其他的方法实现前面的要求?
3、有没有办法实现  可以显示出窗口,但不在任务栏中显现。
4、不论我怎么努力,就是不能够把任务管理器中的进程给隐藏了。有没有办法实现这个?
2 回复
#2
yuccn2011-09-22 09:59
程序这东西,没有绝对的正确错误的,只要你要的效果达到就算可行了。

如果你不要窗口,就不要那三个函数是没有问题的。直接在主线程来做事情。

如果你只是想隐藏窗口,就不要ShowWindow就行了。

如果想实现显示窗口单不在任务栏出现,给窗口加上个风格就行,方法如下:
    DWORD dwStype = ::GetWindowLong(m_hWnd, GWL_EXSTYLE);
    dwStype = dwStype | WS_EX_TOOLWINDOW;
    dwStype = dwStype & ~WS_EX_APPWINDOW;
    ::SetWindowLong(m_hWnd, GWL_EXSTYLE, dwStype);

如果想不在任务管理器中出现,可以写成服务程序或者采用注入的办法。
#3
八画小子2011-09-22 23:26
深奥啊,一定好好好学学。
1