又一个 局域网共享工具 - 只想要个简单小工具,实在找不到满意的只能自己写
只想要个界面简单,实用的文件共享工具,支持二维码论坛有很多,但界面真的不符合个人审美,只能自己写一个
文件共享用的 CHFS 3.1,AutoIt 写的
使用方法:
1. 点击 浏览 选择要共享的文件夹
2. 点击 开始共享
3. 在浏览器输入网址 或 点击 [打开二维码],使用手机扫描二维码 即可
4. 结束可点击 停止共享,或直接关闭窗口
注意:
1. 限局域网内使用
2. 无线请在同一个WIFI下使用
2025.2.25
发布工具
下载链接:https://wwif.lanzn.com/iavpi2ouxwsf
2025.2.26 更新记录:
1. 增加后台运行(右击托盘图标 显示/隐藏窗口)
2. 去除共享页面 登录 按钮,联系、捐助 文字,页面更简洁
3. 放大二维码
4. 工具改名为“域共享”
下载地址:https://wwif.lanzn.com/iQ3HN2oxs6ed
有问题回帖反馈,尽量在帖子可编辑时间内改,源码如下:
#NoTrayIcon
#include
#include
#include
#include
#include
#include
#include
#Include
; 只允许运行一个实例
_Singleton(@ScriptName)
; 定义临时文件夹路径
Global $tempDir = @TempDir & "\es"
DirCreate($tempDir)
; 嵌入文件到临时文件夹
FileInstall("chfs.exe", $tempDir & "\chfs.exe", 1)
FileInstall("qrcode.dll", $tempDir & "\qrcode.dll", 1)
; 获取当前活动网络适配器的IP地址
Global $currentIP = _GetCurrentActiveNICIP()
Global $processID = 0
Global $isRunning = False
; 创建主界面
Global $mainForm = GUICreate("内网共享", 320, 94, -1, -1, $WS_CAPTION + $WS_SYSMENU)
Global $sharePathInput = GUICtrlCreateInput("", 65, 10, 186, 21)
Global $browseButton = GUICtrlCreateButton("浏览", 256, 9, 57, 23)
Global $labelSharePath = GUICtrlCreateLabel("共享目录:", 8, 13, 55, 17)
Global $labelShareURL = GUICtrlCreateLabel("共享网址:", 8, 39, 55, 17)
Global $labelCurrentIP = GUICtrlCreateLabel("", 65, 39, 246, 17)
Global $startStopButton = GUICtrlCreateButton("开始共享", 116, 59, 89, 25)
GUISetState(@SW_SHOW)
; 主消息循环
While 1
$msg = GUIGetMsg()
Switch $msg
Case $GUI_EVENT_CLOSE
; 关闭时清理资源
If $processID0 Then ProcessClose($processID)
DirRemove($tempDir, 1)
Exit
Case $browseButton
$selectedDir = FileSelectFolder("请选择共享文件夹", "")
If @Error = 0 Then GUICtrlSetData($sharePathInput, $selectedDir)
Case $labelCurrentIP
If $isRunning Then _CreateQRCode()
Case $startStopButton
If $isRunning Then
ProcessClose($processID)
GUICtrlSetData($startStopButton, "开始共享")
GUICtrlSetData($labelCurrentIP, "")
$isRunning = False
Else
$selectedFolderDir = GUICtrlRead($sharePathInput)
If $selectedFolderDir = "" Then
MsgBox(48, "错误", "请选择共享目录")
Else
GUICtrlSetData($labelCurrentIP, $currentIP & ":8080" & "[打开二维码]")
$processID = Run($tempDir & '\chfs.exe -port 8080 -path "' & $selectedFolderDir & '"', $tempDir, @SW_HIDE)
GUICtrlSetData($startStopButton, "停止共享")
$isRunning = True
EndIf
EndIf
EndSwitch
WEnd
; 获取当前活动网络适配器的IP地址
Func _GetCurrentActiveNICIP()
Local $objWMIService = ObjGet("winmgmts:\\.\root\CIMV2")
If Not IsObj($objWMIService) Then Return SetError(1, 0, "")
Local $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")
If Not IsObj($colItems) Then Return SetError(2, 0, "")
For $objItem In $colItems
If IsArray($objItem.DefaultIPGateway) Then
Return $objItem.IPAddress(0)
EndIf
Next
Return ""
EndFunc
; 创建二维码
Func _CreateQRCode()
_QRCode_StartUp()
Local $qrCodeData = _QRCode_GetQRCode("http://" & $currentIP & ":8080", $_QRCode_ECL_LOW)
Local $width = 200, $height = 200
Local $hGui = GUICreate("扫描二维码", $width, $height, -1, -1, $WS_CAPTION + $WS_SYSMENU)
GUISetState(@SW_SHOW, $hGui)
Local $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGui)
Local $hBitmap = _GDIPlus_BitmapCreateFromGraphics($width, $height, $hGraphics)
Local $hBitmapGraphics = _GDIPlus_ImageGetGraphicsContext($hBitmap)
_GDIPlus_GraphicsClear($hBitmapGraphics, 0xFFFFFFFF)
_QRCode_DrawQRCode($hBitmapGraphics, $qrCodeData, 5, ($width - 126) / 2, ($height - 126) / 2)
_GDIPlus_GraphicsDrawImageRect($hGraphics, $hBitmap, 0, 0, $width, $height)
While 1
If GUIGetMsg() = -3 Then ExitLoop
WEnd
_GDIPlus_GraphicsDispose($hGraphics)
_GDIPlus_BitmapDispose($hBitmap)
GUIDelete($hGui)
_QRCode_Shutdown()
EndFunc 另外发一个 开机启动项管理 工具,有需要的可以下载
地址:https://wwif.lanzn.com/ivvUc2pgsowd
[*]
[*]
[*]潜在问题与改进建议
[*]IP 地址获取 :
当前实现可能无法正确处理多网卡环境下的 IP 地址选择。
[*]改进建议:提供一个下拉菜单,让用户手动选择要使用的网络适配器。
[*]二维码窗口 :
二维码窗口没有最大化按钮,且关闭时需要等待用户点击。
[*]改进建议:添加自动关闭功能,或者允许用户调整窗口大小。
[*]资源共享安全性 :
当前实现未对共享目录进行权限控制,任何连接到局域网的设备都可以访问。
[*]改进建议:添加基本的身份验证机制,例如用户名和密码。
[*]依赖外部工具 :
依赖 chfs.exe 和 qrcode.dll,如果这些文件丢失或损坏,程序将无法正常运行。
[*]改进建议:考虑使用 AutoIt 内置功能替代部分外部依赖。
修正后的代码
#NoTrayIcon
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <File.au3>
#include <QRCode.au3>
#include <Misc.au3>
#include <Array.au3>
; 只允许运行一个实例
_Singleton(@ScriptName)
; 定义临时文件夹路径
Global $tempDir = @TempDir & "\es"
DirCreate($tempDir)
; 嵌入文件到临时文件夹
FileInstall("chfs.exe", $tempDir & "\chfs.exe", 1)
FileInstall("qrcode.dll", $tempDir & "\qrcode.dll", 1)
; 全局变量
Global $currentIP = ""
Global $selectedIP = ""
Global $processID = 0
Global $isRunning = False
Global $authUsername = "admin" ; 默认用户名
Global $authPassword = "password" ; 默认密码
; 获取所有活动网络适配器的 IP 地址
Global $NICList = _GetAllActiveNICIPs()
; 创建主界面
Global $mainForm = GUICreate("内网共享", 350, 150, -1, -1, $WS_CAPTION + $WS_SYSMENU)
Global $sharePathInput = GUICtrlCreateInput("", 65, 10, 186, 21)
Global $browseButton = GUICtrlCreateButton("浏览", 256, 9, 57, 23)
Global $labelSharePath = GUICtrlCreateLabel("共享目录:", 8, 13, 55, 17)
Global $labelSelectIP = GUICtrlCreateLabel("选择IP地址:", 8, 40, 70, 17)
Global $ipComboBox = GUICtrlCreateCombo("", 85, 38, 150, 21, BitOR($CBS_DROPDOWNLIST, $WS_VSCROLL))
Global $startStopButton = GUICtrlCreateButton("开始共享", 116, 65, 89, 25)
Global $labelShareURL = GUICtrlCreateLabel("共享网址:", 8, 95, 55, 17)
Global $labelCurrentIP = GUICtrlCreateLabel("", 65, 95, 246, 17)
GUISetState(@SW_SHOW)
; 初始化 IP 下拉菜单
If IsArray($NICList) Then
For $i = 0 To UBound($NICList) - 1
GUICtrlSetData($ipComboBox, $NICList[$i])
Next
GUICtrlSetData($ipComboBox, $NICList) ; 默认选中第一个 IP
EndIf
; 主消息循环
While 1
$msg = GUIGetMsg()
Switch $msg
Case $GUI_EVENT_CLOSE
; 关闭时清理资源
If $processID <> 0 Then ProcessClose($processID)
DirRemove($tempDir, 1)
Exit
Case $browseButton
$selectedDir = FileSelectFolder("请选择共享文件夹", "")
If @Error = 0 Then GUICtrlSetData($sharePathInput, $selectedDir)
Case $startStopButton
If $isRunning Then
ProcessClose($processID)
GUICtrlSetData($startStopButton, "开始共享")
GUICtrlSetData($labelCurrentIP, "")
$isRunning = False
Else
$selectedFolderDir = GUICtrlRead($sharePathInput)
$selectedIP = GUICtrlRead($ipComboBox)
If $selectedFolderDir = "" Then
MsgBox(48, "错误", "请选择共享目录")
ElseIf $selectedIP = "" Then
MsgBox(48, "错误", "请选择一个有效的 IP 地址")
Else
GUICtrlSetData($labelCurrentIP, "http://" & $selectedIP & ":8080" & "[打开二维码]")
$processID = Run($tempDir & '\chfs.exe -port 8080 -path "' & $selectedFolderDir & '" -auth ' & $authUsername & ':' & $authPassword, $tempDir, @SW_HIDE)
GUICtrlSetData($startStopButton, "停止共享")
$isRunning = True
EndIf
EndIf
Case $labelCurrentIP
If $isRunning Then _CreateQRCode()
EndSwitch
WEnd
; 获取所有活动网络适配器的 IP 地址
Func _GetAllActiveNICIPs()
Local $objWMIService = ObjGet("winmgmts:\\.\root\CIMV2")
If Not IsObj($objWMIService) Then Return SetError(1, 0, "")
Local $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")
If Not IsObj($colItems) Then Return SetError(2, 0, "")
Local $ips = []
For $objItem In $colItems
If IsArray($objItem.IPAddress) Then
For $i = 0 To UBound($objItem.IPAddress) - 1
If StringInStr($objItem.IPAddress[$i], ".") Then
ReDim $ips
$ips = $objItem.IPAddress[$i]
EndIf
Next
EndIf
Next
Return $ips
EndFunc
; 创建二维码
Func _CreateQRCode()
_QRCode_StartUp()
Local $qrCodeData = _QRCode_GetQRCode("http://" & $selectedIP & ":8080", $_QRCode_ECL_LOW)
Local $width = 200, $height = 200
Local $hGui = GUICreate("扫描二维码", $width, $height, -1, -1, $WS_CAPTION + $WS_THICKFRAME + $WS_SYSMENU)
GUISetState(@SW_SHOW, $hGui)
Local $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGui)
Local $hBitmap = _GDIPlus_BitmapCreateFromGraphics($width, $height, $hGraphics)
Local $hBitmapGraphics = _GDIPlus_ImageGetGraphicsContext($hBitmap)
_GDIPlus_GraphicsClear($hBitmapGraphics, 0xFFFFFFFF)
_QRCode_DrawQRCode($hBitmapGraphics, $qrCodeData, 5, ($width - 126) / 2, ($height - 126) / 2)
_GDIPlus_GraphicsDrawImageRect($hGraphics, $hBitmap, 0, 0, $width, $height)
Sleep(5000) ; 自动关闭二维码窗口
GUIDelete($hGui)
_GDIPlus_GraphicsDispose($hGraphics)
_GDIPlus_BitmapDispose($hBitmap)
_QRCode_Shutdown()
EndFunc
改进点说明
[*]IP 地址选择 :
使用 GUICtrlCreateCombo 创建了一个下拉菜单,列出所有活动网络适配器的 IP 地址。
[*]用户可以选择要使用的 IP 地址。
[*]二维码窗口 :
添加了 $WS_THICKFRAME 样式,允许用户调整窗口大小。
[*]使用 Sleep(5000) 实现二维码窗口的自动关闭功能。
[*]资源共享安全性 :
在启动 chfs.exe 时,添加了 -auth 参数以启用基本的身份验证。
[*]默认用户名为 admin,默认密码为 password,可以根据需要修改。
[*]依赖外部工具 :
[*]依旧依赖 chfs.exe 和 qrcode.dll,但通过改进代码结构,减少了对这些工具的直接调用。
感谢分享,刚好实验室打算配共享电脑 整个exe呗 界面就是参考了易共享,易共享也是用的chfs,版本比较旧,旧版有些bug,没有二维码不符合我要求,还有他用的是默认端口80,会跟其他软件冲突,导致无法使用 楼主能不能限制重命名和删除文件权限,这是随都可以删除啊! 过几天安排 方便手机端和电脑端传输文件,谢谢分享 暂时用不到,先支持一下
页:
[1]
2