V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
FrankAdler
V2EX  ›  程序员

开发自用桌面小工具,想要内存占用低编译结果小除了 Delphi 还有什么推荐?

  •  
  •   FrankAdler · 3 天前 · 4829 次点击

    Delphi CE 下载怎么选实际下载到的都是 RAD Studio ,然后换了好几个邮箱都不到授权邮件,放弃了。

    其他的 Electron ,JavaFx 、Compose Multiplatform 、WPF 这些看下来编译结果个启动后空载内存都不低,个人不喜欢。

    前阵子用 WinForm 做了个小工具,启动后 17M ,勉强能接受,但是今天找了个类似的,人家启动才 2M 功能还比我多,就想试试别的期望能内存占用更低。

    83 条回复    2024-11-26 16:58:32 +08:00
    flyqie
        1
    flyqie  
       3 天前 via Android
    不如说说你常用的语言是什么?

    不同语言能做到的大小确实不一样
    FrankAdler
        2
    FrankAdler  
    OP
       3 天前
    @flyqie 服务端开发的,Java 、Go 、NodeJS 这些,写 WinForm 学了点 C#,磕磕绊绊的,也不是很介意学点新东西
    hefish
        3
    hefish  
       3 天前
    搞个古时候的 mfc ?
    或者远古时代的 win32 api ?
    ericguo
        4
    ericguo  
       3 天前   ❤️ 4
    FrankAdler
        5
    FrankAdler  
    OP
       3 天前
    @hefish 如果找不到其他的选项会试试这些。
    musi
        6
    musi  
       3 天前 via iPhone
    直接用 go 起一个 server 然后用浏览器充当 GUI 呢?
    deng9695
        7
    deng9695  
       3 天前
    delphi 盗版随便装啊,wxwidgets 写程序也小,4M 左右,delphi 程序也三四 M 吧
    StinkyTofus
        8
    StinkyTofus  
       3 天前
    易语言开发小工具资源占用也很低哦!
    aiqinxuancai
        9
    aiqinxuancai  
       3 天前
    都自用了,何必呢?
    akira
        10
    akira  
       3 天前
    Delphi CE 去官网下。 国内下载源基本上都是盗版的 rad studio
    aiqinxuancai
        11
    aiqinxuancai  
       3 天前
    比你占用低的,我估计用的这个
    HANDLE hProcess = GetCurrentProcess();
    SetProcessWorkingSetSize(hProcess, -1, -1);
    roundgis
        12
    roundgis  
       3 天前 via Android   ❤️ 1
    FrankAdler
        13
    FrankAdler  
    OP
       3 天前
    @musi 有些场景不太适合,比如 托盘小工具提示啥的
    FrankAdler
        14
    FrankAdler  
    OP
       3 天前
    @aiqinxuancai 就是自用,能控制,才想努努力
    FrankAdler
        15
    FrankAdler  
    OP
       3 天前
    @deng9695 盗版也是可以的,之前想着 CE 免费就没动这个心思
    chenqh
        16
    chenqh  
       3 天前
    要不先命令行?我现在就在用 python 的命令行来给自己同步文件.
    FrankAdler
        17
    FrankAdler  
    OP
       3 天前
    @aiqinxuancai 具体我就不懂了,当我打开他设置里的释放未使用的内存回收,每次关闭窗口到托盘就剩 600k 内存占用了。
    FrankAdler
        18
    FrankAdler  
    OP
       3 天前
    @akira 官方下载了不给发送授权邮件。。。我安装好了进不去。
    FrankAdler
        19
    FrankAdler  
    OP
       3 天前
    @aiqinxuancai 比起易语言,感觉 aardio 这种我可能更愿意尝试,而且我也写过,感受也还行
    FrankAdler
        20
    FrankAdler  
    OP
       3 天前
    @chenqh 场景不同,比如我做个常驻托盘的 App 启动器,或者啥需要托盘、快捷键快速唤起窗口的
    1una0bserver
        21
    1una0bserver  
       3 天前 via Android
    autoit3/ahk ,pecmd 脚本,易语言,c ,rust,zig ,vb6
    qiniu2025
        22
    qiniu2025  
       3 天前
    用 delphi7 精简版,自身很小,写的软件也小
    yinmin
        23
    yinmin  
       3 天前 via iPhone
    还有 1 个古董级的开发软件能实现 OP 的需求,Visual Basic 6 。

    我找到以前用 visual basic 6 写的一个 windows service ,曾经稳定运行了 10 多年,整个软件只有 60KB ,运行只占 2MB 内存。

    刚才试了一下,exe 直接复制到 win11 ,无需安装支持库能直接运行,绝对是绿色软件标准。

    visual basic 是比尔盖茨的最爱,居然 vb6 支持库内置 windows 从 win2000 、xp 、vista 、7 、8 、10 保留到了 win11 ,用 vb6 写的程序能以绿色软件形式直接运行。
    FrankAdler
        24
    FrankAdler  
    OP
       3 天前
    @1una0bserver
    @qiniu2025
    @yinmin
    感谢,我都试试看
    yinmin
        25
    yinmin  
       3 天前 via iPhone   ❤️ 1
    visual basic 6 是 1998 年发布的,当时最先进的 pc 是奔腾 II 300MHz ,64MB 内存,4GB 硬盘跑 win98 或 win NT 4.0 (所以程序占用资源极少)

    金蝶 erp 软件 kis 、k3 ,用友 erp 软件 u8 都是用 vb6 开发的,至今仍有企业在使用这些 vb6 开发的软件(目前仍有工程师做 vb6 的二次开发)

    微软在 2021 年还为 vb6 支持库发布了最新补丁以支持 win11 。
    dcsuibian
        26
    dcsuibian  
       3 天前
    说句不人道的:用 C ,因为我听说 Rufus 就是用 C 写的,我感觉那个挺轻量的。
    nikenidage1
        27
    nikenidage1  
       3 天前   ❤️ 1
    试试 winform 的 AOT 啊
    HFX3389
        28
    HFX3389  
       3 天前 via iPhone
    要不要试试易语言或者 aardio 呢?
    kneo
        29
    kneo  
       3 天前 via Android   ❤️ 1
    有个现在有点冷门的选择,就是如果应用本身足够简单的话,可以考虑 autohotkey 。
    xmagicer
        30
    xmagicer  
       3 天前
    如果界面比较复杂,windows 原生系统接口也不一定底,可能是直接调用系统功能导致的统计数据不匹配
    xmagicer
        31
    xmagicer  
       3 天前
    试试最底层的 win32 gdi
    FrankAdler
        32
    FrankAdler  
    OP
       3 天前
    @yinmin 折腾了一下装上了,跑了个空 form ,编译启动后 1058kb 内存,感觉还行,等我深入试试。
    WebKit
        33
    WebKit  
       3 天前 via Android
    Flutter 呢
    Guoiaoang
        34
    Guoiaoang  
       3 天前
    我是做 C++的,据我所知,越高级的编程语言资源占用越高,汇编 < C < C++ < JAVA ,涉及到 web 更大,Go 好像常用于集群、高并发场景,资源占用应该也不高。不过涉及到 GUI 的话好像就没几个可选的了。据我所知 Windows 可以使用 Win32 的 API 编程,之上封装的有 MFC 、QT ,或者使用 OpenGL 编程。QT 、OpenGL 、java 、脚本语言都是跨平台的但脚本语言实际上也是调用的编译语言的实现。我用的是 Win11 ,QT 写的 snipaste 占用 24M ,scintilla 写的 Notepad2 占用 49M ,rust 写的 rustdesk 占用 42M ,可以在 github 上按流行的编程语言筛选出最有名的 GUI 程序体验一下,大概就知道什么适合自己了。
    jsq2627
        35
    jsq2627  
       3 天前 via iPhone
    kk2syc
        36
    kk2syc  
       3 天前
    go+win32api+自绘,14M 内存,我觉得很满足了,毕竟俺配的 128G 内存
    dwu8555
        37
    dwu8555  
       3 天前
    用 Lazarus ,Delphi 的开源社区版本,跨平台,还是挺好用的
    hanxiV2EX
        38
    hanxiV2EX  
       3 天前 via Android
    https://github.com/getlantern/systray

    托盘这种,然后用浏览器吧。
    loading
        39
    loading  
       3 天前
    aardio 值得拥有。
    EngAPI
        40
    EngAPI  
       3 天前
    lazarus ,跨平台,挺好用的
    bruce0
        41
    bruce0  
       3 天前
    想要极致的低内存占用, Windows 图形应用, 常见的应该是用 C/C++使用 win32 或者 MFC 开发吧, 手搓汇编这种事不是一般人能干的,很赞同 #34 楼老哥的说法
    kkgogo
        42
    kkgogo  
       3 天前
    aardio
    sir283
        43
    sir283  
       3 天前
    Windows 可以用 win32 跟 mfc 啊,Linux 可以用 xwindow 啊,而 c++的 qt 框架介入两者之间,方便开发跟阅读,资源占用也比较 electorn 这些前端框架,要小一些。
    d3adl0ck
        44
    d3adl0ck  
       3 天前 via iPhone
    @dcsuibian 同意,rufus 就是 win32 api 写的,可以试试
    loginv2
        45
    loginv2  
       3 天前
    aardio 易语言 Lazarus VisualFreeBasic
    cnbatch
        46
    cnbatch  
       3 天前
    不知道 OP 用不用分辨率缩放。如果用到了缩放,那么 OP 要考虑清楚这一点。

    先说事前准备。对于使用了分辨率缩放的应用,只要是用 C 、C++开发的,在开发时需要把这里提到的 XML 保存成 .manifest 文件,嵌入到 vcproject 当中。
    https://learn.microsoft.com/en-us/windows/win32/hidpi/setting-the-default-dpi-awareness-for-a-process
    做法很简单,我是保存成 dpi_adjust.manifest 文件,直接拖入 Visual Studio 当前项目里面。使用 manifest 文件的好处是不用每次都手动调用 SetProcessDpiAwarenessContext 这个 API 。

    不做这个准备的话,程序运行后在高 DPI 环境下是一片模糊的。

    准备完成后,麻烦的地方来了。

    使用纯 Win32API 来做的话(无论是纯 C 还是 C++),那就要自行调整缩放后的 UI 坐标。UI 内的每个图标、每个文本框等等都要手动调整。
    Rufus 的源码就是这样干的,对于每个 UI 资源都要手动调用 GetWindowRect 、MapWindowPoints 调整位置。

    像 OP 这种单纯的托盘类应用,其实使用 wxWidgets 都足够了,程序启动后的内存占用 4M 上下,并没有比 Delphi 、VB6 多很多。最重要的是,如果使用了 wxWidgets 之类的 UI 框架,框架自身已经包含了缩放所需的计算,无须使用者操心。
    ETiV
        47
    ETiV  
       3 天前 via iPhone
    https://github.com/ColleagueRiley/RGFW
    A cross platform lightweight single-header simple-to-use window abstraction library for creating graphical programs or libraries.
    Serino
        48
    Serino  
       3 天前
    试试某大佬的 aardio ?
    roundgis
        49
    roundgis  
       3 天前 via Android
    @kneo 十几年前接过一个外包

    当时评估过 autohotkey 和 autoit 最后选了后者 包比较多一些
    GeekGao
        50
    GeekGao  
       3 天前
    @yinmin VB6 确实不错,当年还有大量的 ocx 用,很轻松就完成一个 windows app
    panda1001
        51
    panda1001  
       3 天前
    追求内存占用的 xp 开发
    https://skywind.me/blog/archives/2808
    sunmker
        52
    sunmker  
       3 天前
    何必嘞
    qbqbqbqb
        53
    qbqbqbqb  
       2 天前
    @roundgis 这个开发体验像以前的 delphi 7.0 ,但是写出来的东西可执行文件挺大的
    hxy100
        54
    hxy100  
       2 天前
    aardio +1
    chingyat
        55
    chingyat  
       2 天前
    可以试试 tcl/tk ,虽然内存占用可能比原生语言大,但 runtime 本身很小。
    raptor
        56
    raptor  
       2 天前
    不试试开源版本的 delphi:

    Lazarus
    yqs112358
        57
    yqs112358  
       2 天前
    QT 应该挺符合你的要求,写东西也方便,现成工具库一大堆
    (当然还是比较占硬盘,几十 M 打底吧,不过就目前硬盘容量来看也不差这点)
    图方便用 python 写,也可以用 PyQT
    yqs112358
        58
    yqs112358  
       2 天前
    话说。。其实这几 M 内存也无所谓了
    有强迫症的话平时可以多看看 Defender ,Chrome ,VSCode ,QQ 微信的占用,脱敏一下(
    yqs112358
        59
    yqs112358  
       2 天前
    除非你是要跑在十年前+的老机子上,不然也不用太在意这个,和其他的大玩意相比你自己写的基本只是小意思
    mxlg2030
        60
    mxlg2030  
       2 天前
    rust Tauri
    xueyuehua
        61
    xueyuehua  
       2 天前
    webview2 怎样,我也没玩过
    BigShot404
        62
    BigShot404  
       2 天前
    vb6?
    iorilu
        63
    iorilu  
       2 天前
    求一个 vb6 包下载, 最好是绿色版解压能用的, win10 应该可以把
    chihaya4649
        64
    chihaya4649  
       2 天前
    刚好最近也在找有什么好方案,感觉以不装 runtime 但又好开发且档案要小,应该是使用 winform ,但最近比较蛋疼的是各种杀毒软件误报,目前是用 golang+liblcl(Lazarus )
    layxy
        65
    layxy  
       2 天前
    不考虑跨平台,aardio 就挺不错的
    LeegoYih
        66
    LeegoYih  
       2 天前
    易语言
    ajan
        67
    ajan  
       2 天前
    vb6 精简版 、aardio
    ajan
        68
    ajan  
       2 天前   ❤️ 1
    @iorilu


    Visual Basic 6.0 SP6 简体中文迷你版 (安装版),
    (包含支持鼠标滚轮扩展,有使用说明)

    文件大小:6.4 M
    下载:
    https://wwp.lanzoup.com/iBE6A2g6gyte
    iorilu
        69
    iorilu  
       2 天前
    @ajan 厉害了, ide 总共才 6M, 有空试试

    微软不干正事阿, 天天想着怎么把事情搞复杂, 啥玩意都要弄个大工程

    明明大家很希望一个简单的做 gui 的方法
    XinPingQiHe
        70
    XinPingQiHe  
       2 天前
    要追求极致的体积小,可以试试,vc6 或者 delphi 开发 控制台应用程序,把你设计的几个功能,分别安排不同的命令行参数去处理就行,大小可以控制到 KB 级别
    spritecn
        71
    spritecn  
       2 天前
    @yinmin vb 是 vba 的核心,就算系统里没有,装 office 也肯定会有的
    luxor
        72
    luxor  
       2 天前
    lvgl
    cloverzrg2
        73
    cloverzrg2  
       2 天前
    C 语言写,可以做到文件最小、内存占用最低。
    C 语言写这个复杂性比较高,从你问的问题来看,估计你写不出
    gcgj72
        74
    gcgj72  
       2 天前
    rust
    LXGMAX
        75
    LXGMAX  
       2 天前
    slint
    zengxs
        76
    zengxs  
       2 天前
    你会 go 那肯定选 wails 啊
    w568w
        77
    w568w  
       2 天前
    可以参考一下我之前的问题帖: https://www.v2ex.com/t/955040
    icy37785
        78
    icy37785  
       2 天前
    虽然易语言在鄙视链底端,但是你的需求真的是易语言的统治区。
    circleee
        79
    circleee  
       2 天前
    @FrankAdler #13 托盘可以 go + fyne 来做,以前做过一个 go server + fyne 托盘的,
    LeoYoung07
        80
    LeoYoung07  
       1 天前
    livin2
        81
    livin2  
       1 天前
    17M=>2M 这个差距我寻思应该不是语言的问题了,是 GUI 框架... 用 winAPI 自绘吧。其次编译目标 32 位,内存占用自然也会小点...
    jones2000
        82
    jones2000  
       1 天前
    c++ win32
    hatsuyuki
        83
    hatsuyuki  
       1 天前
    试试 Slint ,一开始就是为嵌入式设计的,占用极低,而且现代化 https://slint.dev/
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3267 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 12:11 · PVG 20:11 · LAX 04:11 · JFK 07:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.