标题: [其他] disableX.exe - 禁用 cmd 窗口的关闭按钮(并移除右键的“关闭”菜单) [打印本页]
作者: tmplinshi 时间: 2011-8-3 15:57 标题: disableX.exe - 禁用 cmd 窗口的关闭按钮(并移除右键的“关闭”菜单)
发现论坛里 DisableExit 和 CWnd 都只是禁用了关闭按钮,却没有移除标题栏右键的“关闭”菜单。
网上找到的 C 源代码,用 Dev-C++ 4.9.9.2 编译成功。- @echo off
- disableX.exe
- echo 关闭按钮已禁用
- 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
作者: tmplinshi 时间: 2011-8-3 16:11
说一下 disableX 的编译方法。
不是直接编译保存好的 c 源代码,而是:
在菜单栏选择 File -> New -> Project -> Console Application,
之后将源代码复制进去,保存,
最后点击菜单栏的 Execute -> Compile,就完成了。
作者: cjiabing 时间: 2011-8-3 16:18
好些怀有不良意图和怀有良好心愿的人看见了都会欢呼雀跃!~
作者: Batcher 时间: 2011-8-3 21:13
DisableExit是这个吧?
http://bbs.bathome.net/thread-11632-1-1.html
gray.exe可以禁用右键里面的关闭
http://bbs.bathome.net/thread-6532-1-1.html
作者: tmplinshi 时间: 2011-8-3 21:19
回复 4# Batcher
是的,是那个 DisableExit。
gray.exe 要常驻。
作者: raymai97 时间: 2011-9-25 11:19
这个对win7用户没有压力~ 照样可以关掉~
作者: gobi918 时间: 2012-3-10 10:38
确实该雀跃了!真是我需要的~!!
作者: tmplinshi 时间: 2012-11-16 17:47
2012-11-14 更新:
使用 TDM-GCC 中的 gcc 命令 gcc -Os -s disableX.c -o disableX.exe 重新编译,体积由原来的 16.4 KB 减小到 8.5 KB。
作者: Demon 时间: 2012-11-16 17:57
用TCC编译的话应该只有2k
作者: tmplinshi 时间: 2012-11-16 18:00
回复 9# Demon
尝试过。但提示:
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 时间: 2012-11-16 18:02
回复 Demon
尝试过。但提示:
tmplinshi 发表于 2012-11-16 18:00
给我源码,我试试。
作者: tmplinshi 时间: 2012-11-16 18:05
回复 11# Demon - #define _WIN32_WINNT 0x0500
- #include <Windows.h>
- #include <stdio.h>
-
- int main()
- {
- DeleteMenu(GetSystemMenu(GetConsoleWindow(), FALSE), SC_CLOSE, MF_BYCOMMAND);
- DrawMenuBar(GetConsoleWindow());
- }
复制代码
作者: Demon 时间: 2012-11-16 18:21
http://bcn.bathome.net/s/tool/index.html?key=disableX
作者: tmplinshi 时间: 2012-11-16 18:25
回复 13# Demon
感谢! 可以说下怎么编译的吗?
作者: Demon 时间: 2012-11-16 18:32
回复 Demon
感谢! 可以说下怎么编译的吗?
tmplinshi 发表于 2012-11-16 18:25
用tiny_impdef.exe生成新的def文件。
作者: tmplinshi 时间: 2012-11-16 19:07
本帖最后由 tmplinshi 于 2012-11-16 19:16 编辑
用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>
作者: yoyosigua 时间: 2013-1-7 10:54
我想下载一个东西哟
作者: flaven 时间: 2013-1-21 19:19
用tiny_impdef.exe生成新的def文件。
Demon 发表于 2012-11-16 18:32
厉害,一楼更比一楼强
作者: flaven 时间: 2013-1-21 21:35
发现用Alt+F4还是可以退
作者: tmplinshi 时间: 2013-1-21 23:01
发现用Alt+F4还是可以退
flaven 发表于 2013-1-21 21:35
你是用什么系统测试的?在 XP 系统,正常情况下用 Alt+F4 都不能关闭 CMD 窗口的。
作者: flaven 时间: 2013-1-21 23:36
回复 20# tmplinshi
不好意思,又重新测试,是我搞错了,实际上是我那段批处理已经运行完了,最后剩一个pause,按alt或f4任一一键就关了
但是还是发现个问题,在任务栏上的批处理按钮上点右键--“关闭窗口”,就关掉了(win7,xp不知道……)
作者: tmplinshi 时间: 2013-1-22 00:36
本帖最后由 tmplinshi 于 2013-1-22 00:43 编辑
回复 21# flaven
哦。多谢提供测试结果。XP 系统运行 disableX 之后不会显示关闭菜单。
作者: seagrt 时间: 2013-10-21 14:38
这个东西不错的哟,谢谢哦
作者: tmplinshi 时间: 2015-3-3 15:51
如果想恢复关闭按钮,请用这个版本。方法是加任意参数,比如 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());
- }
复制代码
作者: shh200438 时间: 2015-9-17 13:03
谢谢, 太有用了, 就是要这个.
作者: 渣白 时间: 2017-3-5 20:10
我用Bat To Exe Converter编译的EXE运行会显示disableX,这个怎么解决
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |