如何用winapi隐藏程序窗口。

简单说:我会隐藏记事本,但不会隐藏记事本的'另存为'窗口,我可以在另存为的窗口显示之后再将其隐藏,但这样很难看,不是我想要的。我希望可以一直让记事本的所有功能都在后台完成。
我做了一个python的例子。

# -*- coding: utf-8 -*- #! python2 #!/usr/bin/python
import win32api,win32con,win32gui,win32process,time
def main_():
    o = ()
    try:
        st = win32process.STARTUPINFO()
        st.dwFlags = win32con.STARTF_USESHOWWINDOW  
        st.wShowWindow = win32con.SW_HIDE  # 隐藏窗口
        o = win32process.CreateProcess(None, "Notepad", None, None, 0, win32con.NORMAL_PRIORITY_CLASS, None, None, st)
    except Exception as e:
        print e
    time.sleep(0.5)
    win32gui.EnumThreadWindows(o[3],TW,0)

def TW(h,f):
    if win32gui.GetClassName(h)=='Notepad':
        time.sleep(0.5)
        menu=win32gui.GetMenu(h)#
        menu=win32gui.GetSubMenu(menu,0)#
        menus=win32gui.GetMenuItemID(menu,2)#
        win32gui.PostMessage(h, win32con.WM_COMMAND, menus, 0)
if __name__ == '__main__':
    main_()

虽然我不太懂c++,但基本的读代码还是没问题的。。所以答案如果有c++的话非常欢迎。。

1个回答

需要api hook比较麻烦,不过可以换一个思路,开一个虚拟桌面,把需要隐藏的程序放在虚拟桌面上操作

du26548
du26548 做好了,虚拟桌面的确可用,但很可惜和程序整体不搭,有要求使用wmi的Win32_Process.Create来启用程序,这里面有个WinstationDesktop属性可以设置在其他桌面开启程序,但我用了没什么效果,虽然msdn没说,但在github上查到该属性已经作废了。。 我太难了。。
7 个月之前 回复
du26548
du26548 虚拟桌面呀 应该是个好主意 可有这样的api吗?
8 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐