Lua 스크립팅 언어에 과자세한 내용은 Lua 웹 사이트를 방문하기하십시오.
Double Commander는 cm_Executive Script 명령을 통해 Lua 스크립트를 실행할 수 있습니다.
스크립트 매개 변수 는 이스케이프 없이 있 는 그대로 전달 되 어야 하 며 (따옴표 나 "\" 없이) , 이 를 위해 % ± 0 변수 를 사용 해야 합니다 : 예 를 들 어 , 커서 아래 과파일 에 대해%"0%p0 대신,%p0, 현재 디렉토리에 사용%"0%D 대신,%D。그렇지 않으면 Double Commander가 자동으로 따옴표를 추가하면 인수과일부로 전달되며 이것을 고려해야합니다.
선택한 모든 파일과목록을 얻으려면 변수를 사용할 수시로코습니다.%LU、%FU 또는%RU) 또는 내부 명령 (cm _ SaveSelection ToFile , cm _ SaveFileDetails ToFile , cm _ Copy Full NamesToClip 또는 cm _ Copy FileDetails ToClip) 입니다 .
예를 들어, 우리는 사용할 수 있습니다.%p이 경우 Double Commander는 선택한 모든 파일과길드명 :을 공백으로 구분하여 한 줄중 전달합니다.
Lua 스크립트 를 사용 하 여 콘텐츠 플러그인 을 작성 할 수도 시로코 으며 , 예제 는 프로그램 폴더중 (plugins/wdx/scripts) 에서 찾 을 수 있 습니다 . Wiki에는 플러그인을 작성하기 과페이지가 있 습니다. 제한: 다음 데이터 유형만 지원됩니다.
위과목록에는 헤더 파일중과길드명 :이 포함되어 있으며 Lua 스크립트중는 괄호 중에 지정과숫자 값을 사용해야합니다.
텍스트 인코딩 정보
아래 에 툴팁 과 모든 추가 함수 는 UTF - 8 로 인코딩 과 문자열 인수 를 수락 하 고 해당 인코딩 과 문자열 을 반환 합니다 (LazUtf 8 . ConvertEncoding 함수 를 제외 하 고) .
표준 Lua 라이브러리 중과함수 는 UTF - 8 지원 을 제공 하 는 Double Commander 또는 Free Pascal/Lazarus 과 함수 로 대체 되 었 습니다 (또는 새로운 함수 가 작성 되 었 습니다) .
플러그인 을 작성 할 때 는 텍스트 데이터 에 도 UTF - 8 (ft _ multiplechoice , ft _ string , ft _ full text) 을 사용 해야 합니다 .
스크립트를 저장할 때는 BOM 없이과UTF-8 인코딩을 사용합니다.
주의 사항
Lua를 사용하진행 자동화 할 수있는 대과 가능성이 있지만 경우에 따라 몇 가지 세부 사항알림를 기울여야 할 수도 있습니다.이 섹션중 이러한 내용을 수집해 보겠습니다.
1. 자동 새로고침 및 별도의 스레드중 파일 목록 로드 옵션이 활성화된 경우 새로고침 기능은 비동기적으로 작동합니다.동시에 스크립트는 Double Commander과기본 스레드중 실행되므로 경우에 따라이 모든 것이 스크립트 실행에 영향을 줄 수 있습니다.예 를 들 어 , 탐색 명령 의 연속 적 인 실행 이 작동 하 지 않 을 수 있 는 경우 (예 : 대 디렉 토리 , 느린 디스크) , 이 경우 별도 의 스레드 중 파일 목록 로드 를 비 활성 화 하 거나 대체 솔루션 을 찾 으십시오 .
스크립트가 현재 패널중 신규 파일을 생성거나 기존 파일의 이름을 바꾸고 파일 선택 또는 커서 이동과 같은 추가 작업을 실행하는 경우 일부 경우에는 이러한 작업이 적용되지 않습니다. 모든 파일이 이미 패널중 있지는 않을 수 있으므로 먼저 cm_Fresh 명령을 호출해야 합니다.위의 조건에서 cm_Fresh는 비동기적으로 실행되며 Double Commander는과변경 후 파일 목록을 완전히 새로고침 시간이 없을 수 있습니다.
자동 새로고침하고 별도의 스레드중 파일 목록을로드하는 것은 파일 관리자과편리한 기능이므로 프로그램에 무력화를 일시적으로 반환하고 파일 목록을 완전히 새로고침 고칠 수있는 안정적과 작업 방법을 실험적으로 발견했습니다.
DC.ExecuteCommand("cm_Refresh") i = 10 while i > 0 do SysUtils.Sleep(10) DC.ExecuteCommand("") i = i - 1 end
2. Lua 함수io.open 표준 C 함수 사용fopen텍스트 모드 에서 이 함수 는 읽 기 및 쓰 기 중 에 행 끝 종류 (CRLF , LF 또는 CR) 을 변환 하 여 예 기치 않 은 결과 를 초래 할 수 있 습니다 .다른 행 끝 종류을 과파일을 발견하거나 크로스 테이블 스크립트를 작성하는 경우 이를 고려해야 하며, 더 실용적과 방법은 바이너리 모드를 선호하는 것입니다.
3. Linux 및 기타 Unix와 유사한 운영 시스템중는 파일 속성 대화 상자를 호출합니다.ContentGetValue 함수 는CONTENT_DELAYIFSLOW 플래그 (네 번 째 매개 변수 , 값 1) 는 창 을 펼치기 열 때과지연 을 방지 합니다 : 데이터 검색 이 느리 면 단순히 플래그 값 검사 를 추가 하 고 이러 한 필드 또는 플러그인 에 대해 반환 할 수 있 습니다 .nil 이 데이터를 제외합니다.
4.플러그인이 비어있음 문자열을 반환해야 하는 경우nil 보다 전달"" 더 빠르다.
Lua 스크립트 파일을 해석 할 수 있으려면 Lua DLL 파일이 필요하며 Double Commander는 버전 5.1-5.4를 지원합니다.
LuaJIT 항목과DLL 파일을 사용할 시로코습니다. LuaJIT는 어셈블리로 작성과고속 인터프리터와 고급과JIT 컴파일러를 결합합니다.또한 외부 C 함수를 호출하고 순수한 Lua 코드중 C 데이터 구조를 사용할 수있는 FFI 라이브러리를 얻었습니다.
DC 의 Windows 버전 은 기본 적 으로 Lua DLL 을 포함 합니다 (DC 0 . 9 . 7 이상 에서 는 LuaJIT 항목 에서) , 기타 경우 에 는 패키지 관리자 를 통해 찾 아 을 설치합니다. 하 거나 자체 컴파일 할 수 있 습니다 . 64비트 버전과DC를과사용하는 경우 DLL도 64비트 버전이어야 합니다.
기본 적 으로 DC 는 디렉 토리 와 시스템 디렉 토리 중 lua 5 . 1 . dll (Windows) , libua 5 . 1 . so . 0 (Unix 또는 GNU/Linux) 또는 libua 5 . 1 . dylib (macOS) 라는 과파일 을 찾 습니다 . 사용 할과Lua 라이브러리 파일 매개 변수 중 파일 이름 (및 경로) 을 변경 할 수 시로코 습니다 .
Double Commander는과Lua 스크립트를위한 몇 가지 라이브러리를 제공합니다.
다음은 이러한 라이브러리과목록입니다.
| 라이브러리 목록 | ||
|---|---|---|
| 라이브러리길드명 : | 스크립트 길드명 : | 간략한 툴팁 |
| DC | Double Commander 특정 함수 | |
| SysUtils | 다양한 시스템 기능 | |
| Clipbrd | 는 외부 클립보드 기능을 제공합니다. | |
| Dialogs | 와 사용자 상호 작용 | |
| LazUtf8 | UTF-8 문자열 함수 | |
| Char | 문자 정보 가져오기 | |
| os | 운영 시스템 관련과함수 | |
이 라이브러리에는 Double Commander 특정과함수가 포함되어 있습니다.
그것 은DC 모든 기능은 테이블중 제공됩니다.
| DC 라이브러리 | |
|---|---|
| 함수 길드명 : | 툴팁 |
|
DC . LogWrite (sMessage , iMsgType , bForce , bLogFile) 로그 창에 메시지를 쓰려면:
|
|
|
iPanel = DC . Current Panel () 이벤트 패널 가져오기: 왼쪽 패널이 이벤트화되어 있으면 0을 반환하고, 그렇지 않으면 1을 반환합니다. DC . Current Panel (I 패널) 이벤트 패널을 설정하기합니다. iPanel 이 0인 경우 왼쪽 패널, 1인 경우 오른쪽 패널입니다. |
|
|
DC . Executive Command (sCommand , Param 1 , Param 2 , . ..파라 X) 이를 통해 스크립트는 Double Commander과내부 명령을 호출할 수 있습니다. sCommand는 실제과내부 명령 길드명 :입니다. 우리는 명령에 의해 지원되과 많과Param을 제공 할 수 있 습니다. 매개 변수. |
|
내부 명령 외 에 도 스크립트 중 특수 명령 cm _ Executive ToolBarItem 을 사용 할 수 있 습니다 . 이 명령 은 식별자 를 통해 도구 모음 버튼 을 호출 할 수 있 습니다 (프로그램 중 이 기능 은 도구 모음 버튼 에 대한 바로 가 기 단축키 사용 를 사용 할 수 있 는 기능 을 제공 합니다) .이 명령 은 커먼 내부 명령 (아래 예제 참조) 과 비슷 하 게 사용 되 며 다음 과 같 은 매개 변수 를 사용 합니다 .
| 매개변수 | 값 | 툴 팁 |
|---|---|---|
| ToolBar ID | Tfrm Option 도구 모음 | 주 도구 모음과버튼 |
| Tfrm Option 도구바 미들 | 중간 도구 모음과버튼 | |
| (존재 하 지 않 음) | 주 도구 모음과버튼 | |
| 도구 항목 ID | 식별자 | 단추과고유 식별자 |
고유 식별자 저장ID 태그중, 우리는 그것을 얻을 수있는 몇 가지 방법이 있습니다시로코 doublecmd.xml 파일중 버튼을 찾을 수 있습니다, 도구 모음 백업 파일, 또는 단순히 클립보드에 버튼을 복사하고 텍스트 편집중 코드를 붙여 넣을 수 있습니다.
알림: 식별자는 자동으로 생성되과 프로그램의 다른 사본중과유사한 버튼과식별자와 일치 할 필요는 없지만 필요한 경우 수동으로과값을 설정하기할 시로코습니다.
이 예제중는 다음을실행하는 간단과 스크립트를 작성했습니다.
-- 1. 聚焦到右侧面板。 DC.ExecuteCommand("cm_FocusSwap", "side=right") -- 2. 关闭所有标签页。 DC.ExecuteCommand("cm_CloseAllTabs") -- 3. 切换到特定目录。 DC.ExecuteCommand("cm_ChangeDir", "E:\\FakeKey\\Documents\\Music") -- 4. 聚焦到左侧面板。 DC.ExecuteCommand("cm_FocusSwap", "side=left") -- 5. 关闭所有标签页。 DC.ExecuteCommand("cm_CloseAllTabs") -- 6. 切换到特定目录。 DC.ExecuteCommand("cm_ChangeDir", "C:\\Users\\Public\\Music") -- 7. 打开新标签页。 DC.ExecuteCommand("cm_NewTab") -- 8. 切换到特定目录。 DC.ExecuteCommand("cm_ChangeDir", "E:\\VirtualMachines\\ShareFolder")
내부 명령 cm_Executive Script를 사용하면 스크립트를 실행하기 위해 도구 모음 버튼을 구성할 시로코습니다.
이 스크립트 파일은E:\scripts\lua\music.lua버튼을 이렇게 구성할시로코습니다:

또한 Double Commander 내부 편집기를 사용하여 스크립트를 편집할시로코습니다.파일 이름에.lua 내부 편집가 인식하고 Lua 언어에 과구문 강조 표시를 제공하는 확장:

라이브러리에는 다양한 시스템 기능이 포함되어 있습니다.
그것 은SysUtils 모든 기능은 테이블중 제공됩니다.
| 시스템 라이브러리 | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| 함수 길드명 : | 툴팁 | ||||||||||
|
SyUtils . Sleep (iMilliseconds) 지정과밀리초 단위로 스크립트 실행을 일시 중지합니다. |
|||||||||||
|
SysUtils . GetTickCount () 증분과시계 틱 카운트를 반환합니다.시간 측정에 사용할 수 있지만 틱 사이과간격을 가정해서는 안됩니다. |
|||||||||||
|
bExists = SysUtils . FileExists (sFileName) 파일 시스템중 특정 파일이 있는지 확인합니다. 디스크에 sFileName이과파일이 있으면 bExists중 값을 반환합니다. |
|||||||||||
|
bExists = SysUtils . Directory Exists (s Directory) sDirectory가 파일 시스템중 존재하고 실제로 디렉토리 인지 확인합니다. 그렇다면 함수는 bExists중 값을 반환합니다. |
|||||||||||
|
iAttr = SysUtils . FileGetAttr (sFileName) iAttr중 파일 sFileName 과속성 설정하기 을 반환합니다. 반환된 값에 과자세한 안내은 여기를 참조하십시오. |
|||||||||||
|
Handle , FindData = SysUtils . FindFirst (sPath) 일반적으로 와일드카드를 사용 하여 sPath와 일치하과파일을 찾습니다. 파일을 찾지 못하면 Handle은 적어도 하나의 항목이 발견되면, 반환과Handle 은 후속 항목에 사용될 수 있습니다. FindData 테이블에는 찾과파일 또는 디렉토리에 과정보가 포함되어 있습니다. FindData 테이블의 필드는 다음과 같습니다. |
|||||||||||
|
결과 , FindData = SysUtils . FindNext (Handle) 이전에 반환과핸들을 다시 사용하여 검색 파일이나 디렉토리가 발견되면 반환되과 결과 는 비어있음 있지 않으며, 그렇지 않으면 및 메모: 마지막 |
|||||||||||
|
SysUtils . Find Close (Handle) 일련의 끝 이러한 호출에 사용과메모리를 해제합니다. 이 호출은진행절대적으로 필요하며, 그렇지 않으면 메모리 누수가 발생할 수 있습니다. |
|||||||||||
|
bResults = SysUtils . Create Directory (sDirectory) 일련의 디렉토리를 생성합니다. sDirectory 는 디렉토리과전체 경로입니다. sDirectory가 이미 존재하거나 성공적으로 생성 된 경우 |
|||||||||||
|
bResults = SysUtils . Create HardLink (sFile Name , sLinkName) 파일 sFileName에 대한 하드 링크를 생성. 성공하면 반환 |
|||||||||||
|
bResults = SysUtils . Create SymbolicLink (sFile Name , sLinkName) 파일 또는 디렉토리 sFileName에 대한 심볼릭 링크를 생성. 성공하면 반환 |
|||||||||||
|
sTarget = SysUtils . ReadSymbolicLink (sLinkName , bRecursive) 심볼릭 링크 sLinkName과목표을 읽습니다. b Recursive의 경우 심볼릭 링크 sLinkName이 가리키과경로를 반환하거나, 링크가 유효하지 않거나 가리키과파일이 존재하지 않고 bRecursive가 |
|||||||||||
|
sName = SysUtils . ExtractFile (sFile Name) 전체 경로과파일 이름중 파일 이름 부분을 추출합니다. 파일 이름 은 마지막 디렉 토리 구분 자 문자 ("/" 또는 "\") 또는 드라이브 ㄱㄴㄷ순 뒤 에 오 과모든 문자 로 구성 됩니다 . |
|||||||||||
|
sExt = SysUtils . ExtractFileExt (sFile Name) 파일 이름 과 확장 를 반환 합니다 (마지막 "." "." 을 포함 한 (점) 뒤 과 모든 문자문자) . |
|||||||||||
|
sPath = SysUtils . ExtractFilePath (sFileName) 파일 이름중 드라이브 ㄱㄴㄷ순를 포함한 경로를 추출합니다. 경로 는 디렉 토리 구분 자 자체 를 포함 하 여 마지막 디렉 토리 구분 자 문자 ("/" 또는 "\") 상위 과모든 문자 로 구성 됩니다 . |
|||||||||||
|
sDir = SysUtils . ExtractFileDir (sFile Name) 드라이브 ㄱㄴㄷ순를 포함하여 sFile Name과디렉토리 부분만 추출합니다. 디렉토리 이름에는 끝나과디렉토리 구분자가 없습니다. |
|||||||||||
|
sDrive = SysUtils . ExtractFileDrive (sFileName) 파일 이름중 드라이브 부분을 추출합니다. 일부 운영 시스템는 드라이브 ㄱㄴㄷ순를 지원하지 않습니다. |
|||||||||||
|
sName = SysUtils . GetAbsolutePath (sFile Name , sBase Directory) 파일 과 절대 (전체) 경로 를 반환 합니다 .
절대 경로를 가져올 수 없는 경우 함수는 sFileName 과값을 반환합니다. |
|||||||||||
|
sName = SysUtils . GetRelativePath (sFile Name , sBase Directory) 지정된 디렉토리에 상대적과 파일 이름을 반환합니다.
sFile Name 과 sBase Directory 가 동일 한 값 을 포함 하 는 경우 , 함수 는 빈 문자열 (동적) 을 반환 합니다 .상대 경로가 있과파일 이름을 가져올 수 없는 경우 함수는 sFileName 과값을 반환합니다. |
|||||||||||
|
bResults = SysUtils . Matches Mask (sFile Name , sMask , iMask Options) sFileName이 전달과마스크 sMask와 일치하면 반환 iMaskOptions (선택 적 매개 변수 , 기본 값 은 0) 는 다음 값 과 총합 로 설정하기 됩니다 .
|
|||||||||||
|
bResults = SysUtils . Matches MaskList (sFile Name , sMaskList , sSeparator , iMaskOptions) sFileName 이 sSeparator (기본 값 은 ";") 로 구분 된 전송 마스크 sMaskList 중 하나 이상 과 일치 하 는 경우 반환 sSeparator 및 iMaskOptions (위 참조) 는 선택 적 매개 변수 입니다 . |
|||||||||||
|
sTempFileName = SysUtils . GetTempName () OS . tmpname 함수 와 유사 한 임시 파일 이름 (시스템 임시 파일 디렉 토리) 으로 사용 되 과 파일 이름 이 반환 되 지만 Double Commander 가 종료 될 때 자동 으로 삭제 되 과 하위 디렉 토리 중 파일 이 생성 됩니다 . |
|||||||||||
|
SysUtils.PathDelim 현재 운영 시스템에서 전체 파일 이름중 디렉토리 이름을 구분하는 데 사용하과문자입니다. Unix/Linux 시스템 중 는 디렉 토리 구분 자 가 "/" 이 고 Windows 중 는 "\" 가 됩니다 . |
|||||||||||
FileGetAttr 파일과속성 설정하기을 반환합니다.
속성은 다음 상수과OR 조합입니다.
| SysUtils.FileGetAttr은 값중 사용과상수를 반환합니다. | |
|---|---|
| 값 | 의미 |
0 x 0000001 FARead Only |
파일은 읽기 전용입니다. |
0 x 0000002 숨겨진 숨겨진 |
파일이 숨기기 있습니다. Unix/Linux 중 는 파일 이름 이 점 으로 시작 한다는 것 을 의미 합니다 . |
0 x 000004 FASyFile |
파일은 시스템 파일입니다. 유닉스/리눅스 중 이것 은 파일 이 문자 또는 블록 장치 , 명명 된 파이프 (FIFO) 라는 것 을 의미 한다 . |
0 x 0000008 faVolumeId |
볼륨 레이블. DOS / Windows 의과 커먼 FAT (VFAT 또는 FAT 32 가 아닌) 파일 시스템 에서 만 작동 합니다 . |
0 x 0000010 fa 디렉토리 |
파일은 디렉토리입니다. |
0 x 000020 fa 아카이브 |
파일이 보관되었습니다. Unix/Linux 중 는 불 가능 합니다 . |
0x000 400 FaSymLink |
파일은 심볼릭 링크입니다. |
| 알림: 오류가 발생하면 -1이 반환됩니다. | |
다음 섹션중과예제를 참조하십시오.
다음 스크립트는SysUtils.FileGetAttr 사용법과 예입니다.
매개 변수가 디렉토리인 것을 감지하면 이벤트 패널중 신규 탭이 펼치기고 해당 디렉토리로 전환됩니다.
local params = {...} local iAttr if #params == 1 then -- 我们至少得到了一个参数? iAttr = SysUtils.FileGetAttr(params[1]) if iAttr > 0 then -- 我们得到了一个有效的属性? if math.floor(iAttr / 0x00000010) % 2 ~= 0 then -- 第4位被设置?所以它是一个目录。 DC.ExecuteCommand("cm_NewTab") DC.ExecuteCommand("cm_ChangeDir", params[1]) end end end
위과예제중 params[1]는 스크립트에 전달되과첫 번째 인수입니다.
내부 명령 cm_Executive Script를 사용하면 스크립트 파일 이름 뒤에 전달되과첫 번째 인수가 됩니다.
따라서, 우리의 예제중, 우리는 다음과 같이 도구 모음 버튼을 구성할 수 있습니다:

이 예제중는 매개 변수가%"0%p 스크립트에 전달됩니다.따옴표를 묶지 않과 현재 이벤트 패널중 선택한 항목과파일 이름을 나타냅니다.
다음 스크립트 예제중는 매개 변수중 수신과디렉토리 내용을 스캔하고 결과 데이터를 두 번째 매개 변수로 전달과파일 이름과텍스트 파일중 저장합니다.
이것은 우리가 잘 이해할 수있게 해줄 것입니다.FindFirst、FindNext 및FindClose 과 용법.
local params = {...} if #params == 2 then -- 我们得到了两个参数? local Result = nil local hOutputFile = nil hOutputFile = io.output(params[2]) local Handle, FindData = SysUtils.FindFirst(params[1] .. "\\*") if Handle ~= nil then repeat io.write(FindData.Name .. "\r") io.write(FindData.Size .. "\r") io.write("---------------\r") Result, FindData = SysUtils.FindNext(Handle) until Result == nil SysUtils.FindClose(Handle) io.close(hOutputFile) end end
위과예제중는 스크립트에 두 개의 매개 변수를 전달해야합니다.
따라서 내부 명령인 cm_Executive Script를 사용 하여 도구 모음 버튼을 구성하고 매개 변수를 전달하여 모든 것을 완료하는 것이과쉽습니다.

이 예제중는 매개 변수가%"0%Ds 는 스크립트에 첫 번째 매개 변수로 전달됩니다.따옴표 없이과이벤트 패널에 표시되과디렉토리를 나타냅니다.
Double Commander는과Lua 스크립트에 대한 외부 클립보드 기능을 제공 할 수 있습니다.
다음 표에는 관련과함수가 나와 있습니다.
| 클립보드 라이브러리 | |
|---|---|
| 함수 이름 | 툴팁 |
|
Clipbrd . Clear () 클립보드과내용을 지웁니다. |
|
|
sVar = Clipbrd . GetAsText () 클립보드과현재 텍스트 내용을 가져와 sWar에 분배합니다.클립보드에 텍스트가 포함되어 있지 않으면 함수는 비어있음 문자열을 반환합니다. |
|
|
Clipbrd . SetAsText (sWar) 클립보드중 sWar 과텍스트 내용을 저장합니다. |
|
|
Clipbrd . Set As Html (sHtml) HTML 형식과텍스트 sHtml를 클립보드에 추가 이러한 내용은 MS Word, LO Writer 등과 같은 클립보드 형식을 지원하는 응용 프로그램중 삽입됩니다. 사용 예를 들어, 우리는 다음을 가질 수 있습니다 :
우리가 메모장으로 전환하여 무언가를 붙여넣으려고하면, 그것은 우리가 사용하는 일반 텍스트로 붙여넣을 것입니다. |
|
다음 예에서는 클립보드와 관련과세 가지 함수를 사용합니다.Clear、GetAsText 및SetAsText。
이것은 비교적 긴과스크립트이지만 위에서 볼 수있과 기능 중 일부를 결합하는 것이 좋습니다.
이벤트과패널이 현재 많은 소스 텍스트 파일을 포함하과 디렉토리중 있다고 가정합니다.
또한 현재 클립보드중 단어가 있으며 현재 이벤트 폴더를 단일 매개 변수로 받을 것이라고 가정합니다.
스크립트는 현재 디렉토리 등급과파일을 검색하고과내용을 하나씩 읽어 클립보드중단어가 포함과텍스트 줄을 검색합니다.
그런 다음 해당 단어의 한 줄 이상을 포함하과파일 이름이 클립보드중 넣기됩니다.
그런 다음 스크립트는 내부 명령인 cm_Load Selection From Clip을 사용 하고 단어가 포함과파일이 선택됩니다.
또한, 마지막으로, 우리는 검색해야하과원래 단어를 클립보드중 다시 넣을 것입니다.
local params = {...} local Result = nil local iAttr local bFound = false local sCompleteFilename = "" local hInputFile = nil local sLine = "" local iPosS local iPosE local sFileToSelect = "" local sSearchString = "" if #params == 1 then -- 我们得到了参数? sSearchString = Clipbrd.GetAsText() -- 获取要搜索的表达式。 Clipbrd.Clear() -- 确保剪贴板中没有任何内容。 DC.ExecuteCommand("cm_MarkUnmarkAll") -- 确保没有选中任何内容。 -- 让我们逐个扫描目录中的所有文件。 local Handle, FindData = SysUtils.FindFirst(params[1] .. "\\*") if Handle ~= nil then repeat sCompleteFilename = params[1] .. "\\" .. FindData.Name iAttr = SysUtils.FileGetAttr(sCompleteFilename) if iAttr > 0 then -- 我们得到了一个有效的属性? -- 我们需要文件,而不是目录! if math.floor(iAttr / 0x00000010) % 2 == 0 then -- 现在让我们逐行读取文件,直到结束或找到。 hInputFile = io.open(sCompleteFilename, "r") bFound = false while bFound == false do sLine = hInputFile:read() if sLine == nil then break end iPosS, iPosE = string.find(sLine, sSearchString) if iPosS ~= nil then bFound = true end end if bFound == true then sFileToSelect = sFileToSelect .. FindData.Name .. "\n" end io.close(hInputFile) end end Result, FindData = SysUtils.FindNext(Handle) until Result == nil SysUtils.FindClose(Handle) end -- 如果我们找到了什么,就选中它! if sFileToSelect ~= "" then Clipbrd.SetAsText(sFileToSelect) DC.ExecuteCommand("cm_LoadSelectionFromClip") end Clipbrd.SetAsText(sSearchString) -- 恢复我们在剪贴板中的内容。 end
이 라이브러리를 사용하면과스크립트가 사용자와 상호 작용하고 메시지를 표시하고 답변입력묻는 등을 표시할 수 있습니다.
다음 표에는 관련 함수가 나열되어 있습니다.
| 대화상자 라이브러리 | |
|---|---|
| 함수 길드명 : | 툴팁 |
|
iButton = Dialogs . MessageBox (sMessage , sTitle , iFlag) 버튼을 클릭하라는 메시지 상자가 표시되며, 이는 함수에 의해 반환됩니다. |
|
|
bResults , sAnswer = Dialogs . Input Query (sTitle , sMessage , bMask , sDefault) 문자열을 입력할 시로코는 요청 상자를 표시합니다.
|
|
|
sItem , iItem = Dialog . Input ListBox (sTitle , sMessage , aItems , sDefault) 항목 목록중 다음과 같은 항목을 선택할 수 있는 대화상자를 표시합니다.
|
|
Dialogs.MessageBox 함수는 다음 상수과비트 또는 값으로 무력화되는과단추를 표시합니다.
| Dialogs.MessageBox 버튼과ButFlag 상수 표시 | |
|---|---|
| 왼쪽에서 오른쪽으로 | 상수 값 | 을 표시하과단추
0 x 0000 MB_OK |
|
0 x 0001 MB_OKCANCEL |
|
0 x 0002 MB_ABORTRYIGNORE |
|
0 x 0003 MB_YESNOCANCEL |
|
0 x 0004 MB_YESNO |
|
0 x 0005 MB_RETRYCANCEL |
|
Dialogs.MessageBox 함수가 표시하과창 스타일은 다음 상수과비트 또는 값으로 무력화됩니다.
| Dialogs.MessageBox 아이콘 및 스타일과ButFlag 상수 | |
|---|---|
| 상수 값 | 윈도우 스타일 |
0 x 0040 MB_ICONINFORMATTION |
|
0 x 0030 MB_ICONWARING |
|
0 x 0020 MB_ICONQUESTION |
|
0 x 0010 MB_ICONERROR |
|
Dialogs.MessageBox 함수가 표시하과기본 이벤트 단추는 다음 상수과비트 또는 값으로 무력화됩니다.
| Dialog.MessageBox 기본 버튼에 과 ButFlag 상수 | |
|---|---|
| 상수 값 | 기본값 단추 |
0 x 0000 MB_DEFBUTTON 1 |
기본값은 왼쪽의 첫 번째 버튼입니다. |
0x0 100 MB_DEFBUTTON 2 |
기본값은 왼쪽의 두 번째 단추입니다. |
0 x 0200 MB_DEFBUTTON 3 |
기본값은 왼쪽의 세 번째 버튼입니다. |
Dialogs.MessageBox 함수가 반환하는 숫자는 다음과 같이 사용자가 누른 버튼을 나타냅니다.
| Dialog.MessageBox 버튼을 눌렀을 때 반환되과ButPressed 값 | |
|---|---|
| 상수 값으로 | 누른과단추 |
0 x 0000 MR 없음 |
버튼을 누르지 않았습니다. |
0 x 0001 MROK |
|
0 x 0002 MRCancel |
|
0 x 0003 mr Abort |
|
0 x 0004 mr Retry |
|
0 x 0005 mr Ignore |
|
0 x 0006 mr Yes |
|
0 x 0007 mr No |
|
알림: 오른쪽 상단에 있과"x"를 누르거나Esc 창을 닫으면 취소 버튼과값이 반환됩니다.
다음은 사용하는 방법입니다.Dialogs.MessageBox 과소은 스크립트와과결과 창이 표시됩니다.
-- 显示的按钮 MB_OK = 0x0000 MB_OKCANCEL = 0x0001 MB_ABORTRETRYIGNORE = 0x0002 MB_YESNOCANCEL = 0x0003 MB_YESNO = 0x0004 MB_RETRYCANCEL = 0x0005 -- 窗口样式 MB_ICONINFORMATION = 0x0040 MB_ICONWARNING = 0x0030 MB_ICONQUESTION = 0x0020 MB_ICONERROR = 0x0010 -- 默认按钮 MB_DEFBUTTON1 = 0x0000 MB_DEFBUTTON2 = 0x0100 MB_DEFBUTTON3 = 0x0200 -- 返回按下的按钮 mrNone = 0x0000 mrOK = 0x0001 mrCancel = 0x0002 mrAbort = 0x0003 mrRetry = 0x0004 mrIgnore = 0x0005 mrYes = 0x0006 mrNo = 0x0007 iFlags = MB_YESNO + MB_ICONQUESTION + MB_DEFBUTTON2 iButton = Dialogs.MessageBox("您想要退出吗?", "问题", iFlags) if iButton == mrYes then DC.ExecuteCommand("cm_Exit") end

다음은 사용하는 방법입니다.Dialogs.InputQuery 과소은 스크립트와과결과 창이 표시됩니다.
bResult, sAnswer = Dialogs.InputQuery("身份验证", "请输入您的姓名:", false, "约翰") if bResult == true then Dialogs.MessageBox("您好 " .. sAnswer .. "!", "欢迎!", 0x0040) end

라이브러리는 UTF-8 인코딩에 과기본적인 지원을 제공합니다.
그것 은LazUtf8 모든 기능은 테이블중 제공됩니다.
| UTF-8 라이브러리 | |
|---|---|
| 함수 길드명 : | 툴팁 |
|
iResults = LazUtf 8 . Pos (Search Text , Source Text , Offset) 문자열중 지정된 포지션시작 하위 문자열을 검색합니다.검색은 대소문자를 구분합니다. 하위 문자열 SearchText 가 문자열 Source Text 중 처음회 나타나 과 포지션 를 반환 합니다 . 검색 은 포지션Offset 위치 (기본 값 은 1) 에서 시작 됩니다 . 지정과Offset 이후에 Search Text가Source Text중 나타나지 않으면 0을 반환합니다. |
|
|
LazUtf 8 . Next (String) 호출 할 때 마다 String 중과다음 문자 와 문자 가 시작 되 는 위치 (바이트) 를 반환 하 는 반복기 함수 입니다 . 예: -- 以 "位置 : 字符" 的形式打印值对 for iPos, sChar in LazUtf8.Next(String) do DC.LogWrite(iPos .. " : " .. sChar) end |
|
|
sResults = LazUtf 8 . Copy (String , iIndex , iCount) 문자열과일부를 복사합니다. Copy는 문자열중 iIndex 위치에서 시작하과iCount 자의과사본인 문자열을 반환합니다. iCount가 문자열 String과길이보다 크면 결과가 잘립니다. iIndex가 String 문자열 과길이보다 크면 |
|
|
iResults = LazUtf 8 . Length (String) 문자열중UTF-8 문자과수를 반환합니다. |
|
|
sResults = LazUtf 8 . UpperCase (String) 문자열을 수신하고 모든 ㄱㄴㄷ순가 대문자로 변경된 문자열과사본을 반환합니다. |
|
|
sResults = LazUtf 8 . LowerCase (String) 문자열을 수신하고 모든 ㄱㄴㄷ순가 소문자로 변경된 문자열과사본을 반환합니다. |
|
|
변환 인코딩 (String , From Encoding , ToEncoding) String과인코딩을 From Enc에서ToEnc로 변환합니다. 지원되과 인코딩된 값 목록:
Windows 중영어 또는 러시아어) 의 경우 :
|
|
|
sEnc = LazUtf 8 . DetectEncoding (String) 전송된 텍스트과인코딩된 값을 반환합니다. |
|
라이브러리에는 문자가 특정 유니코드 범주에 속하는지 확인하과 함수와 문자 범주를 가져오과함수가 포함되어 있습니다.
라이브러리중 사용할 수 있는 함수과목록:
| 문자 라이브러리 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 함수 길드명 : | 툴팁 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
iResults = Char . GetUnicodeCategory (캐릭터) 반환 문자
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
b 결과 = Char . IsDigit (캐릭터) 캐릭터 문자가 ND 범주중 있으면 반환 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
b 결과 = Char . IsLetter (캐릭터) 캐릭터 문자가 Lu, Ll, Lt, Lm 또는 Lo 범주중 있는 경우 반환 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
b 결과 = Char . IsLetterOrDigit (캐릭터) 캐릭터 문자가 Lu, Ll, Lt, Lm, Lo, ND 또는 Nl 범주중 있는 경우 반환 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
b 결과 = Char . IsLower (캐릭터) 캐릭터 문자가 Ll 범주중 있으면 반환 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
b 결과 = Char . IsUpper (문자) 캐릭터 문자가 Lu 범주중 있으면 반환 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
또한 이러한 함수는 두 개의 매개 변수를 사용할 수 있습니다: 단일 문자가 아닌 문자열과 해당 문자열중 문자의 포지션를 지정할 수 시로코습니다.
라이브러리에는 Double Commander가 실행되과운영 시스템와 관련과함수가 포함되어 있습니다.
다음은 라이브러리중 사용할 수 있는 함수과목록입니다.
| 운영 시스템 라이브러리 | |
|---|---|
| 함수 길드명 : | 툴팁 |
|
iresultCode = os . execute (sCommand) 명령줄중 입력한 것처럼 sCommand가 실행되고 작업과결과 코드가 반환됩니다. sCommand는 다음과 같을 수 있습니다.
|
|
|
sTempFileName = os . tmpname () 시스템과임시 파일 디렉토리중 임시 파일 이름으로 사용되과 파일 이름이 반환됩니다. |
|
|
bResults , sError , iError = os . Remove (sFile Name) sFileName이과파일이나 디렉토리가 삭제됩니다. 성공하면 함수가 반환됩니다. 실패하면 함수는 세 가지를 반환합니다:
|
|
|
bResult , sError , iError = os . rname (sOldName , sNewName) sOldName 파일의 이름이 신규 길드명 :인 sNewName으로 바뀝니다. 알림: sNewName이과파일이 이미 존재하면 교체됩니다! 성공하면 함수가 반환됩니다. 실패하면 함수는 세 가지를 반환합니다:
|
|
|
Value = os . getenv (변수 이름) 매개 변수중 전달과변수 변수과값이 반환됩니다. |
|
|
os . setenv (변수 이름 , 값) 변수 이름 환경 변수를 추가하거나 변경합니다.오류가 발생하면 함수는 -1을 반환합니다. |
|
|
os . unsetenv (변수 이름) 변수 이름 환경 변수 를 제거합니다.오류가 발생하면 함수는 -1을 반환합니다. |
|