du26548 2019-11-25 22:17 采纳率: 75%
浏览 570
已采纳

如何用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条回答 默认 最新

  • threenewbee 2019-11-26 10:17
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 Odoo17操作下面代码的模块时出现没有'读取'来访问
  • ¥50 .net core 并发调用接口问题
  • ¥15 网上各种方法试过了,pip还是无法使用
  • ¥15 用verilog实现tanh函数和softplus函数
  • ¥15 Hadoop集群部署启动Hadoop时碰到问题
  • ¥15 求京东批量付款能替代天诚
  • ¥15 slaris 系统断电后,重新开机后一直自动重启
  • ¥15 QTableWidget重绘程序崩溃
  • ¥15 谁能帮我看看这拒稿理由啥意思啊阿啊
  • ¥15 关于vue2中methods使用call修改this指向的问题