做一个 GUI 小工具,同时支持 XP、Windows 7、Windows10,需要使用什么语言最好

2019-04-10 15:51:54 +08:00
 HFX3389

要求:

  1. 不要太大。比如使用下面那个例子做一个倒计时,大小来个 10M 就太夸张了!

  2. 在使用 MSDN 原盘安装的 XP、Win7、Win10 系统下皆可双击 EXE 就运行

例如:

做一个 GUI 倒计时,弄个计时器(用于每 1000 毫秒倒数)、一个编辑框(用于输入正数)、两个按钮(用于开始倒数、停止倒数)、一个标签(特大红色,用于显示倒数)

9126 次点击
所在节点    问与答
118 条回复
sneezry
2019-04-11 01:03:13 +08:00
@HFX3389 C#是可以编译成机器码的,XP 可以用。.NET 框架倒是可能会要求额外安装,如果没用到.NET 是不需要用户额外安装什么东西的
H0H
2019-04-11 01:16:09 +08:00
@yzwduck 以前用 VS2010 写过,但很容易就把 vc runtime 带进去了,忘了多大,好像好几兆吧。貌似 VS 未提供仅将用到的那几个函数编译进去的功能,反正我是没找到。

如果用纯 C 调用 Win32 API,好像 C runtime 又会被打进去或动态链接到。虽然 XP 系统开始就已经自带了 C runtime 6.0,但总希望自己的 exe 能再健壮点比如往前把 2000 和 98 也支持了。虽然这些老系统用不到,但 exe 未经修改就能在上面运行,毕竟显得霸气:)

一般写这种 GUI 小工具,下意识就希望 exe 越小越好,不要依赖其他 dll,很容易有强迫症,最终就是 asm 上了^_^
yingyue
2019-04-11 01:25:39 +08:00
易语言能做的很好
yingyue
2019-04-11 01:28:20 +08:00
360 报毒,只需要做好后,360 提交一下就好了
xzpjerry731
2019-04-11 05:23:56 +08:00
python + pyinstaller
lmmortal
2019-04-11 05:37:59 +08:00
@yingyue 看了一下是收费的,对于个人来说 写个小工具什么的可不便宜啊
zwh2698
2019-04-11 06:46:07 +08:00
Mfc 或者 api, mfc 界面可以使用 prof-ui, 纯 API 的,贴图重绘,界面绝对不输现在的界面风格。
hp3325
2019-04-11 06:49:09 +08:00
Delphi,唯一选择。

从 XP 到 WIN10 全覆盖,即使集成 webbrowser 进去,再加一堆复杂逻辑,都不会超过 3M。

最重要的,一个 exe,下载即可使用,不需要任何动态链接库!
exip
2019-04-11 07:25:01 +08:00
用 vbs 或 javascript 加 html 写个网页保存成 hta 文件,估计不到 10KB.
NicholasYX
2019-04-11 08:06:57 +08:00
C#啊
v2orz
2019-04-11 08:13:29 +08:00
这个东西应该是有现成的吧,我看部门助理在会上放 ppt 的时候在用
TaylorJack123
2019-04-11 08:18:38 +08:00
duilib 框架,c++写的,用起来贼爽所有的 windows 都可以用
sdushn
2019-04-11 08:36:38 +08:00
做个 web 可还行?
ysc3839
2019-04-11 08:51:30 +08:00
@H0H 除了自动链接的 entrypoint stub,其他函数是用了才会链接。微软没这么傻,不信你可以自己用一个 static library 试试看会不会全部都编译进去。
我个人印象中 VS2017 用向导创建的 C++ Win32 GUI app,完全使用静态链接编译出来才 70 KB。我自己用 C++ 编写的一个程序,使用了 rapidjson, libcurl, zlib 以及一些 7-Zip 的代码,同时也是完全静态链接,编译出来才 900 KB 左右。
没记错的话 VS2017 C++ 程序仍然可以在 Windows 2000 下运行,一个例子是 ConEmu。
不想依赖其他 dll 请使用静态链接,手写 asm 的话未必比编译器优化的好。
Cloutain
2019-04-11 09:21:48 +08:00
还用想吗 当然是易语言了,你这个程序说不定一个易模块就解决了
simonsww
2019-04-11 09:36:00 +08:00
拿几分钟用易语言写个完事。。
H0H
2019-04-11 09:37:53 +08:00
@ysc3839 我也是比较早以前用 VS2010 时,当时是做一个右键菜单 dll 供 Explorer 调用,记不清有没有用到 MFC。当时静态链接大小大体上等于『动态链接大小+vc runtime 10.dll 』。因为 32 位汇编比较好写,不像 64 位全部用寄存器传参。所以当时 32 位 dll 就用汇编实现,文件很小; 64 位 dll 就用 vc 编译,贼大。

当时手写 asm 也不是期望比编译器优化好,就是想让其能保持最小。有这个需求也是因为当时做的工具是在公司内部使用,同事们觉得好的工具会用邮件给其他人分享,而邮件附件大小限制是不能超过 20M。
rming
2019-04-11 09:39:37 +08:00
html + javascript ...
murmur
2019-04-11 09:44:44 +08:00
@kiddult electron 不支持 xp nw.js 的老版本才支持
ysc3839
2019-04-11 09:47:00 +08:00
@H0H 手写 asm 小是因为没链接别的库。
除去别的库,编译器优化出来的代码可能比手写还要小,VC++ 有最小体积的优化选项。再把入口点改成自己的函数,不使用运行库的入口点,然后完全不调用 C/C++ 函数,也能做得很小。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/553751

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX