溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

易語言如何調(diào)用API函數(shù)監(jiān)視目錄與文件

發(fā)布時(shí)間:2021-06-16 16:10:04 來源:億速云 閱讀:329 作者:小新 欄目:編程語言

這篇文章主要介紹易語言如何調(diào)用API函數(shù)監(jiān)視目錄與文件,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

DLL命令表

.版本 2
.DLL命令 GetPrivateProfileInt, 整數(shù)型, , "GetPrivateProfileIntA"
  .參數(shù) lpAppName, 文本型
  .參數(shù) lpKeyName, 文本型
  .參數(shù) nDefault, 整數(shù)型
  .參數(shù) lpFileName, 文本型
.DLL命令 GetPrivateProfileString, 整數(shù)型, , "GetPrivateProfileStringA"
  .參數(shù) lpAppName, 文本型
  .參數(shù) lpKeyName, 文本型
  .參數(shù) lpDefault, 文本型
  .參數(shù) lpReturnedString, 文本型, 傳址
  .參數(shù) nSize, 整數(shù)型
  .參數(shù) lpFileName, 文本型
.DLL命令 TerminateThread, 整數(shù)型, , "TerminateThread"
  .參數(shù) hThread, 整數(shù)型
  .參數(shù) dwExitCode, 整數(shù)型
.DLL命令 CloseHandle, 整數(shù)型, , "CloseHandle"
  .參數(shù) Object, 整數(shù)型
.DLL命令 PostMessage, 整數(shù)型, , "PostMessageA"
  .參數(shù) hWnd, 整數(shù)型
  .參數(shù) Msg, 整數(shù)型
  .參數(shù) wParam, 整數(shù)型
  .參數(shù) lParam, 整數(shù)型
.DLL命令 RegisterHotKey, 整數(shù)型, , "RegisterHotKey"
  .參數(shù) hWnd, 整數(shù)型
  .參數(shù) id, 整數(shù)型
  .參數(shù) fsModifiers, 整數(shù)型
  .參數(shù) vk, 整數(shù)型
.DLL命令 CreateThread, 整數(shù)型, , "CreateThread"
  .參數(shù) SecurityAttributes, 整數(shù)型
  .參數(shù) StackSize, 整數(shù)型
  .參數(shù) StartFunction, 整數(shù)型
  .參數(shù) ThreadParameter, 整數(shù)型
  .參數(shù) CreationFlags, 整數(shù)型
  .參數(shù) ThreadId, 整數(shù)型, 傳址
.DLL命令 WideCharToMultiByte1, 整數(shù)型, "kernel32.dll", "WideCharToMultiByte"
  .參數(shù) CodePage, 整數(shù)型, , CodePage
  .參數(shù) dwFlags, 整數(shù)型, , dwFlags
  .參數(shù) lpWideCharStr, 字節(jié)集, , lpWideCharStr
  .參數(shù) cchWideChar, 整數(shù)型, , cchWideChar
  .參數(shù) lpMultiByteStr, 整數(shù)型, , lpMultiByteStr
  .參數(shù) cchMultiByte, 整數(shù)型, , cchMultiByte
  .參數(shù) lpDefaultChar, 整數(shù)型, , lpDefaultChar
  .參數(shù) lpUsedDefaultChar, 邏輯型, , lpUsedDefaultChar
.DLL命令 WideCharToMultiByte, , "kernel32.dll", "WideCharToMultiByte"
  .參數(shù) CodePage, 整數(shù)型, , CodePage
  .參數(shù) dwFlags, 整數(shù)型, , dwFlags
  .參數(shù) lpWideCharStr, 字節(jié)集, , lpWideCharStr
  .參數(shù) cchWideChar, 整數(shù)型, , cchWideChar
  .參數(shù) lpMultiByteStr, 字節(jié)集, , lpMultiByteStr
  .參數(shù) cchMultiByte, 整數(shù)型, , cchMultiByte
  .參數(shù) lpDefaultChar, 整數(shù)型, , lpDefaultChar
  .參數(shù) lpUsedDefaultChar, 邏輯型, , lpUsedDefaultChar
.DLL命令 CreateFile, 整數(shù)型, , "CreateFileA"
  .參數(shù) lpFileName, 文本型
  .參數(shù) dwDesiredAccess, 整數(shù)型
  .參數(shù) dwShareMode, 整數(shù)型
  .參數(shù) lpSecurityAttributes, 整數(shù)型
  .參數(shù) dwCreationDisposition, 整數(shù)型
  .參數(shù) dwFlagsAndAttributes, 整數(shù)型
  .參數(shù) hTemplateFile, 整數(shù)型
.DLL命令 ReadDirectoryChangesW, 邏輯型, , "ReadDirectoryChangesW"
  .參數(shù) hDirectory, 整數(shù)型
  .參數(shù) lpbuff, _FILE_NOTIFY_INFORMATION, 傳址
  .參數(shù) nBufferLength, 整數(shù)型
  .參數(shù) bWatchSubtree, 邏輯型
  .參數(shù) dwNotifyFilter, 整數(shù)型
  .參數(shù) lpBytesReturned, 整數(shù)型, 傳址
  .參數(shù) lpOverlapped, OVERLAPPED, 傳址
  .參數(shù) lpCompletionRoutine, 整數(shù)型
.DLL命令 WritePrivateProfileString, 整數(shù)型, , "WritePrivateProfileStringA"
  .參數(shù) lpAppName, 文本型
  .參數(shù) lpKeyName, 文本型
  .參數(shù) lpString, 文本型
  .參數(shù) lpFileName, 文本型

自定義數(shù)據(jù)類型表

.版本 2
.數(shù)據(jù)類型 OVERLAPPED
  .成員 ternal, 整數(shù)型
  .成員 ternalHigh, 整數(shù)型
  .成員 低32位, 整數(shù)型
  .成員 高32位, 整數(shù)型
  .成員 事件句柄, 整數(shù)型
.數(shù)據(jù)類型 _FILE_NOTIFY_INFORMATION
  .成員 NextEntryOffset, 整數(shù)型
  .成員 Action, 整數(shù)型
  .成員 FileNameLength, 整數(shù)型
  .成員 FileName, 字節(jié)型, , "1024"

常量數(shù)據(jù)表

.版本 2
.常量 WM_SYSCOMMAND, "274"
.常量 SC_MINIMIZE, "61472"
.常量 MOD_ALT, "1"
.常量 GENERIC_READ, "-2147483648"
.常量 GENERIC_WRITE, "1073741824"
.常量 FILE_SHARE_READ, "1"
.常量 FILE_SHARE_WRITE, "2"
.常量 FILE_SHARE_DELETE, "4"
.常量 FILE_FLAG_BACKUP_SEMANTICS, "33554432"
.常量 OPEN_EXISTING, "3"
.常量 FILE_NOTIFY_CHANGE_FILE_NAME, "1"
.常量 FILE_NOTIFY_CHANGE_DIR_NAME, "2"
.常量 FILE_NOTIFY_CHANGE_ATTRIBUTES, "4"
.常量 FILE_NOTIFY_CHANGE_SIZE, "8"
.常量 FILE_NOTIFY_CHANGE_LAST_WRITE, "16"
.常量 FILE_NOTIFY_CHANGE_LAST_ACCESS, "32"
.常量 FILE_NOTIFY_CHANGE_CREATION, "64"
.常量 FILE_NOTIFY_CHANGE_SECURITY, "256"
.常量 FILE_ACTION_ADDED, "1"
.常量 FILE_ACTION_REMOVED, "2"
.常量 FILE_ACTION_RENAMED_NEW_NAME, "5"
.常量 FILE_ACTION_RENAMED_OLD_NAME, "4"
.常量 FILE_ACTION_MODIFIED, "3"

監(jiān)視目錄與文件的代碼

.版本 2
.支持庫(kù) iext
.支持庫(kù) shell
.程序集 窗口程序集1
.程序集變量 m_bAddNew0, 整數(shù)型
.程序集變量 m_bDel0, 整數(shù)型
.程序集變量 m_bRename, 整數(shù)型
.程序集變量 m_bModify0, 整數(shù)型
.程序集變量 m_bOther0, 整數(shù)型
.程序集變量 m_strWatchedDir, 文本型
.程序集變量 m_hThread, 整數(shù)型
.程序集變量 hDir, 整數(shù)型
.程序集變量 m_bAlwaysOnTop, 整數(shù)型
.程序集變量 m_bAutoRun, 整數(shù)型
.程序集變量 m_bMinimized, 整數(shù)型
.程序集變量 m_bAutoStart, 整數(shù)型
.程序集變量 m_i, 整數(shù)型
.程序集變量 m_OVERLAPPED, OVERLAPPED
.子程序 __啟動(dòng)窗口_創(chuàng)建完畢
m_bAlwaysOnTop = GetPrivateProfileInt (“Settings”, “AlwaysOnTop”, 0, “.\\Settings.ini”)
m_bAutoRun = GetPrivateProfileInt (“Settings”, “AutoRun”, 0, “.\\Settings.ini”)
m_bMinimized = GetPrivateProfileInt (“Settings”, “Minimized”, 0, “.\\Settings.ini”)
m_bAutoStart = GetPrivateProfileInt (“Settings”, “AutoStart”, 0, “.\\Settings.ini”)
m_bAddNew0 = GetPrivateProfileInt (“Selections”, “m_bAddNew”, 0, “.\\Settings.ini”)
m_bDel0 = GetPrivateProfileInt (“Selections”, “m_bDel”, 0, “.\\Settings.ini”)
m_bRename = GetPrivateProfileInt (“Selections”, “m_bRename”, 0, “.\\Settings.ini”)
m_bModify0 = GetPrivateProfileInt (“Selections”, “m_bModify”, 0, “.\\Settings.ini”)
m_bOther0 = GetPrivateProfileInt (“Selections”, “m_bOther”, 0, “.\\Settings.ini”)
m_strWatchedDir = 取空白文本 (260)
GetPrivateProfileString (“Settings”, “監(jiān)視目錄”, “”, m_strWatchedDir, 260, “.\\Settings.ini”)
m_hThread = 0
hDir = -1
.如果真 (m_bAlwaysOnTop = 1)
  OnBtnAlwaysOnTop ()
.如果真結(jié)束
.如果真 (m_bMinimized = 1)
  PostMessage (取窗口句柄 (), #WM_SYSCOMMAND, #SC_MINIMIZE, 0)
.如果真結(jié)束
.如果真 (m_bAutoStart = 1)
  OnStart ()
.如果真結(jié)束
RegisterHotKey (取窗口句柄 (), 199, #MOD_ALT, #Z鍵)
IDC_STATE.標(biāo)題 = “你選擇的監(jiān)視目錄為:” + m_strWatchedDir
.子程序 __啟動(dòng)窗口_將被銷毀
.如果真 (m_hThread ≠ 0)
  TerminateThread (m_hThread, 0)
  m_hThread = 0
.如果真結(jié)束
.如果真 (hDir ≠ -1)
  CloseHandle (hDir)
  hDir = -1
.如果真結(jié)束
.子程序 ThreadProc, 整數(shù)型
.參數(shù) lparam, 整數(shù)型
.局部變量 pNotify, _FILE_NOTIFY_INFORMATION
.局部變量 dwBytesReturned, 整數(shù)型
.局部變量 str1, 文本型
.局部變量 temp, 字節(jié)集
hDir = CreateFile (m_strWatchedDir, 位或 (#GENERIC_READ, #GENERIC_WRITE), 位或 (#FILE_SHARE_READ, #FILE_SHARE_WRITE, #FILE_SHARE_DELETE), 0, #OPEN_EXISTING, #FILE_FLAG_BACKUP_SEMANTICS, 0)
.如果真 (hDir = -1)
  返回 (0)
.如果真結(jié)束
.判斷循環(huán)首 (真)
  .如果 (ReadDirectoryChangesW (hDir, pNotify, 1024, 真, 位或 (#FILE_NOTIFY_CHANGE_FILE_NAME, #FILE_NOTIFY_CHANGE_DIR_NAME, #FILE_NOTIFY_CHANGE_ATTRIBUTES, #FILE_NOTIFY_CHANGE_SIZE, #FILE_NOTIFY_CHANGE_LAST_WRITE, #FILE_NOTIFY_CHANGE_LAST_ACCESS, #FILE_NOTIFY_CHANGE_CREATION, #FILE_NOTIFY_CHANGE_SECURITY), dwBytesReturned, m_OVERLAPPED, 0))
    .如果 (pNotify.NextEntryOffset ≠ 0)
      temp = 字節(jié)數(shù)組轉(zhuǎn)字節(jié)集 (pNotify.FileName)
    .否則
      temp = 字節(jié)數(shù)組轉(zhuǎn)字節(jié)集 (pNotify.FileName)
    .如果結(jié)束
    str1 = Unicode轉(zhuǎn)Ansi (取字節(jié)集左邊 (temp, pNotify.FileNameLength))
    m_list.插入表項(xiàng) (-1, 到文本 (取小時(shí) (取現(xiàn)行時(shí)間 ())) + “:” + 到文本 (取分鐘 (取現(xiàn)行時(shí)間 ())) + “:” + 到文本 (取秒 (取現(xiàn)行時(shí)間 ())), , , , )
    m_list.置標(biāo)題 (m_list.取表項(xiàng)數(shù) () - 1, 2, m_strWatchedDir + str1)
    .判斷開始 (pNotify.Action = #FILE_ACTION_ADDED) ' 添加了新文件
      m_list.置標(biāo)題 (m_list.取表項(xiàng)數(shù) () - 1, 1, “添加了文件”)
    .判斷 (pNotify.Action = #FILE_ACTION_REMOVED) ' 刪除了文件
      m_list.置標(biāo)題 (m_list.取表項(xiàng)數(shù) () - 1, 1, “刪除了文件”)
    .判斷 (pNotify.Action = #FILE_ACTION_RENAMED_NEW_NAME) ' 重命名了文件
      m_list.置標(biāo)題 (m_list.取表項(xiàng)數(shù) () - 1, 1, “重命名了文件”)
    .判斷 (pNotify.Action = #FILE_ACTION_RENAMED_OLD_NAME) ' 重命名了文件
      m_list.置標(biāo)題 (m_list.取表項(xiàng)數(shù) () - 1, 1, “重命名了文件”)
    .判斷 (pNotify.Action = #FILE_ACTION_MODIFIED) ' 修改了文件
      m_list.置標(biāo)題 (m_list.取表項(xiàng)數(shù) () - 1, 1, “修改了文件”)
    .默認(rèn)
      m_list.置標(biāo)題 (m_list.取表項(xiàng)數(shù) () - 1, 1, “未知變化”) ' 未知變化
    .判斷結(jié)束
  .否則
    跳出循環(huán) ()
  .如果結(jié)束
.判斷循環(huán)尾 ()
返回 (0)
.子程序 Unicode轉(zhuǎn)Ansi, 文本型
.參數(shù) 參數(shù)_數(shù)據(jù), 字節(jié)集
.局部變量 局部_計(jì)數(shù), 整數(shù)型
.局部變量 局部_結(jié)果數(shù)據(jù), 字節(jié)集
.局部變量 局部_結(jié)果文本, 文本型
局部_計(jì)數(shù) = 取字節(jié)集長(zhǎng)度 (參數(shù)_數(shù)據(jù)) ÷ 2 ' 字符數(shù)目?jī)蓚€(gè)
局部_計(jì)數(shù) = WideCharToMultiByte1 (936, 512, 參數(shù)_數(shù)據(jù), 局部_計(jì)數(shù), 0, 0, 0, 假) ' 取轉(zhuǎn)換后的數(shù)目
局部_結(jié)果數(shù)據(jù) = 取空白字節(jié)集 (局部_計(jì)數(shù))
WideCharToMultiByte (936, 512, 參數(shù)_數(shù)據(jù), -1, 局部_結(jié)果數(shù)據(jù), 局部_計(jì)數(shù), 0, 假)
局部_結(jié)果文本 = 取字節(jié)集數(shù)據(jù) (局部_結(jié)果數(shù)據(jù), #文本型, )
返回 (局部_結(jié)果文本)
.子程序 字節(jié)數(shù)組轉(zhuǎn)字節(jié)集, 字節(jié)集
.參數(shù) 字節(jié)數(shù)組, 字節(jié)型, 數(shù)組
.局部變量 字節(jié)集, 字節(jié)集
.局部變量 N, 整數(shù)型
.計(jì)次循環(huán)首 (取數(shù)組成員數(shù) (字節(jié)數(shù)組), N)
  字節(jié)集 = 字節(jié)集 + 到字節(jié)集 (字節(jié)數(shù)組 [N])
.計(jì)次循環(huán)尾 ()
返回 (字節(jié)集)
.子程序 OnBtnAlwaysOnTop
.子程序 OnStart
StartWatch (m_strWatchedDir)
IDC_STOP.禁止 = 假
IDC_START.禁止 = 真
IDC_SELECT_DIR.禁止 = 真
IDC_STATE.標(biāo)題 = “正在監(jiān)視````” + m_strWatchedDir
.子程序 StartWatch, 邏輯型
.參數(shù) path, 文本型
.局部變量 ThreadId, 整數(shù)型
m_strWatchedDir = path
m_hThread = CreateThread (0, 0, 到整數(shù) (&ThreadProc), 0, 0, ThreadId)
.如果 (m_hThread = 0)
  返回 (假)
.否則
  返回 (真)
.如果結(jié)束
.子程序 _IDC_STOP_被單擊
.如果真 (m_hThread ≠ 0)
  TerminateThread (m_hThread, 0)
  m_hThread = 0
.如果真結(jié)束
.如果真 (hDir ≠ -1)
  CloseHandle (hDir)
  hDir = -1
.如果真結(jié)束
IDC_STOP.禁止 = 真
IDC_START.禁止 = 假
IDC_SELECT_DIR.禁止 = 假
.子程序 _IDC_CLEAR_被單擊
m_list.全部刪除 ()
.子程序 _IDC_SELECT_DIR_被單擊
m_strWatchedDir = 瀏覽文件夾 (“”, 假)
.如果真 (m_strWatchedDir = “”)
  m_strWatchedDir = “c:\”
  返回 ()
.如果真結(jié)束
WritePrivateProfileString (“settings”, “監(jiān)視目錄”, m_strWatchedDir, “.\\Settings.ini”)
IDC_STATE.標(biāo)題 = “你選擇了監(jiān)視:” + m_strWatchedDir
.子程序 _IDC_START_被單擊
OnStart ()
.子程序 _IDC_ABOUT_被單擊
信息框 (“Hello World”, 0, )

運(yùn)行結(jié)果:

易語言如何調(diào)用API函數(shù)監(jiān)視目錄與文件

以上是“易語言如何調(diào)用API函數(shù)監(jiān)視目錄與文件”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI