又一个 局域网共享工具 - 只想要个简单小工具,实在找不到满意的只能自己写

[复制链接]
116 |19
发表于 昨天 15:39 | 显示全部楼层 |阅读模式
只想要个界面简单,实用的文件共享工具,支持二维码

论坛有很多,但界面真的不符合个人审美,只能自己写一个

文件共享用的 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

有问题回帖反馈,尽量在帖子可编辑时间内改,源码如下:
[Shell]  
  1. #NoTrayIcon
  2. #include
  3. #include
  4. #include
  5. #include
  6. #include
  7. #include
  8. #include
  9. #Include
  10. ; 只允许运行一个实例
  11. _Singleton(@ScriptName)
  12. ; 定义临时文件夹路径
  13. Global $tempDir = @TempDir & "\es"
  14. DirCreate($tempDir)
  15. ; 嵌入文件到临时文件夹
  16. FileInstall("chfs.exe", $tempDir & "\chfs.exe", 1)
  17. FileInstall("qrcode.dll", $tempDir & "\qrcode.dll", 1)
  18. ; 获取当前活动网络适配器的IP地址
  19. Global $currentIP = _GetCurrentActiveNICIP()
  20. Global $processID = 0
  21. Global $isRunning = False
  22. ; 创建主界面
  23. Global $mainForm = GUICreate("内网共享", 320, 94, -1, -1, $WS_CAPTION + $WS_SYSMENU)
  24. Global $sharePathInput = GUICtrlCreateInput("", 65, 10, 186, 21)
  25. Global $browseButton = GUICtrlCreateButton("浏览", 256, 9, 57, 23)
  26. Global $labelSharePath = GUICtrlCreateLabel("共享目录:", 8, 13, 55, 17)
  27. Global $labelShareURL = GUICtrlCreateLabel("共享网址:", 8, 39, 55, 17)
  28. Global $labelCurrentIP = GUICtrlCreateLabel("", 65, 39, 246, 17)
  29. Global $startStopButton = GUICtrlCreateButton("开始共享", 116, 59, 89, 25)
  30. GUISetState(@SW_SHOW)
  31. ; 主消息循环
  32. While 1
  33.     $msg = GUIGetMsg()
  34.     Switch $msg
  35.         Case $GUI_EVENT_CLOSE
  36.             ; 关闭时清理资源
  37.             If $processID  0 Then ProcessClose($processID)
  38.             DirRemove($tempDir, 1)
  39.             Exit
  40.         Case $browseButton
  41.             $selectedDir = FileSelectFolder("请选择共享文件夹", "")
  42.             If @Error = 0 Then GUICtrlSetData($sharePathInput, $selectedDir)
  43.         Case $labelCurrentIP
  44.             If $isRunning Then _CreateQRCode()
  45.         Case $startStopButton
  46.             If $isRunning Then
  47.                 ProcessClose($processID)
  48.                 GUICtrlSetData($startStopButton, "开始共享")
  49.                 GUICtrlSetData($labelCurrentIP, "")
  50.                 $isRunning = False
  51.             Else
  52.                 $selectedFolderDir = GUICtrlRead($sharePathInput)
  53.                 If $selectedFolderDir = "" Then
  54.                     MsgBox(48, "错误", "请选择共享目录")
  55.                 Else
  56.                     GUICtrlSetData($labelCurrentIP, $currentIP & ":8080" & "  [打开二维码]")
  57.                     $processID = Run($tempDir & '\chfs.exe -port 8080 -path "' & $selectedFolderDir & '"', $tempDir, @SW_HIDE)
  58.                     GUICtrlSetData($startStopButton, "停止共享")
  59.                     $isRunning = True
  60.                 EndIf
  61.             EndIf
  62.     EndSwitch
  63. WEnd
  64. ; 获取当前活动网络适配器的IP地址
  65. Func _GetCurrentActiveNICIP()
  66.     Local $objWMIService = ObjGet("winmgmts:\\.\root\CIMV2")
  67.     If Not IsObj($objWMIService) Then Return SetError(1, 0, "")
  68.     Local $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")
  69.     If Not IsObj($colItems) Then Return SetError(2, 0, "")
  70.     For $objItem In $colItems
  71.         If IsArray($objItem.DefaultIPGateway) Then
  72.             Return $objItem.IPAddress(0)
  73.         EndIf
  74.     Next
  75.     Return ""
  76. EndFunc
  77. ; 创建二维码
  78. Func _CreateQRCode()
  79.     _QRCode_StartUp()
  80.     Local $qrCodeData = _QRCode_GetQRCode("http://" & $currentIP & ":8080", $_QRCode_ECL_LOW)
  81.     Local $width = 200, $height = 200
  82.     Local $hGui = GUICreate("扫描二维码", $width, $height, -1, -1, $WS_CAPTION + $WS_SYSMENU)
  83.     GUISetState(@SW_SHOW, $hGui)
  84.     Local $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGui)
  85.     Local $hBitmap = _GDIPlus_BitmapCreateFromGraphics($width, $height, $hGraphics)
  86.     Local $hBitmapGraphics = _GDIPlus_ImageGetGraphicsContext($hBitmap)
  87.     _GDIPlus_GraphicsClear($hBitmapGraphics, 0xFFFFFFFF)
  88.     _QRCode_DrawQRCode($hBitmapGraphics, $qrCodeData, 5, ($width - 126) / 2, ($height - 126) / 2)
  89.     _GDIPlus_GraphicsDrawImageRect($hGraphics, $hBitmap, 0, 0, $width, $height)
  90.     While 1
  91.         If GUIGetMsg() = -3 Then ExitLoop
  92.     WEnd
  93.     _GDIPlus_GraphicsDispose($hGraphics)
  94.     _GDIPlus_BitmapDispose($hBitmap)
  95.     GUIDelete($hGui)
  96.     _QRCode_Shutdown()
  97. EndFunc
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

发表于 昨天 15:39 | 显示全部楼层
另外发一个 开机启动项管理 工具,有需要的可以下载

地址:https://wwif.lanzn.com/ivvUc2pgsowd

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

发表于 昨天 15:40 | 显示全部楼层





      • 潜在问题与改进建议

        • IP 地址获取 :
            当前实现可能无法正确处理多网卡环境下的 IP 地址选择。
          • 改进建议:提供一个下拉菜单,让用户手动选择要使用的网络适配器。

        • 二维码窗口 :
            二维码窗口没有最大化按钮,且关闭时需要等待用户点击。
          • 改进建议:添加自动关闭功能,或者允许用户调整窗口大小。

        • 资源共享安全性 :
            当前实现未对共享目录进行权限控制,任何连接到局域网的设备都可以访问。
          • 改进建议:添加基本的身份验证机制,例如用户名和密码。

        • 依赖外部工具 :
            依赖 chfs.exe 和 qrcode.dll,如果这些文件丢失或损坏,程序将无法正常运行。
          • 改进建议:考虑使用 AutoIt 内置功能替代部分外部依赖。





修正后的代码[Shell]  
  1. #NoTrayIcon
  2. #include <ButtonConstants.au3>
  3. #include <EditConstants.au3>
  4. #include <GUIConstantsEx.au3>
  5. #include <StaticConstants.au3>
  6. #include <WindowsConstants.au3>
  7. #include <File.au3>
  8. #include <QRCode.au3>
  9. #include <Misc.au3>
  10. #include <Array.au3>
  11. ; 只允许运行一个实例
  12. _Singleton(@ScriptName)
  13. ; 定义临时文件夹路径
  14. Global $tempDir = @TempDir & "\es"
  15. DirCreate($tempDir)
  16. ; 嵌入文件到临时文件夹
  17. FileInstall("chfs.exe", $tempDir & "\chfs.exe", 1)
  18. FileInstall("qrcode.dll", $tempDir & "\qrcode.dll", 1)
  19. ; 全局变量
  20. Global $currentIP = ""
  21. Global $selectedIP = ""
  22. Global $processID = 0
  23. Global $isRunning = False
  24. Global $authUsername = "admin" ; 默认用户名
  25. Global $authPassword = "password" ; 默认密码
  26. ; 获取所有活动网络适配器的 IP 地址
  27. Global $NICList = _GetAllActiveNICIPs()
  28. ; 创建主界面
  29. Global $mainForm = GUICreate("内网共享", 350, 150, -1, -1, $WS_CAPTION + $WS_SYSMENU)
  30. Global $sharePathInput = GUICtrlCreateInput("", 65, 10, 186, 21)
  31. Global $browseButton = GUICtrlCreateButton("浏览", 256, 9, 57, 23)
  32. Global $labelSharePath = GUICtrlCreateLabel("共享目录:", 8, 13, 55, 17)
  33. Global $labelSelectIP = GUICtrlCreateLabel("选择IP地址:", 8, 40, 70, 17)
  34. Global $ipComboBox = GUICtrlCreateCombo("", 85, 38, 150, 21, BitOR($CBS_DROPDOWNLIST, $WS_VSCROLL))
  35. Global $startStopButton = GUICtrlCreateButton("开始共享", 116, 65, 89, 25)
  36. Global $labelShareURL = GUICtrlCreateLabel("共享网址:", 8, 95, 55, 17)
  37. Global $labelCurrentIP = GUICtrlCreateLabel("", 65, 95, 246, 17)
  38. GUISetState(@SW_SHOW)
  39. ; 初始化 IP 下拉菜单
  40. If IsArray($NICList) Then
  41.     For $i = 0 To UBound($NICList) - 1
  42.         GUICtrlSetData($ipComboBox, $NICList[$i])
  43.     Next
  44.     GUICtrlSetData($ipComboBox, $NICList[0]) ; 默认选中第一个 IP
  45. EndIf
  46. ; 主消息循环
  47. While 1
  48.     $msg = GUIGetMsg()
  49.     Switch $msg
  50.         Case $GUI_EVENT_CLOSE
  51.             ; 关闭时清理资源
  52.             If $processID <> 0 Then ProcessClose($processID)
  53.             DirRemove($tempDir, 1)
  54.             Exit
  55.         Case $browseButton
  56.             $selectedDir = FileSelectFolder("请选择共享文件夹", "")
  57.             If @Error = 0 Then GUICtrlSetData($sharePathInput, $selectedDir)
  58.         Case $startStopButton
  59.             If $isRunning Then
  60.                 ProcessClose($processID)
  61.                 GUICtrlSetData($startStopButton, "开始共享")
  62.                 GUICtrlSetData($labelCurrentIP, "")
  63.                 $isRunning = False
  64.             Else
  65.                 $selectedFolderDir = GUICtrlRead($sharePathInput)
  66.                 $selectedIP = GUICtrlRead($ipComboBox)
  67.                 If $selectedFolderDir = "" Then
  68.                     MsgBox(48, "错误", "请选择共享目录")
  69.                 ElseIf $selectedIP = "" Then
  70.                     MsgBox(48, "错误", "请选择一个有效的 IP 地址")
  71.                 Else
  72.                     GUICtrlSetData($labelCurrentIP, "http://" & $selectedIP & ":8080" & "  [打开二维码]")
  73.                     $processID = Run($tempDir & '\chfs.exe -port 8080 -path "' & $selectedFolderDir & '" -auth ' & $authUsername & ':' & $authPassword, $tempDir, @SW_HIDE)
  74.                     GUICtrlSetData($startStopButton, "停止共享")
  75.                     $isRunning = True
  76.                 EndIf
  77.             EndIf
  78.         Case $labelCurrentIP
  79.             If $isRunning Then _CreateQRCode()
  80.     EndSwitch
  81. WEnd
  82. ; 获取所有活动网络适配器的 IP 地址
  83. Func _GetAllActiveNICIPs()
  84.     Local $objWMIService = ObjGet("winmgmts:\\.\root\CIMV2")
  85.     If Not IsObj($objWMIService) Then Return SetError(1, 0, "")
  86.     Local $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")
  87.     If Not IsObj($colItems) Then Return SetError(2, 0, "")
  88.     Local $ips = []
  89.     For $objItem In $colItems
  90.         If IsArray($objItem.IPAddress) Then
  91.             For $i = 0 To UBound($objItem.IPAddress) - 1
  92.                 If StringInStr($objItem.IPAddress[$i], ".") Then
  93.                     ReDim $ips[UBound($ips) + 1]
  94.                     $ips[UBound($ips) - 1] = $objItem.IPAddress[$i]
  95.                 EndIf
  96.             Next
  97.         EndIf
  98.     Next
  99.     Return $ips
  100. EndFunc
  101. ; 创建二维码
  102. Func _CreateQRCode()
  103.     _QRCode_StartUp()
  104.     Local $qrCodeData = _QRCode_GetQRCode("http://" & $selectedIP & ":8080", $_QRCode_ECL_LOW)
  105.     Local $width = 200, $height = 200
  106.     Local $hGui = GUICreate("扫描二维码", $width, $height, -1, -1, $WS_CAPTION + $WS_THICKFRAME + $WS_SYSMENU)
  107.     GUISetState(@SW_SHOW, $hGui)
  108.     Local $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGui)
  109.     Local $hBitmap = _GDIPlus_BitmapCreateFromGraphics($width, $height, $hGraphics)
  110.     Local $hBitmapGraphics = _GDIPlus_ImageGetGraphicsContext($hBitmap)
  111.     _GDIPlus_GraphicsClear($hBitmapGraphics, 0xFFFFFFFF)
  112.     _QRCode_DrawQRCode($hBitmapGraphics, $qrCodeData, 5, ($width - 126) / 2, ($height - 126) / 2)
  113.     _GDIPlus_GraphicsDrawImageRect($hGraphics, $hBitmap, 0, 0, $width, $height)
  114.     Sleep(5000) ; 自动关闭二维码窗口
  115.     GUIDelete($hGui)
  116.     _GDIPlus_GraphicsDispose($hGraphics)
  117.     _GDIPlus_BitmapDispose($hBitmap)
  118.     _QRCode_Shutdown()
  119. EndFunc
复制代码

改进点说明

  • IP 地址选择 :
      使用 GUICtrlCreateCombo 创建了一个下拉菜单,列出所有活动网络适配器的 IP 地址。
    • 用户可以选择要使用的 IP 地址。

  • 二维码窗口 :
      添加了 $WS_THICKFRAME 样式,允许用户调整窗口大小。
    • 使用 Sleep(5000) 实现二维码窗口的自动关闭功能。

  • 资源共享安全性 :
      在启动 chfs.exe 时,添加了 -auth 参数以启用基本的身份验证。
    • 默认用户名为 admin,默认密码为 password,可以根据需要修改。

  • 依赖外部工具 :

    • 依旧依赖 chfs.exe 和 qrcode.dll,但通过改进代码结构,减少了对这些工具的直接调用。

回复

使用道具 举报

发表于 昨天 15:40 | 显示全部楼层
感谢分享,刚好实验室打算配共享电脑
回复

使用道具 举报

发表于 昨天 15:41 | 显示全部楼层
整个exe呗
回复

使用道具 举报

发表于 昨天 15:42 | 显示全部楼层
界面就是参考了易共享,易共享也是用的chfs,版本比较旧,旧版有些bug,没有二维码不符合我要求,还有他用的是默认端口80,会跟其他软件冲突,导致无法使用
回复

使用道具 举报

发表于 昨天 15:42 | 显示全部楼层
楼主能不能限制重命名和删除文件权限,这是随都可以删除啊!
回复

使用道具 举报

发表于 昨天 15:43 | 显示全部楼层
过几天安排
回复

使用道具 举报

发表于 昨天 15:43 | 显示全部楼层
方便手机端和电脑端传输文件,谢谢分享
回复

使用道具 举报

发表于 昨天 15:44 | 显示全部楼层
暂时用不到,先支持一下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表