• disableX.exe 禁用 cmd 窗口的关闭按钮(并移除右键的“关闭”菜单)


    发现论坛里 DisableExit 和 CWnd 都只是禁用了关闭按钮,却没有移除标题栏右键的“关闭”菜单。

    网上找到的 C 源代码,用 Dev-C++ 4.9.9.2 编译成功。

    1. @echo off
    2. disableX.exe
    3. echo 关闭按钮已禁用
    4. pause
    复制代码

    2012-11-14 更新:
    使用 TDM-GCC 中的 gcc 命令 gcc -Os -s disableX.c -o disableX.exe 重新编译,体积由原来的 16.4 KB 减小到 8.5 KB。

    注:13 楼 的 disableX.exe 体积只有 1.5 KB。

    http://bcn.bathome.net/s/tool/index.html?key=disableX


    说一下 disableX 的编译方法。

    不是直接编译保存好的 c 源代码,而是:
    在菜单栏选择 File -> New -> Project -> Console Application,
    之后将源代码复制进去,保存,
    最后点击菜单栏的 Execute -> Compile,就完成了。


    好些怀有不良意图和怀有良好心愿的人看见了都会欢呼雀跃!~ 


    DisableExit是这个吧?
    http://bbs.bathome.net/thread-11632-1-1.html

    gray.exe可以禁用右键里面的关闭
    http://bbs.bathome.net/thread-6532-1-1.html


    是的,是那个 DisableExit。

    gray.exe 要常驻。


    这个对win7用户没有压力~ 照样可以关掉~


    确实该雀跃了!真是我需要的~!!


     2012-11-14 更新:
    使用 TDM-GCC 中的 gcc 命令 gcc -Os -s disableX.c -o disableX.exe 重新编译,体积由原来的 16.4 KB 减小到 8.5 KB。


    用TCC编译的话应该只有2k


    尝试过。但提示如下:

    disableX.c:7: warning: assignment makes pointer from integer without a cast
    disableX.c:8: warning: assignment makes pointer from integer without a cast
    tcc: undefined symbol 'GetConsoleWindow'
    tcc: undefined symbol '_GetSystemMenu@8'
    tcc: undefined symbol '_DeleteMenu@12'
    tcc: undefined symbol '_DrawMenuBar@4'


    回复  Demon

    尝试过。但提示:
    tmplinshi 发表于 2012-11-16 18:00 


    给我源码,我试试。


    #define _WIN32_WINNT    0x0500
    #include <Windows.h>
    #include <stdio.h>
    
    int main()
    {
        DeleteMenu(GetSystemMenu(GetConsoleWindow(), FALSE), SC_CLOSE, MF_BYCOMMAND);
        DrawMenuBar(GetConsoleWindow());
    }

    http://bcn.bathome.net/s/tool/index.html?key=disableX


     感谢! 可以说下怎么编译的吗?


    回复  Demon

        感谢! 可以说下怎么编译的吗?
    tmplinshi 发表于 2012-11-16 18:25 


    用tiny_impdef.exe生成新的def文件。


    用tiny_impdef.exe生成新的def文件。
    Demon 发表于 2012-11-16 18:32 


        谢谢!成功了。

    E:\Program Files\Tools\tcc-0.9.25-win32-bin\tcc>tiny_impdef.exe kernel32.dll
    --> C:\WINDOWS\system32\kernel32.dll
    <-- kernel32.def

    E:\Program Files\Tools\tcc-0.9.25-win32-bin\tcc>tiny_impdef.exe USER32.dll
    --> C:\WINDOWS\system32\USER32.dll
    <-- USER32.def

    E:\Program Files\Tools\tcc-0.9.25-win32-bin\tcc>tiny_impdef.exe msvcrt.dll
    --> C:\WINDOWS\system32\msvcrt.dll
    <-- msvcrt.def


    E:\Program Files\Tools\tcc-0.9.25-win32-bin\tcc>md lib\bak

    E:\Program Files\Tools\tcc-0.9.25-win32-bin\tcc>copy lib\*.def lib\bak\
    lib\gdi32.def
    lib\kernel32.def
    lib\msvcrt.def
    lib\USER32.def
    已复制         4 个文件。


    E:\Program Files\Tools\tcc-0.9.25-win32-bin\tcc>copy /y *.def lib\
    kernel32.def
    msvcrt.def
    USER32.def
    已复制         3 个文件。


    E:\Program Files\Tools\tcc-0.9.25-win32-bin\tcc>tcc -lUSER32 disableX.c -o disableX.exe
    disableX.c:7: warning: assignment makes pointer from integer without a cast
    disableX.c:8: warning: assignment makes pointer from integer without a cast


    E:\Program Files\Tools\tcc-0.9.25-win32-bin\tcc>

    发现用Alt+F4还是可以退


    发现用Alt+F4还是可以退
    flaven 发表于 2013-1-21 21:35 


    你是用什么系统测试的?在 XP 系统,正常情况下用 Alt+F4 都不能关闭 CMD 窗口的。


    不好意思,又重新测试,是我搞错了,实际上是我那段批处理已经运行完了,最后剩一个pause,按alt或f4任一一键就关了

    但是还是发现个问题,在任务栏上的批处理按钮上点右键--“关闭窗口”,就关掉了(win7,xp不知道……)


    哦。多谢提供测试结果。XP 系统运行 disableX 之后不会显示关闭菜单。


    这个东西不错的哟,谢谢哦


    如果想恢复关闭按钮,请用这个版本。方法是加任意参数,比如 disableX /r。之所以是任意参数,是因为我不懂 C 语言。C 源码我改成了:

    #define _WIN32_WINNT    0x0500
    #include <Windows.h>
    #include <stdio.h>
    
    int main( int argc )
    {
        DeleteMenu(GetSystemMenu(GetConsoleWindow(), (argc == 2) ? TRUE : FALSE), SC_CLOSE, MF_BYCOMMAND);
        DrawMenuBar(GetConsoleWindow());
    }

    谢谢, 太有用了, 就是要这个.


     我用Bat To Exe Converter编译的EXE运行会显示disableX,这个怎么解决

     出处:http://bbs.bathome.net/thread-13524-1-1.html

  • 相关阅读:
    配置利用Tilcon 5.8 Radar Demo for vxWorks 6.8
    安装源REMI做源 CentOS上 PHP 的安装和升级
    产品苹果乔布斯和盖茨眼中真实的对方
    平台微软将死的平台:.Net
    企业生活12大颠覆性技术:移动互联网居首
    设备代工富士康加入Firefox OS阵营,下周将发布搭载Firefox OS的设备
    线程对象Android 开发之多线程处理、Handler 详解
    输出hadoop[置顶] hadoop之测试KMeans(二):输出结果分析
    个位数字poj 3126 Prime Path
    nullnullGet previous business day
  • 原文地址:https://www.cnblogs.com/mq0036/p/15993052.html
Copyright © 2020-2023  润新知