找回密码
 加入
搜索
查看: 1090|回复: 5

[网络通信] 【已解决】按间隔时间循环读取.ini文件

[复制链接]
发表于 2021-11-12 03:13:41 | 显示全部楼层 |阅读模式
本帖最后由 hljkwan 于 2021-11-12 13:28 编辑

#include <AutoItConstants.au3>
#include <MsgBoxConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

Local $aArray = DriveGetDrive($DT_REMOVABLE)
If @error Then
        ; An error occurred when retrieving the drives.
        MsgBox($MB_SYSTEMMODAL, "温馨提示", "未发现ini文件")
Else
        EndIf
For $i = 1 to $aArray[0]
$aArray = IniRead($aArray[$i] & "\au3.ini", "key", "code", "")
if $aArray <> 0 Then
$keycode = $aArray
EndIf
Next
if $keycode = 1234567890 Then
                ; Show all the drives found and convert the drive letter to uppercase.
;                MsgBox($MB_SYSTEMMODAL, "提示", "Drive " & $i & "/" & $aArray[0] & ":" & @CRLF & StringUpper($aArray[$i]))
Run("C:\Everything.exe")
Else
EndIf

新建au3.ini文件,打开输入
[key]
code=1234567890
将Everything放入C盘根目录(附件已上传)外部下载链接(http://www.itmop.com/downinfo/16205.html
将au3.ini拷贝进U盘,将U盘插入电脑,运行代码,Everything打开,当拔掉U盘,Everything任然处于打开状态
怎么写一个循环读取命令,比如10秒读取一次U盘中的au3.ini.ini文件,当读取不到时,自动关闭Everything。
求大神指点一下

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2021-11-12 09:33:43 | 显示全部楼层
检测U盘如果检测到U盘拔掉那么退出
发表于 2021-11-12 10:02:49 | 显示全部楼层
#include <AutoItConstants.au3>
#include <MsgBoxConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>


$Form1 = GUICreate("纯AU3获取U盘信息    by sh1536", 800, 240)
$ListView1 = GUICtrlCreateListView("磁盘号|盘符|卷标|内部名称|容量|VID|PID|序列号", 0, 0, 800, 240)
GUICtrlSendMsg(-1, 0x101E, 0, 50)
GUICtrlSendMsg(-1, 0x101E, 1, 40)
GUICtrlSendMsg(-1, 0x101E, 3, 250)
GUICtrlSendMsg(-1, 0x101E, 7, 240)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

updq()
GUIRegisterMsg(0x0219, '_USB_Message')


While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit

        EndSwitch
WEnd


Func _USB_Message($hWnd, $Msg, $wParam, $lParam);检测U盘拔插(此源码来源3mile前辈,感谢)
        Switch $wParam
                Case 0x8000;设备插入
                        Local $_DEV_BROADCAST_HDR = DllStructCreate("int dbch_size; int dbch_devicetype; int dbch_reserved;", $lParam)
                        If DllStructGetData($_DEV_BROADCAST_HDR, "dbch_devicetype") = 2 Then
                                                        Local Const $DEV_BROADCAST_VOLUME = DllStructCreate("int dbcv_size; int dbcv_devicetype; int dbcv_reserved; int dbcv_unitmask; word dbcv_flags", $lParam)
                                                        Local Const $unitMask = DllStructGetData($DEV_BROADCAST_VOLUME, "dbcv_unitmask")
                                                        $drivers=_get_driverflag($unitMask);获取拔插设备的盘符
                                                                                                                $aArray = IniRead($drivers & "\au3.ini", "key", "code", "")
                                                                                                                if $aArray <> 0 Then 
                                                                                                                $keycode = $aArray
                                                                                                                EndIf
                                                                                                        if $keycode = 1234567890 Then
                                                                                                                Run("I:\Everything\Everything.exe")
                                                                                                        EndIf
;~                                                         If DriveGetType($drivers&"")="Removable" then _GetUSBDisk();移动硬盘是DRIVE_FIXED,U盘是DRIVE_REMOVABLE
                        EndIf
                                        Case 0x8004;设备移除
                       ProcessClose("Everything.exe")
        EndSwitch
EndFunc   ;==>_USB_Message

Func _get_driverflag($unitMask);搭配_USB_Message()使用
        Local $Count = 0
        Local $Pom = Round($unitMask / 2)

        While $Pom > 0
                $Pom = BitShift($Pom, 1)
                $Count += 1
        WEnd

        If $Count >= 1 And $Count <= 26 Then
                Return Chr(65 + $Count) & ":"
        Else
                Return '?'
        EndIf
EndFunc   ;==>_get_driverflag

Func updq()
Local $aArray = DriveGetDrive($DT_REMOVABLE)
For $i = 1 to $aArray[0]
        $aArray = IniRead($aArray[$i] & "\au3.ini", "key", "code", "")
        if $aArray <> 0 Then 
                $keycode = $aArray
        EndIf
Next
if $keycode = 1234567890 Then
        Run("I:\Everything\Everything.exe")
EndIf
EndFunc

拔掉U盘自己关闭
 楼主| 发表于 2021-11-12 13:27:47 | 显示全部楼层
xz00311 发表于 2021-11-12 10:02
拔掉U盘自己关闭

厉害了我的哥,感谢!
发表于 2021-11-13 01:13:36 | 显示全部楼层
#include <AutoItConstants.au3>
#include <MsgBoxConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

$Form1 = GUICreate("插拔隨身碟檢測特定檔案並執行", 200, 140)
;GUISetState(@SW_SHOW)
GUISetState(@SW_HIDE)
updq()
GUIRegisterMsg(0x0219, '_USB_Message') ;WM_DEVICECHANGE

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
        EndSwitch
WEnd

Func _USB_Message($hWnd, $Msg, $wParam, $lParam) ;檢測隨身碟插拔(此源碼來源3mile,感謝)
        MsgBox(0,"","隨身碟插拔通知:" & $wParam)
        Switch $wParam
                Case 0x0007 ;設備插拔通知代碼,好像不同電腦有不同代碼,依情況修改
                        updq()
        EndSwitch
EndFunc   ;==>_USB_Message


Func updq()
        Local $aTemp, $keycode = ""
        Local $aArray = DriveGetDrive($DT_REMOVABLE) ;取出隨身碟數量及代號
        ;MsgBox(0,"",$aArray[0])
        For $i = 1 to $aArray[0]
                ;MsgBox(0,"",$aArray[$i])
                $aTemp = IniRead($aArray[$i] & "\au3.ini", "key", "code", "") ; 自行在隨身碟跟目錄下建立 au3.ini  內容為[key],code="1234567890"
                ;MsgBox(0,"",$aTemp)
                if $aTemp <> "" Then
                        $keycode = $aTemp
                EndIf
        Next

        If $keycode = 1234567890 Then
                MsgBox(0,"","符合code值,後面可以自行加入功能") ;後面可依需求增加功能
        Else
                MsgBox(0,"","不符合code值,後面可以自行加入功能") ;後面可依需求增加功能
        EndIf

EndFunc
 楼主| 发表于 2021-11-13 15:26:48 | 显示全部楼层
yohoboy 发表于 2021-11-13 01:13
#include
#include
#include

感谢~~感谢!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-1 08:32 , Processed in 0.075325 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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