ElderConnect:为老年人打造的“一键视频”友好助手

作者:一个想让俺奶可以接打 视频电话 的孩子


缘起:一个来自家人的“技术求助”

工作之后,回老家次数越来越少,俺奶今年80岁了,她不识字也不会使用智能手机,就连按键老年机也都只会按一下“绿色”的接听按键……

这个想法两年前就有了,有一次(其实很多次了…)节假日我回家,看到别的老头老婆儿手拿着智能手机举得很远打电话,我心里就能想到俺奶不会用,那一刻我意识到:现代设计的软件,根本没考虑过他们的使用场景

我考虑到,如果是一个智能手机放到俺奶那里,我都不用想,肯定用不了多长时间,一个农村的老婆儿丢丢拉拉、啥都舍不得扔、什么东西都放到一块……
所以,我决定从电脑入手,正巧我手里也有些电脑配件;就想着直接在老家装一个 365*24 运行的小电脑,然后把电脑独立放起来不让她乱碰,最后使用本文的主角来实现 “一键视频”

于是,我决定暂停手头的项目,用业余时间做一款真正“为老年人而生”的视频通话辅助工具—— ElderConnect


目标很朴素:让视频通话“一键可达”

我的核心目标只有三个:

  1. 联系人卡片大而清晰:名字、头像、电话号码一目了然
  2. 点击即拨:无需确认、无需跳转,点一下就发起视频
  3. 自动接听:对方来电时,窗口全屏弹出,音量自动调大

听起来很简单?但实现起来,远比想象中复杂。


技术选型:为什么是 .NET 8 + WPF + HandyControl?

作为 .NET 开发者,我毫不犹豫选择了 .NET 8 ——跨平台、高性能、单文件发布,完美契合桌面应用需求。

UI 框架上,WPF 虽“古老”,但其 数据绑定、样式系统、矢量渲染 依然是 Windows 桌面开发的王者。更重要的是,它能和 HandyControl 无缝集成。

HandyControl 是什么?
它是一个开源的 WPF UI 控件库,提供了现代化的按钮、卡片、主题切换等组件,让传统 WPF 应用瞬间拥有 Fluent Design 风格

比如,我的联系人卡片只用了几行 XAML:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<ItemsControl.ItemTemplate>
<DataTemplate>
<!-- 使用HandyControl Card控件 -->
<hc:Card MaxWidth="500"
Margin="20"
BorderThickness="1"
Effect="{DynamicResource EffectShadow2}"
MouseLeftButtonDown="ContactCard_MouseLeftButtonDown">
<StackPanel HorizontalAlignment="Center"
VerticalAlignment="Center">
<!-- 头像占位 -->
<Grid Width="450" Height="450">
<!-- 设置图片头像 -->
<Image Source="{Binding Path=., Converter={StaticResource AvatarPathConverter}}"
Width="450" Height="450"
HorizontalAlignment="Center"
VerticalAlignment="Center" />
</Grid>

<!-- 姓名 -->
<TextBlock Text="{Binding Name}"
FontSize="28"
FontWeight="SemiBold"
Foreground="{DynamicResource PrimaryTextBrush}"
TextAlignment="Center"
Margin="0,16,0,8" />

<!-- 电话 -->
<TextBlock Text="{Binding PhoneNumber}"
FontSize="22"
Foreground="{DynamicResource SecondaryTextBrush}"
TextAlignment="Center"
Margin="0,8,0,4" />
</StackPanel>
</hc:Card>
</DataTemplate>
</ItemsControl.ItemTemplate>

关键在于 DynamicResource ——它让我能轻松实现 深色/浅色主题一键切换(后面会讲)。

📷 【ElderConnect 主页面截图】

ElderConnect1


核心功能:从“能用”到“好用”的细节打磨

一键视频:绕过微信复杂流程

这是最核心的“魔法”。

ElderConnect 并不替代微信,而是作为“快捷入口”存在。
使用者 点击联系人卡片”时,ElderConnect会自动完成以下操作:

  1. 通过 Weixin的进程 定位微信主窗口
  2. 通过键盘模拟输入微信自带快捷键:Ctrl + F 进行搜索,而后在模拟键入 Enter 从而跳转到目标联系人的聊天窗口
  3. 计算 微信视频聊天按钮 所在的屏幕位置,模拟鼠标点击“视频聊天”按钮发起通话

整个过程 无需用户操作微信界面 ,仿佛直接拨通了电话。

技术上,我没有使用 System.Windows.Automation 命名空间,因为最新的微信(4.1)已经无法使用 AutomationElement 获取元素。
我直接通过获取进程句柄找到微信主窗口,通过 Win32 API 计算元素位置和点击。

1
2
3
4
5
6
7
8
9
10
// 查 Weixin.exe(主进程)
var mainProcesses = Process.GetProcessesByName("Weixin");
if (mainProcesses.Length == 0)
{
Debug.WriteLine("未找到 Weixin.exe");
return IntPtr.Zero;
}

uint weixinPid = (uint)mainProcesses[0].Id;
Debug.WriteLine($"Weixin.exe PID: {weixinPid}");

虽然有点“黑科技”,但对用户来说,体验是无缝的

来电自动弹出醒目地提醒窗口:再也不怕错过!

联系人 打来视频聊天,微信原版的来电窗口非常小,并且还是在屏幕右下角,非常不方便。
ElderConnect 会自动检测是否有视频通话打进来,并自动弹出 超大字体 的窗口,具体如下:

  • 通过 ElderConnect 内置的 “发现程序” 监听微信进程
  • 一旦检测到,立即 全屏置顶 + 弹出大字体提醒窗口
  • 显示 超大字体“接听”“挂断” 按钮(字体 64pt!)

📷 【来电提醒弹窗截图】

ElderConnect9

联系人管理:头像、昵称、微信号、电话号码

我设计了一个极简的联系人管理界面。 用户 只需:

  • 点击 + 新增 按钮,输入联系人的:昵称、微信号、电话号码
  • 选择你上传的头像(下面会讲在那里上传头像)
  • 依次点击:保存保存到本地 ,然后关闭联系人管理窗口即可

📷 【联系人管理界面截图】

ElderConnect2

背后,我做了两件事:

  • 使用 JSON 文件存储联系人信息,简化软件部署的难度,开盒即用
  • 昵称支持中文、英文、甚至 emoji,你可以给你的联系人起一个好听的名字,比如他的小名(doge : )

头像图库管理

我为软件添加了一个可以预览图片的图库,用户 可以:

  • 上传图片:最基本的功能,上传的图片会被复制到软件安装路径下
  • 头像缩略图:避免头像图片拉伸变形,缩略图限制了大小
  • 预览图片:点击图片,图片会放大显示,用户可以查看图片的清晰度
  • 删除图片:点击图片,进入图片预览,点击删除按钮,图片会从图库中删除

📷 【头像图库及预览界面截图】

ElderConnect3
ElderConnect4

注: 本部分所提及的 “用户” 均为会操作电脑的自然人,并非使用软件的老人自身。


老年友好设计:不只是“放大字体”

很多人以为“适老化”就是把字调大,其实远不止如此。

主题切换:这里给主页面添加主题切换

有些老人喜欢白底黑字(高对比),有些则觉得深色更护眼。我在菜单里加了两个选项:

1
2
<MenuItem Header="🌕 浅色" Click="LightTheme_Click"/>
<MenuItem Header="🌑 深色" Click="DarkTheme_Click"/>

后台只需一行代码切换:

1
2
3
4
5
// 使用 HandyControl 的全局主题管理
// 使用浅色主题
HandyControl.Themes.Theme.SetSkin(this, SkinType.Default);
// 使用深色主题
HandyControl.Themes.Theme.SetSkin(this, SkinType.Dark);

这里为了省事,没有做主题配置本地化,默认打开软件为浅色主题,你可以手动切换为深色主题,以后可能会加上记住模式

无干扰模式:关闭所有“聪明”提示

  • 无更新提醒(除非手动检查)
  • 无广告、无推荐
  • 卸载时不保留用户数据(避免数据残留)

软件应该服务人,而不是反过来。

安装即用:绿色无依赖

  • 得益于 .NET 8 的 self-contained 发布,安装包包含所有运行时,用户无需单独安装 .NET。

  • 配合 Inno Setup 制作的安装程序,双击 → 下一步 → 完成,三步搞定。

📷 【安装向导截图】

ElderConnect5
ElderConnect6
ElderConnect7

打包与分发:让父母自己也能装

我知道,很多开发者止步于“本地能跑”,但 真正的挑战是让非技术用户顺利安装

我用 Inno Setup 制作了专业安装包,并做了这些优化:

  • 默认安装到 Program Files(64 位),你也可以指定安装路径,默认会在你选择的路径下创建一个名为 “ElderConnect” 的文件夹,如: D:/yourDir/ElderConnect
  • 可选创建桌面快捷方式
  • 安装后自动启动程序(可选)
  • 提供“卸载”快捷方式(在开始菜单)

最关键的是:全程无需管理员权限。很多老年电脑权限受限,这个设计让 安装者 能自己完成安装。

📷 【Windows 开始菜单截图】

ElderConnect8


未来计划:不止于视频

目前 ElderConnect 已满足核心需求,我想以后可能会走得更远:

  • 语音播报:来电时自动说“儿子来电,请接听”
  • 远程协助:子女可一键请求控制父母电脑(需授权)
  • 健康提醒:结合日历,提醒吃药、复诊
  • 天气预报:早中晚依次播报当天的天气
  • 新闻推送:早中晚依次播报当天的新闻
  • 娱乐项目:可能会添加给老年人播放戏曲的功能
  • 智能助手:可能会添加 AI 功能
  • 开 源:等稳定后,我会将核心模块开源,让更多开发者参与适老化改造

写在最后:技术的温度

开发 ElderConnect 的这段时间来,是我职业生涯中最“慢”的项目。
没有炫酷的算法,没有高并发架构,只有反复测试 “俺奶能不能点对”
但每次视频接通时,听到那句“哎呀,这次一下就通了!”,我就觉得值了。

技术的意义,不在于多先进,而在于能否真正帮到人

如果你也有想为家人定制的工具,不妨动手试试。
哪怕只是一个小小的改进,也可能成为他们通往数字世界的桥梁。

ElderConnect 目前为个人项目,暂未开源,但欢迎评论区交流适老化设计经验。
项目官网:https://hexo.csh215.top/2025/10/20/ElderConnect/ (暂为本文地址)


谨以此文,献给所有努力跟上数字时代的老人。