HTravel's recent timeline updates
HTravel

HTravel

V2EX member #688168, joined on 2024-05-05 21:58:03 +08:00
Per HTravel's settings, the topics list is hidden
Deals info, including closed deals, is not hidden
HTravel's recent replies
@ko1haha V 站截图我没搞明白浏览器中怎么玩。不过我写的汇编有自己的风格,与 AI 生成的不一样。把我主过程拷贝一份贴出来就行了。

_main proc
local @szAppProcessId[24]:DWORD
local @szAppLauncherProcessId[24]:DWORD
local @szStrA2W[MAX_PATH_X8]:WORD
local @length:DWORD
local @pos:DWORD

invoke RtlZeroMemory, addr @szAppProcessId, sizeof @szAppProcessId
invoke RtlZeroMemory, addr @szAppLauncherProcessId, sizeof @szAppLauncherProcessId
invoke RtlZeroMemory, addr @szStrA2W, sizeof @szStrA2W

invoke _IsWow64
;初始化当前目录、ini 文件路径
invoke DoInit

;设置工作目录
invoke SetCurrentDirectoryW, addr szExeDirW

invoke GetParameters


invoke lstrcpyW, addr szExecutedCmdStrW, addr szIniCommandLineW
.if bIsLogEnabled
invoke StdOutRichText3AAW, 11B, CTXT("[Log] "), DW_CONSOLE_TEXT_ATTR_DEFAULT, CTXT("Before {var} expand: "), 011B, addr szExecutedCmdStrW
invoke StdOut, addr SZ_NEW_LINEA
.endif

invoke StrReplaceWAW, addr szExecutedCmdStrW, CTXT("{EXE_DIR}"), addr szExeDirW
invoke StrReplaceWAW, addr szExecutedCmdStrW, CTXT("{EXE_NAME}"), addr szExeNameWithoutExtW
invoke StrReplaceWAW, addr szExecutedCmdStrW, CTXT("{APP_PATH}"), addr szAppRealPathW
invoke StrReplaceWAW, addr szExecutedCmdStrW, CTXT("{QUOTATION_MARK}"), addr SZ_QUOTATION_MARK_CHARW
invoke StrReplaceWAW, addr szExecutedCmdStrW, CTXT("{%0}"), addr szCommandLineParameter0W
invoke StrReplaceWAW, addr szExecutedCmdStrW, CTXT("{%1}"), addr szCommandLineParameter1W
invoke StrReplaceWAW, addr szExecutedCmdStrW, CTXT("{%2}"), addr szCommandLineParameter2W
invoke StrReplaceWAW, addr szExecutedCmdStrW, CTXT("{%3}"), addr szCommandLineParameter3W
invoke StrReplaceWAW, addr szExecutedCmdStrW, CTXT("{%4}"), addr szCommandLineParameter4W
invoke StrReplaceWAW, addr szExecutedCmdStrW, CTXT("{%5}"), addr szCommandLineParameter5W
invoke StrReplaceWAW, addr szExecutedCmdStrW, CTXT("{%6}"), addr szCommandLineParameter6W
invoke StrReplaceWAW, addr szExecutedCmdStrW, CTXT("{%7}"), addr szCommandLineParameter7W
invoke StrReplaceWAW, addr szExecutedCmdStrW, CTXT("{%8}"), addr szCommandLineParameter8W
invoke StrReplaceWAW, addr szExecutedCmdStrW, CTXT("{%9}"), addr szCommandLineParameter9W
invoke StrReplaceWAW, addr szExecutedCmdStrW, CTXT("{%*}"), addr szCommandLineParametersW

.if bIsLogEnabled
invoke StdOutRichText3AAW, 11B, CTXT("[Log] "), DW_CONSOLE_TEXT_ATTR_DEFAULT, CTXT("After {var} expand: "), 10B, addr szExecutedCmdStrW
;invoke MultiByteToWideChar, CP_ACP, 0, addr szExecutedCmdStrW, -1, addr szExecutedCmdStrW, MAX_PATH_X8
invoke StdOut, addr SZ_NEW_LINEA
invoke StdOut, addr SZ_NEW_LINEA
.endif
invoke SetConsoleOutputCP, 65001
invoke SetConsoleCP, 65001
invoke CreateProcessW, NULL, addr szExecutedCmdStrW, NULL, NULL, NULL, NORMAL_PRIORITY_CLASS, NULL, NULL, addr stStartUp, addr stProcInfo
.if eax
mov bHasChildProcess, TRUE
.if bIsLogEnabled
invoke wsprintf, addr @szAppProcessId, CTXT("%u"), stProcInfo.dwProcessId
invoke StdOutRichText3LnA, 11B, CTXT("[Log] "), DW_CONSOLE_TEXT_ATTR_DEFAULT, CTXT("Child process ID: "), 10B, addr @szAppProcessId
invoke StdOut, addr SZ_NEW_LINEA
; invoke StdOut, addr SZ_NEW_LINEA
.endif
invoke WaitForSingleObject, stProcInfo.hProcess, INFINITE
invoke CloseHandle, stProcInfo.hProcess
invoke CloseHandle, stProcInfo.hThread
.else
mov bHasChildProcess, FALSE
ifdef WINDOWS
invoke MessageBoxAW, CTXT("[Error] Cannot launch App: "), addr szExecutedCmdStrW, CTXT("[Error] Cannot launch App")
endif
invoke StdOutRichText3LnAAW, 100B, CTXT("[Error] "), DW_CONSOLE_TEXT_ATTR_DEFAULT, CTXT("Cannot launch App: "), 100B, addr szExecutedCmdStrW
invoke StdOutLastErrorMessage
.endif
ret
_main endp
@ko1haha Java 程序打包成 exe ,这都 20 多年前的老问题了,算什么没人提的思路。我给你一个 win32ASM 汇编完整版的思路,我自己都用十几年了:
1 、检测并自动安装私有 JRE ,不影响用户计算机上的 JRE 环境。原理:先安装一遍 JRE ,然后用 InnoSetup 将安装目录制作成私有 JRE 的 exe 安装包,私有 JRE 的本质,就是安装目录、注册表信息都放在另一个路径下即可。

2 、将上述私有 JRE exe 安装包作为启动器 exe 文件的一个资源项,也可以放在公网或内网,然后引用该连接。

3 、这个启动器用 win32ASM 汇编写,检测私有 JRE 是否已安装,没有就从自己资源项释放并静默安装,或从配置文件中所写的 URL 下载并静默安装。然后根据配置文件所写的参数格式,组织用户通过命令行或 Explorer 传递过来的各参数,以 CreateProgress 的方式调用 java.exe 或 javaw.exe ( GUI 程序)即可。甚至还有进程内的方案,就是用 LoadLibrary 调用 jvm.dll
可能就是你的车机垃圾。奔驰那垃圾车机就是这样的,要像电脑一样,确保音乐 app 目前在 active 状态,此时方向盘切歌键才有效。开车时要切歌,就必须低头看仪表盘,确认把音乐 app 选中了。宝马奥迪都没这么脑残的逻辑。
都 2026 年了,给自己写个工具居然还用 JRE8 ?
而且居然一个启动器都值得宣传?这些年但凡你认真学点 C/C++的皮毛,这压根简单到不是什么事。更别说现在有 AI
@Hconk 你这个 3D 家庭物品收纳管理工具,我在 AI 前就有,做法很简单,就是在 Numbers 中每个房间建一个页签,然后把存了什么物品在什么地方写在里面。Numbers 会在 iCloud 及我的 NAS 中同步,所以天然就有版本的概念,即使最新的 Number 文件丢了,我也能根据历史文件恢复绝大部分我的收纳记录。

另外我还买了正规的 brother 标签机,绝大多数物品,都贴了标签,上面有购买日期、数量、金额等信息。

比如 5 号和 7 号的可充电镍氢电池,我前前后后就买了 50 多个。我就能记住哪个电池用在哪个里面,暂时还没用到的电池分别有哪些,存在哪。
@ttkit 好吧,你这是直接跳到了共产主义实现后的阶段。如果 AI+具象机器人实现后,基本收入普及化,任何人不工作都可以衣食无忧,或许你说的这些可以实现。但那时候,你真未必还愿意为陌生人中的他们去实现这类需求,因为好玩的事情太多了,每天开个房车,全球每个城市、野外都走一遍,累了就找个五星级酒店住着静静享受会平静,不好吗,你不大可能真跑去开发这些小众 app 。尤其在这些 app 极其泛滥后,就像现在早已经积累了至少几千个经典的游戏、几千首经典音乐、几千部经典书籍/电影/电视剧,但真有很多人花时间看吗?
@Genieliu111 是我的话,即使我人在香港,顶着大太阳来回溜达苹果旗舰店也不是个舒服的事啊。我还不如用 3HK DIY 共享流量下载安装呢,这过程中还能用电视或其他平板看看视频什么的,都比去苹果店舒服。即使身边暂时没大流量卡,也可以到酒店下面便利店买个几十元的流量卡,一般都有 50G 流量,够折腾了。
你要先击中自己的灵魂,且要自信到确保自己有灵魂。都有 AI 了,为什么依然是为奴为婢的思维,总想着去为少数人解决问题呢?就不能问问自己的灵魂,自己这一辈子需要哪些工具吗?

我就给自己把阅读、看图、听歌、看视频软件都做了,因为这几个都是可以用一辈子的长需求。

即使你只是奔着为少数人做工具赚钱的目的去的,其实也是行不通的。因为这类少数人,显然不是什么大佬,给不起多少钱,还总想着白嫖,你是在往比最低工资还要低的收入方向努力。而且这类往往都是一次性的需求,本就是各行业基层从业人员要自己用 AI 去解决的,他自己都没多少肉吃,拿什么请你。
看到最后没绷住。都说了自己会 github ,那就默认是程序员了,居然装个 macos 系统要跑去天才吧一次?
你也太单纯了吧。我和 Claude 第一次聊,他的回复中举例都是中国的企业、技术什么的。
About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5412 Online   Highest 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: d3e9c8b8 · 25ms · UTC 09:32 · PVG 17:32 · LAX 02:32 · JFK 05:32
♥ Do have faith in what you're doing.