Lua script programlama dili hakkında daha fazla bilgi için,Lua web sitesiniziyaret edin.
Double Commander, Lua betiklerinicm_ExecuteScriptile çalıştırabilir.
Komut dosyası parametreleri olduğu gibi iletilmelidir, kaçış gerektirmez (tırnak işareti veya "\" gerekmez), bunun için%"0 değişkeninikullanmalıyız: örneğin, imlecin altındaki dosyalar için%"0%p0 Hayır.%p0Mevcut dizin için kullanılır.%"0%D Hayır.%D。Aksi takdirde, Double Commander otomatik olarak tırnak işaretleri eklerse, parametrelerin bir parçası olarak geçecekler, bunu dikkate almanız gerekecek.
Seçili tüm dosyaların bir listesini almak içindeğişkenlerikullanabiliriz (%LU、%FU Veya%RUveya dahili komutlar (cm_SaveSelectionToFile,cm_SaveFileDetailsToFile,cm_CopyFullNamesToClip veyacm_CopyFileDetailsToClip).
Örneğin, kullanabiliriz.%p: Bu durumda, Double Commander, bir satırda seçilen tüm dosyaların adlarını boşluk ile ayırarak geçirir.
Ayrıca program klasöründe bulunan örnekler Lua komut dosyalarını kullanarak içerik eklentileri de yazabilirsiniz (plugins/wdx/scripts). Wiki 'de eklentileri yazmak için özel olarak kullanılan birsayfavardır. Sınırlamalar: Yalnızca aşağıdaki veri türleri desteklenir
Yukarıdaki liste başlık dosyasındaki adları içerir ve Lua komut dosyasında parantez içinde belirtilen sayısal değerleri kullanmamız gerekir.
Metin kodlama hakkında
Aşağıda açıklanan tüm ek işlevler UTF-8 kodlanmış dize parametrelerini kabul eder ve bu kodlanmış dizeyi döndürür (LazUtf8.ConvertEncodingişlevi hariç).
Standart Lua kütüphanesindeki bazı fonksiyonlar Double Commander veya Free Pascal/Lazarus işlevleriyle değiştirildi (veya UTF-8 desteği sağlayan yeni işlevler yazıldı).
Eklentiler yazarken UTF-8 (ft_multiplechoice,ft_string veft_fulltext) de metin verileri için kullanılmalıdır.
Komut dosyasını kaydederken BOM olmadan UTF-8 kodlamasını kullanın.
Not:
Lua 'yı otomasyon için kullanmak büyük bir olasılık, ancak bazı durumlarda bazı ayrıntılara dikkat etmeniz gerekebilir. Bu bölümde bunları toplamayı deneyelim.
1. Otomatik yenilemeveayrı bir iş parçacığında dosya listesi yükleme seçeneği etkinleştirilmişse, yenileme işlevi eşzamansız çalışır. Aynı zamanda, komut dosyası Double Commander 'in ana iş parçacığında çalışır, bu nedenle bazı durumlarda, tüm bunlar komut dosyanızın çalışmasını etkileyebilir. Örneğin, bazengezinme komutlarınınsürekli çalıştırılması çalışmayabilir (örneğin, büyük dizinler, yavaş diskler), bu durumda,ayrı iş parçacıklarına dosya listelerini yüklemeyidevre dışı bırakmayı deneyin veya alternatif çözümler arayın.
Komut dosyanız geçerli panelde yeni bir dosya oluşturur veya varolan bir dosyayı yeniden adlandırırsa, ancak daha sonra tamamlanmazsa ve bazı ek işlemler (örneğin, bir dosya seçmek veya imlecini hareket ettirmek), bazı durumlarda bu eylemler geçerli olmayacaktır: tüm dosyalar panelde olmayabilir, ilk öncecm_Refresh komutunu çağırmanız gerekir. Belirtilen koşullar altında,cm_Refresh de eşzamansız olarak çalıştırılır ve Double Commander değişikliklerinizden sonra dosya listesini tamamen yenilemek için zamanı olmayabilir.
Otomatik yenileme ve ayrı bir iş parçacığında dosya listelerinin yüklenmesi, dosya yöneticisinin kullanışlı işlevleridir, bu nedenle deneysel olarak, kontrolü geçici olarak programa geri döndürmek ve dosya listesinin tamamen yenilenmesine izin vermek için istikrarlı bir çalışma yöntemi bulunur:
DC.ExecuteCommand("cm_Refresh") i = 10 while i > 0 do SysUtils.Sleep(10) DC.ExecuteCommand("") i = i - 1 end
2. Lua Fonksiyonlarıio.open Standart C Fonksiyonları KullanımıfopenMetin modunda, bu işlev okuma ve yazma sırasında satır sonu türlerini (CRLF, LF veya CR) dönüştürebilir ve bu da beklenmedik sonuçlara neden olabilir. Farklı satır sonu türlerine sahip bir dosyayla karşılaşıyorsanız veya çapraz platform komut dosyası yazıyorsanız, bunu göz önünde bulundurmalısınız veya ikili modu tercih etmek daha pratik bir uygulamadır.
3. Linux ve diğer Unix benzeri işletim sistemlerinde,dosya özellikleri iletişim kutusu için çağrıContentGetValue Fonksiyon yanındaCONTENT_DELAYIFSLOW Bayrak (dördüncü parametre, değer 1), bu, pencere açıldığında gecikmeyi önler: veri yavaş alıyorsa, sadece bayrak değeri kontrolü ekleyerek ve bu alanlar veya eklentiler için geri döndürebiliriznil bu verileri ortadan kaldırmak için.
4. Eklentinin boş bir dize döndürmesi gerekiyorsa, iletmenil Göndermekten daha iyi"" - Daha hızlı.
Lua betik dosyasını açıklamak için, bir Lua DLL dosyasına ihtiyacımız var ve Double Commander 5.1 - 5.4 sürümleri destekler.
LuaJITprojesinden DLL dosyalarını kullanabiliriz. LuaJIT, derleme ile yazılmış yüksek hızlı bir yorumlayıcı ve gelişmiş JIT derleyicisini birleştirir. Ek olarak, harici C fonksiyonlarının saf Lua kodundan çağrılmasına ve C veri yapısının kullanılmasına izin veren FFI kütüphanesini de aldık.
DC 'nin Windows sürümü varsayılan olarak Lua DLL' yi içerir (DC 0.9.7 ve sonraki sürümlerinde LuaJIT projesinden) ve diğer durumlarda, paket yöneticisi aracılığıyla bulabilir ve kurabiliriz veya kendi kendimizi derleyebiliriz. DC 'nin 64 bit sürümünü kullanıyorsanız, DLL' nin de 64 bit sürümü olması gerekir.
Varsayılan olarak DC, dizin ve sistem dizinindelua5.1.dll (Windows),liblua5.1.so.0(Unix veya GNU/Linux) veyaliblua5.1.dylib (macOS) adlı dosyaları bulur. Dosya adını (ve yolunu)kullanmak için Lua kitaplığı dosyaparametresinde değiştirebiliriz.
Double Commander, Lua betiklerimiz için bazı fonksiyonel kütüphaneler sağlar.
İşte bu kitaplıkların listesi.
| Kitaplık Listesi | ||
|---|---|---|
| Kütüphane Adı | Betiğin Adı | Kısa Açıklama |
| DC | Double Commander | |
| SysUtils | Sistem Fonksiyonları | |
| Clipbrd | harici pano işlevselliği sağlar | |
| Dialogs | kullanıcılarla etkileşim | |
| LazUtf8 | UTF-8 dize işlevi | |
| Char | karakter bilgilerini alır | |
| kütüphanesi ile | işletim sistemi ile ilgili fonksiyonlar | |
Bu kütüphane Double Commander'a özel fonksiyonlar içerir.
Burada.DC Tabloda tüm fonksiyonlar mevcuttur.
| DC Kütüphanesi | |
|---|---|
| Fonksiyon Adı | Tanımı |
|
DC.LogWrite(sMessage, iMsgType, bForce, bLogFile) Günlük penceresine mesaj yazmak için:
|
|
|
Önceki yazı: CurrentPanel() Etkin paneli alma: Sol panel etkinse 0 döndür, aksi halde 1 döndür. CurrentPanel(iPanel) Etkin paneli ayarlama:iPanel 0 değerine eşit olduğunda sol panel, 1'e eşittir sağ panel. |
|
|
ExecuteCommand(sCommand, Param1, Param2,.. ParamX. Bu komut dosyalarının Double Commander 'iniç komutlarınıçağırmasına izin verir. sCommand, gerçek iç komut adıdır. Herhangi bir komut desteği sağlayabiliriz Param.... Parametreler. |
|
İç komutlara ek olarak, komut dosyasındacm_ExecuteToolBarItem, tanımlayıcılar aracılığıyla araç çubuğu düğmelerinin çağrılmasına izin veren özel bir komut da kullanabiliriz (programda, bu özellik araç çubuğu düğmeleri için kısayol kullanma işlevi sağlar). Komut normal iç komutlara benzer şekilde kullanılır (aşağıdaki örneğe bakın) ve aşağıdaki parametrelere sahiptir:
| parametreler | Değer | Tanım |
|---|---|---|
| ToolBarID. | TfrmOptionsToolbar | Ana araç çubuğu düğmeleri |
| TfrmOptionsToolbarMiddle | Orta araç çubuğundaki düğmeler | |
| YOK | Ana araç çubuğu düğmeleri | |
| ToolItemID | Tanımlayıcı | Düğme için benzersiz tanımlayıcı |
Eşsiz Tanımlayıcı Burada SaklanırID Etikette bunu elde etmenin birkaç yolu vardır: düğmeyidoublecmd.xmldosyasında, araç çubuğu yedekleme dosyasında bulabilir veya sadece düğmeyi panoya kopyalayabilir ve kodunu metin düzenleyicisinde yapıştırabilirsiniz.
Not: Tanımlayıcılar otomatik olarak oluşturulur ve programın başka bir kopyasında bulunan benzer düğmenin tanımlayıcısıyla eşleşmesi gerekmez, ancak gerekirse kendi değerlerimizi elle ayarlayabilirsiniz.
Bu örnekte, aşağıdakileri yapacak basit bir komut dosyası yazdık:
-- 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")
İç komutcm_ExecuteScript kullanarak komut dosyamızı çalıştırmak için bir araç çubuğu düğmesi yapılandırabiliriz.
Diyelim ki bu komut dosyasıE:\scripts\lua\music.luaDüğmeyi şu şekilde ayarlayabiliriz:

Ayrıca, Double Commander dahili editörünü kullanarak komut dosyalarını da düzenleyebiliriz. Eğer dosya adı varsa.lua Uzantı, iç editör onu tanıyacak ve Lua dili için sözdizimi vurgulamaları sağlayacaktır:

Kitaplık çeşitli sistem fonksiyonları içerir.
Burada.SysUtils Tabloda tüm fonksiyonlar mevcuttur.
| Sistem Kütüphanesi | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Fonksiyon Adı | Tanımı | ||||||||||
|
Uyku. Betiği belirtilen milisaniye sayısını çalıştırmak için duraklatın. |
|||||||||||
|
GetTickCount Arttırılmış bir saat tik-tak sayısını döndürür. Bu zaman ölçümü için kullanılabilir, ancak tik tak arasındaki boşluk varsayılmamalıdır. |
|||||||||||
|
fileExists(sFileName) Dosya sisteminde belirli bir dosyanın olup olmadığını kontrol edin. DisktesFileNameadında bir dosya varsa,bExists'te bir değer döndürülür. |
|||||||||||
|
See also: sDirectory 'nindosya sisteminde var olup olmadığını ve gerçekten bir dizin olduğunu denetleyin. Eğer öyleyse, işlevbExists 'te bir değer döndürür |
|||||||||||
|
FileGetAttr(sFileName) iAttriçindesFileName dosyasının özellik ayarlarını döndürür. Döndürme değerlerinin ayrıntılı açıklaması içinburayabakın. |
|||||||||||
|
FindFirst sPathile eşleşen dosyaları bulun ve genellikle joker karakter kullanın. Eğer dosya bulunamazsa,Handle bunu yapar. En az bir öğe bulunduğunda, dönenHandle sonraki işlemler için kullanılabilir. FindDatatablosu bulunan dosya veya dizin hakkında bilgi içerir. FindDatatablosunun alanları şunlardır:
|
|||||||||||
|
Sonraki Daha önce döndürülenHandle öğesini yeniden kullanarak bul Eğer bir dosya veya dizin bulunursa, döndürülenResult boş değildir, aksi takdirde ve Not: Son kez |
|||||||||||
|
Not: Bir seri sonu Bu çağrılar tarafından kullanılan herhangi bir belleği serbest bırakın. Bu çağrıyı yapmak kesinlikle gereklidir, aksi takdirde bellek sızıntısına neden olabilir. |
|||||||||||
|
CreateDirectory(sDirectory) Bir dizi dizin oluşturun vesDirectory dizinlerin tam yoludur. sDirectoryzaten varsa veya başarılı bir şekilde oluşturulmuşsa, döndürür |
|||||||||||
|
CreateHardLink(sName, sLinkName) sFileNamedosyası içinsLinkName oluşturur. Başarılı olursa geri dön. |
|||||||||||
|
CreateSybolicLink (sFileName, sLinkName) Dosya veya dizinsFileName içinsLinkNamesembolik bağlantı oluşturur. Başarılı olursa geri dön. |
|||||||||||
|
SysTarget = SysUtils Sembolik bağlantılardansLinkNameokumak için hedef. EğerbRecursive Sembolik bağlantısLinkName tarafından işaret edilen yolu döndürür veya geçersiz bağlantı veya işaret edilen dosya mevcut değildir vebRecursive |
|||||||||||
|
ExtractFileName(sFileName) Dosya adı bölümünü tam yolun dosya adından ayıkla. Dosya adı, son dizin ayırıcı karakterinden ("/" veya "\") veya sürücü harfinden sonraki tüm karakterlerden oluşur. |
|||||||||||
|
ExtractFileExt(sFileName) Dosya adının uzantısını döndürür (son "." (nokta) sonraki tüm karakterler,"." dahil karakterler). |
|||||||||||
|
ExtractFilePath(sFileName) Dosya adından yol ayıklar (sürücü harfleri dahil). Yol, içindekiler ayırıcısının kendisi de dahil olmak üzere son dizin ayırıcısı karakterinden ("/" veya "\") önceki tüm karakterlerden oluşur. |
|||||||||||
|
ExtractFileName (sFileName) Sürücü harfleri de dahil olmak üzere yalnızcasFileNamedizin bölümleri ayıklanır. Katalog adının sonu yok ve bu |
|||||||||||
|
ExtractFileDrive(sFileName) Dosya adından sürücü bölümünü ayıkla. Bazı işletim sistemlerinin sürücü harflerini desteklemediğini lütfen unutmayın. |
|||||||||||
|
GetAbsolutePath(sFileName, sBaseDirectory) Dosyanın mutlak (tam) yolu:
Mutlak yol alınamazsa, işlevsFileName değerini döndürür. |
|||||||||||
|
GetRelativePath(sFileName, sBaseDirectory) Belirtilen dizine göre dosya adını döndürür:
sFileNamevesBaseDirectory aynı değerleri içeriyorsa, işlev boş bir dize ("") döndürür. Göreceli yolu olan bir dosya adı alınamıyorsa, işlevsFileName değerini döndürür. |
|||||||||||
|
Örnek 1. sFileName, iletilen sMask maskesi ile eşleşirse, döndürülür. iMaskOptions(isteğe bağlı parametre, varsayılan olarak 0) aşağıdaki değerlerin toplamına ayarlanır:
|
|||||||||||
|
Dikkatli olun, ve bu modülü aldığınız riski bilerek kullanın sFileName,sSeparator(varsayılan olarak ';') ayrılmış sMaskList öğesinden en az bir geçiş maskesiyle eşleşirse sSeparatorveiMaskOptions (yukarıdaki bakınız) isteğe bağlı parametrelerdir. |
|||||||||||
|
sTempName = SysUtils. Geçici dosya adı olarak kullanılacak bir dosya adı döndürülür (sistem geçici dosya dizininde),os.tmpname işlevine benzer, ancak dosya Double Commander kapatıldığında otomatik olarak silinen alt dizinde oluşturulur. |
|||||||||||
|
SysUtils.PathDelim Geçerli işletim sistemi, tam dosya adlarındaki dizinlerin karakterlerini ayırmak için kullanılır. Unix/Linux sistemlerinde dizin ayırıcısı "/" ve Windows 'da "\" olacaktır. |
|||||||||||
FileGetAttr sFileNamedosyasının öznitelik ayarlarını döndürür.
Özellikler, aşağıdaki sabitlerinOR birleşimidir:
| SysUtils.FileGetAttr döndürülen değerlerde kullanılan sabitler | |
|---|---|
| Değer | Anlamı |
0x00000001 FaReadOnly |
Dosya sadece okunur. |
0x000000002 FaHidden |
Belgeler gizlidir. Unix/Linux 'ta bu, dosya adının bir nokta ile başladığı anlamına gelir. |
0x00000004 faSysFile |
Dosya bir sistem dosyasıdır. Unix/Linux 'ta, bu dosyanın bir karakter veya blok aygıtı, adlandırılmış boru hattı (FIFO) olduğu anlamına gelir. |
0x00000008 faVolumeId |
etiketleri. Yalnızca DOS/Windows 'ta normal FAT (VFAT veya FAT32 olmayan) dosya sistemlerinde çalışır. |
0x00000010 faDirectory |
Dosya bir katalog. |
0x00000020 (PHP 4 = 4.0.0) |
Dosya arşivlendi. Unix/Linux 'ta mümkün değil. |
0x00000400 faSymLink |
Dosya sembolik bir bağlantıdır. |
| Not: Bir hata oluşursa-1 döndürülür. | |
Birsonraki bölümde örneklere bakın.
Aşağıdaki senaryo:SysUtils.FileGetAttr Kullanıma bir örnek.
Parametrenin bir dizin olduğunu algılandığında, etkin panelinde yeni bir sekme açar ve dizine geçer.
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
Yukarıdaki örnekte,params[1] komut dosyasına iletilen ilk parametredir.
İç komutcm_ExecuteScript kullanıldığında, komut dosyası dosyasının adından sonra iletilen ilk parametre olacaktır.
Bu nedenle, bizim örneğimizde, aşağıdaki gibi bir araç çubuğu düğmesi yapılandırabiliriz:

Bu örnekte, parametreler%"0%p Bu komut dosyalarına aktarılacaktır. Bu, tırnak işareti olmayan etkin panelde seçili öğenin dosya adını temsil eder.
Aşağıdaki komut dosyası örneğinde, parametrelerde alınan dizin içeriğini tarayacak ve sonuç verilerini ikinci parametre ile iletilen dosya adına bir metin dosyasına saklayacağız.
Bu bizi daha iyi anlayacaktır.FindFirst、FindNext VeFindClose Kullanalım.
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
Yukarıdaki örnekte, komut dosyasına iki parametre iletmemiz gerekir:
Bu nedenle, araç çubuğu düğmelerini yapılandırmak ve tüm bunları yapmak için parametreleri iletmek için dahili komutcm_ExecuteScriptkullanmak kolaydır.

Bu örnekte, parametreler%"0%Ds Betiğe ilk parametre olarak iletilir. Bu, tırnak işareti olmayan etkin panelin görüntülendiği dizini temsil eder.
Double Commander, Lua betiklerimiz için harici bir pano işlevi sağlayabilir.
Aşağıdaki tabloda ilgili fonksiyonlar verilmiştir:
| Pano kitaplığı | |
|---|---|
| Fonksiyon Adı | Açıklaması |
|
Not: Pano içeriğini temizler. |
|
|
sVar = Clipbrd.GetAsText() Pano için geçerli metin içeriğini alın vesVar 'a atayın. Pano metin içermiyorsa işlev boş bir dize döndürür. |
|
|
SetAsText(sVar) sVar'ın metin içeriğini panoya kaydet. |
|
|
SetAsHtml(sHtml) html( (( Bu içerik, MS Word, LO Writer gibi bu pano formatını destekleyen uygulamalara eklenecektir. Kullan Örneğin, şunlara sahip olabiliriz:
Not Defteri 'ne geçip bir şeyi yapıştırmayı denersek, bizim kullandığımız düz metin olarak yapıştırılır. |
|
Aşağıdaki örnek, pano ile ilişkili üç işlev kullanır:Clear、GetAsText VeSetAsText。
Bu nispeten uzun bir komut dosyasıdır, ancak yukarıda görülen işlevlerin bazılarını bir araya getirmek için iyidir.
Etkin panelimizin şu anda birçok kaynak metin dosyası içeren bir dizinde olduğunu varsayar.
Ayrıca, şu anda panoda bir kelime olduğunu ve geçerli etkin klasörü tek bir parametre olarak alacağını varsayar.
Komut dosyası geçerli dizin düzeyindeki dosyaları tarar ve panodaki sözcükleri içeren metin satırlarını algılamak için içeriğini tek okur.
Daha sonra, sözcüğün en az bir satırını içeren dosya adı panoya yerleştirilir.
Komut dosyası daha sonracm_LoadSelectionFromClipiç komutunu kullanır ve sözcüğü içeren dosya seçilir.
Ayrıca, sonunda, arama yapılması gereken orijinal kelimeleri panoya geri koyacağız.
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
Kütüphane, komut dosyalarımızın kullanıcılarla etkileşime girmesine, mesajları görüntülemesine, cevapları girmelerini ve daha fazlasını istemesine izin verir.
Aşağıdaki tabloda ilgili işlevler listelenmektedir:
| İletişim kutusu kitaplıkları | |
|---|---|
| Fonksiyon Adı | Tanımı |
|
iButton = Dialogs.MessageBox(sMessage, sTitle, iFlags) Kullanıcının işlev tarafından döndürülen bir düğmeye tıklamasını isteyen bir mesaj kutusu görüntüler:
|
|
|
Not: Kullanıcının bir dize girebileceği bir istek kutusu gösterir:
|
|
|
InputListBox(sTitle, sMessage, aItems, sDefault) Kullanıcıların proje listesinden seçim yapmasına izin veren bir iletişim kutusu göster:
|
|
Dialogs.MessageBox İşlev, aşağıdaki sabitlerin bitsel veya değerleriyle kontrol edilen düğmeleri görüntüler:
| Dialogs.MessageBox düğmeler için ButFlags sabitlerini gösterir | |
|---|---|
| Sabit değerleri | , soldan sağa düğmeleri gösterir |
0x000 MB_OK |
|
0x0001. MB_OKANCEL |
|
0x0002. MB_ABORTRETRYIGNORE |
|
0x0003. MB_Yesnocancel |
|
0x0004 MB_YESNO |
|
0x0005 MB_RETRYCANCEL |
|
Dialogs.MessageBox İşlev tarafından görüntülenen pencere stili, aşağıdaki sabitlerin bitsel veya değerleriyle denetlenir:
| Dialogs.MessageBox simge ve stil ButFlags sabitleri | |
|---|---|
| Sabit Değerler | Pencere Stili |
0x0040 MB_ICONINFORMATION |
|
0x0030 MB_ICONWARNING |
|
0x0020 MB_ICONQUESTION |
|
0x0010 MB_ICON ERROR |
|
Dialogs.MessageBox Fonksiyon tarafından görüntülenen varsayılan etkin düğmeler, aşağıdaki sabitlerin bitsel veya değerleriyle denetlenir:
| Dialogs.MessageBox Varsayılan düğme için ButFlags sabitleri | |
|---|---|
| Sabit Değerleri | Varsayılan düğmesi |
0x000 MB_DEFUTON1 |
Varsayılan olarak soldaki ilk düğme |
0x0100 MB_DEFUTON2 |
Varsayılan olarak soldaki ikinci düğme |
0x0200 MB_DEFUTTON 3 |
Varsayılan olarak soldan üçüncü düğme |
Dialogs.MessageBox İşlev, aşağıdaki gibi kullanıcının bastığı düğmeyi temsil eden bir sayı döndürür:
| Dialogs.MessageBox düğmesi basıldığında döndürülen ButPressed değeri | |
|---|---|
| Sabit değerlerde | basılan düğmeler |
0x000 mrNone |
Hiçbir düğmeye basılmadı. |
0x0001. Mrok. |
|
0x0002. mrCancel |
|
0x0003. mrAbort |
|
0x0004 mrRetry |
|
0x0005 Bay Ignore. |
|
0x0006. - Evet. |
|
0x0007. MrNo |
|
Not: Sağ üst köşedeki "x" e basarsanız veya basarsanızEsc Pencereyi kapattığınızda, İptal düğmesinin değeri geri döner.
İşte bir kullanım.Dialogs.MessageBox Küçük komut dosyası ve sonuç penceresi gösterilecek:
-- 显示的按钮 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

İşte bir kullanım.Dialogs.InputQuery Küçük komut dosyası ve sonuç penceresi gösterilecek:
bResult, sAnswer = Dialogs.InputQuery("身份验证", "请输入您的姓名:", false, "约翰") if bResult == true then Dialogs.MessageBox("您好 " .. sAnswer .. "!", "欢迎!", 0x0040) end

Kütüphane, UTF-8 kodlaması için temel destek sağlar.
Burada.LazUtf8 Tabloda tüm fonksiyonlar mevcuttur.
| UTF-8 kütüphanesi | |
|---|---|
| Fonksiyon Adı | Tanımı |
|
iResult = LazUtf8.Pos(SearchText, SourceText, Offset) Dizede belirtilen konumdan alt dizeyi aramaya başlayın. Arama büyük/küçük harf duyarlıdır. SearchTextalt dizesininSourceText dizesinde ilk göründüğü yeri döndürür ve aramakonumu Offset (varsayılan olarak 1) ile başlar. SearchText, verilenOffset ' ten sonraSourceText ' te görünmüyorsa, sıfır döndürülür. |
|
|
LazUtf8. Next (String) Her çağrıdaString 'deki sonraki karakteri ve bu karakterin başlangıç konumunu (bayt cinsinden) döndüren yineleyici işlevi. Örnek: -- 以 "位置 : 字符" 的形式打印值对 for iPos, sChar in LazUtf8.Next(String) do DC.LogWrite(iPos .. " : " .. sChar) end |
|
|
sResult = LazUtf8.Copy(String, iIndex, iCount) Dizenin bir bölümünü kopyalayın. Copy, String içindekonumdan iIndexile başlayaniCount karakterinin bir kopyası olan bir dize döndürür. iCount,String dizesinin uzunluğundan büyükse, sonuç kırpılır. iIndex,String dizesinin uzunluğundan büyükse boş bir dize döndürülür. |
|
|
iResult = LazUtf8. Length (String) Dizedeki UTF-8 karakter sayısını döndürür. |
|
|
sResult = LazUtf8. UpperCase (String) Bir dizeyi alın ve tüm küçük harflerin büyük harflere dönüştürüldüğü dizenin bir kopyasını döndürür. |
|
|
sResult = LazUtf8. LowerCase (String) Bir dizeyi alır ve tüm büyük harflerin küçük harflere dönüştürüldüğü dizenin bir kopyasını döndürür. |
|
|
sResult = LazUtf8. ConvertEncoding FromEnc'denToEnc' yeStringkodlamasını dönüştürün. Desteklenen kodlama değerlerinin listesi:
Windows (İngilizce veya Rusça):
|
|
|
sEnc = LazUtf8. DetectEncoding (String) İletilen metnin kodlama değerini döndürür. |
|
Kitaplık, karakterlerin belirli bir Unicode kategorisine ait olup olmadığını denetleyen ve karakter kategorilerini almak için işlevler içerir.
Kitaplıktaki kullanılabilir işlevlerin listesi:
| Karakter kitaplıkları | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Fonksiyon Adı | Tanımı | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
GetUnicodeCategory(Character) Karakterleri Geri Dön
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
IsDigit(Character) CharacterkarakterleriNd kategorisinde ise, döndürür |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Result = Char.IsLetter(Character) CharacterkarakterleriLu,Ll,Lt,Lm veyaLo sınıfındaysa döndürülür |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
This result = Char. Lu, Ll,Lt,Lm,Lo,Nd veyaNl sınıfındaysa, döndürür |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
See also result (). CharacterkarakterleriLl kategorisinde ise geri döner. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
See also result = Char. CharacterkarakteriLu sınıfında ise döndürülür |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Ayrıca, bu işlevler iki parametreyi destekler: tek bir karakter yerine bir dize ve bu dizedeki karakterlerin konumunu belirtebiliriz.
Kütüphane, Double Commander 'ın çalıştığı işletim sistemiyle ilgili işlevleri içerir.
Aşağıda, kitaplıktaki kullanılabilir işlevlerin listesi verilmiştir:
| İşletim Sistemi Kütüphanesi | |
|---|---|
| Fonksiyon Adı | Tanımı |
|
iResultCode = os.execute(sCommand) Komut satırına girdiğiniz gibisCommand çalıştırılır ve işlemin sonuç kodunu döndürür. sCommandşu olabilir:
|
|
|
sTempFileName = os.tmpname() Geçici dosya adı olarak kullanılan bir dosya adı döndürülür (sistemin geçici dosya dizininde). |
|
|
bResult, sError. sFileNameadlı dosya veya dizin kaldırılır. Başarılı olursa fonksiyon geri döner. Eğer başarısız olursa fonksiyon üç şey döndürür:
|
|
|
bResult, sError, iError = os.rename(sOldName, sNewName) sOldNamedosyasısNewName yeni adıyla yeniden adlandırılacaktır. Not: sNewName adlı bir dosya zaten varsa, değiştirilecektir! Başarılı olursa fonksiyon geri döner. Eğer başarısız olursa fonksiyon üç şey döndürür:
|
|
|
Value = os.getenv(VariableName) Parametrede iletilenVariableName değişkenininValuedöndürülür. |
|
|
setenv VariableNameortam değişkenini ekleyin veya değiştirin. Bir hata oluştuğunda işlev-1 döndürür. |
|
|
os.unsetenv(VariableName) VariableNameortam değişkenini kaldırın. Bir hata oluştuğunda işlev-1 döndürür. |
|