HFX3389
V2EX  ›  问与答

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

  •  1
     
  •   HFX3389 · Apr 10, 2019 · 12003 views
    This topic created in 2768 days ago, the information mentioned may be changed or developed.

    要求:

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

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

    例如:

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

    118 replies  •  2019-04-13 23:51:11 +08:00
    1  2  
    ❮ ❯
    imicksoft
    imicksoft
    Apr 10, 2019
    1
    aardio,你值得拥有
    hs0000t
    hs0000t
    Apr 10, 2019 via Android❤️2
    2
    易语言(
    azh7138m
    azh7138m
    Apr 10, 2019 via Android
    3
    MFC VC++吧。。。想不到啥好的还能支持 XP 的了
    dapang1221
    dapang1221
    Apr 10, 2019
    4
    我想了想,这个需求用易语言可能还真是个不错的选择……
    Rysle
    Rysle
    Apr 10, 2019
    5
    Visual Basic 6.0
    老古董,值得拥有,哈哈哈
    CallMeReznov
    CallMeReznov
    Apr 10, 2019
    6
    在不涉及 C++运行库 .NET 版本的情况下
    VB C# C++ 都可以吧?
    qysz
    qysz
    Apr 10, 2019
    7
    Delphi 了解下
    HFX3389
    HFX3389
    OP
    Apr 10, 2019
    8
    @hs0000t
    @dapang1221
    额,我刚找了下朋友,易语言做这种小东西好像还真不错的样子,但是我丢虚拟机里马上就被 360 当成木马干掉了......
    而且易语言好像稍微大型点的东西就不好用了吧.....
    nfroot
    nfroot
    Apr 10, 2019❤️1
    9
    @HFX3389 主题里面写要小,举个例子也是微型的,怎么一圈回复后您又说要大型项目了呢。

    所以……你会啥语言?
    yejinmo
    yejinmo
    Apr 10, 2019
    10
    Windows 开发不推荐 C# ?
    ThirdFlame
    ThirdFlame
    Apr 10, 2019
    11
    vb autoit 不都行么
    Counter
    Counter
    Apr 10, 2019
    12
    很明显 C#(WinForm),拖拖控件就好,计时器都有控件,纯代码不含图标等资源编译后最多也就几十 KB
    XP 初始环境自带.net framework 2.0,编译时注意版本就好

    @yejinmo C#地位在这里很不行啊
    loginv2
    loginv2
    Apr 10, 2019
    13
    delphi7
    yejinmo
    yejinmo
    Apr 10, 2019
    14
    @Counter #12

    iV2ex 各种看不上微软啊
    Counter
    Counter
    Apr 10, 2019
    15
    @yejinmo 查了一下 XP 没有自带.net ,只能另外安装了
    yejinmo
    yejinmo
    Apr 10, 2019
    16
    @Counter #15

    Visual Basic 所有系统都可以
    ysc3839
    ysc3839
    Apr 10, 2019❤️1
    17
    @yejinmo C# 要装运行库,算上的话就超过 10M 了。
    现在搞 Windows 开发,如果要开放、免费、仍在维护、编译后体积小的话大概只有 C++ 了。
    VB6 不再维护了;易语言收费且几乎不再维护了; aardio 据说仅有作者一人维护,而且作者风评不好。
    Delphi 目前仍在维护,不过似乎不免费?
    boris1993
    boris1993
    Apr 10, 2019 via Android
    18
    .Net 系呗,分发的时候附带适用各系统的.Net 环境安装包,以及指导 README
    rb6221
    rb6221
    Apr 10, 2019 via iPhone
    19
    vb 即可
    sagaxu
    sagaxu
    Apr 10, 2019 via Android
    20
    Wxwidgets
    z99monster
    z99monster
    Apr 10, 2019
    21
    Qt,控件拖拽很简单
    HFX3389
    HFX3389
    OP
    Apr 10, 2019
    22
    @nfroot #9 我只是有个想法,有小型就有中型和大型嘛,只是想想嘛!
    hhyvs111
    hhyvs111
    Apr 10, 2019
    23
    用 qt
    sneezry
    sneezry
    Apr 10, 2019 via iPhone
    24
    c#
    muyi
    muyi
    Apr 10, 2019
    25
    delphi,例如描述的这种小程序,编译出来就一个 exe 可执行文件,无需任何运行库,XP 也能直接运行
    Ct5T66PVR1bW7b2z
    Ct5T66PVR1bW7b2z
    Apr 10, 2019 via Android
    26
    Python



    首先排除
    wfd0807
    wfd0807
    Apr 10, 2019❤️2
    27
    asm+win32api 编译出 exe 非常小,几 KB (滑稽)
    imkuang
    imkuang
    Apr 10, 2019
    28
    @hhyvs111 楼主要求体积要小啊,,,,,
    我之前用 Qt 写个简单的文本编辑器,把所有依赖复制出来后文件夹就有 50 多 M 了,,,,,
    Tink
    Tink
    Apr 10, 2019 via iPhone
    29
    其实 delphi 可以
    amaranthf
    amaranthf
    Apr 10, 2019
    30
    @wfd0807 用 win32 api 的话,C++也可以达到类似的大小,去除 CRT 的初始化、各个节压缩到一起,1~2KB 的 hello world 就出来了
    Akkuman
    Akkuman
    Apr 10, 2019 via Android
    31
    delphi 有社区版了,另外,purebasic 咋样,aardio 也行,要不 autohotkey 或者 autoit3 ?或者易语言?或者 lazarus ?
    hmzt
    hmzt
    Apr 10, 2019
    32
    vb
    thedrwu
    thedrwu
    Apr 10, 2019 via Android
    33
    直接 win32api,如果用 c 写,连 crt 都不必要。
    mmdsun
    mmdsun
    Apr 10, 2019 via Android
    34
    winform,c# ,visual studio。

    微软的东西选他自己的语言,不然后面坑很多的
    1daydayde
    1daydayde
    Apr 10, 2019❤️1
    35
    这需求一个 html 文件就搞定了,2kb 搞定(滑稽
    H0H
    H0H
    Apr 10, 2019
    36
    用 Win32ASM 汇编语言调用 Win32 API 实现,可同时兼容 win32 和 x64 Windows 系统。写出来的程序因仅调用最基础的那几个 dll,理论上讲只要 Windows 系统能启动进入到桌面,那你的工具就一定能运行起来,稳定性巨高。

    如果不带 icon 图像等资源文件的话,编译出的 exe 文件仅 5KB 左右,极小。

    具体书籍参考罗云彬的《琢石成器— Windows 环境下 32 位汇编程序设计》。
    geelaw
    geelaw
    Apr 10, 2019
    37
    这个用纯粹的 Win32 就可以做。
    LZSZ
    LZSZ
    Apr 10, 2019
    38
    delphi 7.0
    murmur
    murmur
    Apr 10, 2019
    39
    当然是 vb
    HFX3389
    HFX3389
    OP
    Apr 10, 2019
    40
    @0312birdzhang #35 这好像有点意思!我咋没想到弄个 HTML 算了
    HFX3389
    HFX3389
    OP
    Apr 10, 2019
    41
    @0312birdzhang #35 倒计时可以这样玩玩
    ho121
    ho121
    Apr 10, 2019 via Android
    42
    @HFX3389 ie6 咋破?
    HFX3389
    HFX3389
    OP
    Apr 10, 2019
    43
    @ho121 #42 ie6 连这种小东西都做不好吗?有这么垃圾么..............
    huijiewei
    huijiewei
    Apr 10, 2019
    44
    啥也别想了,autoit 走起
    admirez
    admirez
    Apr 10, 2019
    45
    当然是 delphi
    twor
    twor
    Apr 10, 2019 via Android
    46
    为了封装一个 GUI 报表工具,现学了 Delphi,蛮好
    kiddult
    kiddult
    Apr 10, 2019
    47
    都什么年代了,还纠结文件大小

    直接 Electron 走起,完美兼容各种 PC 环境
    anyele
    anyele
    Apr 10, 2019 via Android
    48
    明显是 c#,winform,.net 版本选低一点
    inframe
    inframe
    Apr 10, 2019 via Android
    49
    Ç# ,桌面开发库够多,初中级文档📃齐全
    kokutou
    kokutou
    Apr 10, 2019❤️1
    50
    HFX3389
    HFX3389
    OP
    Apr 10, 2019
    51
    @CallMeReznov #6
    @yejinmo #10
    @sneezry #24
    @mmdsun #34
    @anyele #48
    @inframe #49
    要求在 MSDN 原盘安装的 XP 亦可即点即用
    yzwduck
    yzwduck
    Apr 10, 2019 via Android
    52
    @H0H 写 asm 太折磨人了,用 C 写更现实一些。我写过几个不依赖 vcruntime 的代码,能同时兼容 xp 和 per-monitor DPI awareness,体积不会比 asm 代码大太多。
    yamedie
    yamedie
    Apr 10, 2019 via Android
    53
    @kiddult electron 不支持 xp,所以应该选 NW.js
    Chingim
    Chingim
    Apr 10, 2019 via Android
    54
    js ?直接在 ie 跑
    ysc3839
    ysc3839
    Apr 10, 2019 via Android
    55
    @kokutou 这不是编程语言。
    这种做法并不一定稳定,从该项目的 issues 可以看出有许多问题。
    flynaj
    flynaj
    Apr 11, 2019 via Android
    56
    tcc 编译器,里面有例子,几十 k 就可以
    msg7086
    msg7086
    Apr 11, 2019
    57
    C 井,VB6,Delphi,好像都挺好的。
    Mac
    Mac
    Apr 11, 2019 via Android
    58
    vb6 基本库在 win7 及以上都不需要另装动态链接库
    mmdsun
    mmdsun
    Apr 11, 2019 via Android
    59
    @HFX3389 xp sp3 自带有.net 2.0 环境。选.net 2.0 或 1.0 开发就可以了 xp 可以打开。
    patr0nus
    patr0nus
    Apr 11, 2019
    60
    Wxwidgets +1
    sneezry
    sneezry
    Apr 11, 2019
    61
    @HFX3389 C#是可以编译成机器码的,XP 可以用。.NET 框架倒是可能会要求额外安装,如果没用到.NET 是不需要用户额外安装什么东西的
    H0H
    H0H
    Apr 11, 2019
    62
    @yzwduck 以前用 VS2010 写过,但很容易就把 vc runtime 带进去了,忘了多大,好像好几兆吧。貌似 VS 未提供仅将用到的那几个函数编译进去的功能,反正我是没找到。

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

    一般写这种 GUI 小工具,下意识就希望 exe 越小越好,不要依赖其他 dll,很容易有强迫症,最终就是 asm 上了^_^
    yingyue
    yingyue
    Apr 11, 2019 via Android
    63
    易语言能做的很好
    yingyue
    yingyue
    Apr 11, 2019 via Android
    64
    360 报毒,只需要做好后,360 提交一下就好了
    xzpjerry731
    xzpjerry731
    Apr 11, 2019
    65
    python + pyinstaller
    lmmortal
    lmmortal
    Apr 11, 2019 via iPhone
    66
    @yingyue 看了一下是收费的,对于个人来说 写个小工具什么的可不便宜啊
    zwh2698
    zwh2698
    Apr 11, 2019 via Android
    67
    Mfc 或者 api, mfc 界面可以使用 prof-ui, 纯 API 的,贴图重绘,界面绝对不输现在的界面风格。
    hp3325
    hp3325
    Apr 11, 2019 via Android
    68
    Delphi,唯一选择。

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

    最重要的,一个 exe,下载即可使用,不需要任何动态链接库!
    exip
    exip
    Apr 11, 2019 via Android
    69
    用 vbs 或 javascript 加 html 写个网页保存成 hta 文件,估计不到 10KB.
    NicholasYX
    NicholasYX
    Apr 11, 2019 via iPhone
    70
    C#啊
    v2orz
    v2orz
    Apr 11, 2019
    71
    这个东西应该是有现成的吧,我看部门助理在会上放 ppt 的时候在用
    TaylorJack123
    TaylorJack123
    Apr 11, 2019 via Android
    72
    duilib 框架,c++写的,用起来贼爽所有的 windows 都可以用
    sdushn
    sdushn
    Apr 11, 2019 via Android
    73
    做个 web 可还行?
    ysc3839
    ysc3839
    Apr 11, 2019 via Android
    74
    @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
    Cloutain
    Apr 11, 2019
    75
    还用想吗 当然是易语言了,你这个程序说不定一个易模块就解决了
    simonsww
    simonsww
    Apr 11, 2019
    76
    拿几分钟用易语言写个完事。。
    H0H
    H0H
    Apr 11, 2019
    77
    @ysc3839 我也是比较早以前用 VS2010 时,当时是做一个右键菜单 dll 供 Explorer 调用,记不清有没有用到 MFC。当时静态链接大小大体上等于『动态链接大小+vc runtime 10.dll 』。因为 32 位汇编比较好写,不像 64 位全部用寄存器传参。所以当时 32 位 dll 就用汇编实现,文件很小; 64 位 dll 就用 vc 编译,贼大。

    当时手写 asm 也不是期望比编译器优化好,就是想让其能保持最小。有这个需求也是因为当时做的工具是在公司内部使用,同事们觉得好的工具会用邮件给其他人分享,而邮件附件大小限制是不能超过 20M。
    rming
    rming
    Apr 11, 2019
    78
    html + javascript ...
    murmur
    murmur
    Apr 11, 2019
    79
    @kiddult electron 不支持 xp nw.js 的老版本才支持
    ysc3839
    ysc3839
    Apr 11, 2019 via Android
    80
    @H0H 手写 asm 小是因为没链接别的库。
    除去别的库,编译器优化出来的代码可能比手写还要小,VC++ 有最小体积的优化选项。再把入口点改成自己的函数,不使用运行库的入口点,然后完全不调用 C/C++ 函数,也能做得很小。
    maemolee
    maemolee
    Apr 11, 2019
    81
    其实弄个网页版就行吧……
    maemolee
    maemolee
    Apr 11, 2019
    82
    给你看一下我的泡面计时器: https://www.maemo.cc/timer.html
    Felldeadbird
    Felldeadbird
    Apr 11, 2019
    83
    vb 应该是最简单了吧。
    不过我还是习惯 py + qy 组合写 GUI。真的轻快。因为我不熟其他语言。
    momo1999
    momo1999
    Apr 11, 2019
    84
    win32 api
    yingfengi
    yingfengi
    Apr 11, 2019 via Android
    85
    html
    zthxxx
    zthxxx
    Apr 11, 2019
    86
    谢邀,React
    youyaang
    youyaang
    Apr 11, 2019
    87
    易语言现在其实不怎么会报毒了,你可以试试换成黑月编译或者换个编译器试试
    auin
    auin
    Apr 11, 2019
    88
    推荐个简单粗暴的,hta 程序,可以搜索下 mshta.exe 这个组件

    简单的讲就是 html 直接以程序方式打开,倒计时什么的用 html 写不是分分钟的事嘛~
    lscho
    lscho
    Apr 11, 2019
    89
    就这功能? vb 五分钟就写出来了,编译出来几十 kb。都能运行
    wackyjazz1
    wackyjazz1
    Apr 11, 2019
    90
    C# 十分鐘就能實現
    jackmod
    jackmod
    Apr 11, 2019
    91
    https://github.com/sgqy/qt-static-lib

    以前搞了个 Qt 的静态库,支持 xp ( 7 以后的 pe 格式不兼容 xp )。
    Qt 的许可证是 LGPL,对静态库有限制(只是提醒一下)。
    panlilu
    panlilu
    Apr 11, 2019
    92
    还有这么多人记得 Delphi 啊 23333
    kknd22
    kknd22
    Apr 11, 2019❤️1
    93
    Delphi 7 合适
    python3 打包出来的不支持 XP,2 打包出来的,最小 5MB
    delphi 只需要几十 KB,而且一半是定制的图标。。。
    old9
    old9
    Apr 11, 2019
    94
    autohotkey
    GeruzoniAnsasu
    GeruzoniAnsasu
    Apr 11, 2019
    95
    imicksoft 19 小时 41 分钟前

    截止至本回复本帖存在的时间已经足够用 mfc c# vb html delphi 易语言
    各撸一个版本了
    HFX3389
    HFX3389
    OP
    Apr 11, 2019
    96
    @qysz #7
    @loginv2 #13
    @ysc3839 #17
    @muyi #25
    @Tink #29
    @Akkuman #31
    @LZSZ #38
    @admirez #45
    @twor #46
    @msg7086 #57
    @hp3325 #68
    @panlilu #92
    @kknd22 #93
    为啥 Delphi 这么 6,EXE 不需要运行库都可以直接运行啊?
    xth12138
    xth12138
    Apr 11, 2019 via Android
    97
    @Abbeyok pyqt ?
    msg7086
    msg7086
    Apr 11, 2019
    98
    @HFX3389 因为把运行库打包在 EXE 里了。
    allgy
    allgy
    Apr 11, 2019
    99
    java FX9
    muyi
    muyi
    Apr 11, 2019
    100
    @HFX3389 #95 Delphi 编译选项里有个“ build with runtime package ”设置,不勾时,所有用到的 Bpl 包都会打包进 exe 文件中
    1  2  
    ❮ ❯
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1158 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 145ms · UTC 16:54 · PVG 00:54 · LAX 08:54 · JFK 11:54
    ♥ Do have faith in what you're doing.