Получить имя компьютера из lua

Столкнулись с проблемой в использовании макросов? Здесь можно получить помощь.
Post Reply
DeeZ
Posts: 100
Joined: Sat 20 Mar, 2010 18:48

Получить имя компьютера из lua

Post by DeeZ »

Не нашел (или плохо искал) как получить в срипте имя компьютера на котором выполняется срипт?
Скрипты синхронизирую между всеми компами, но нужно некоторые вещи делать по-разному.
Первое что приходит на ум - проверять существвоввание какого то файла. Но "разбрасывать" флаги не хочу.
Нужно как то определить где запускается скрипт. Пододйет не только имя компа. можно получать UID пользователя, под которым выполняется FAR.

Какой ID и как можно получитьв LUA?
User avatar
Kerberos464
Posts: 1239
Joined: Wed 29 Jul, 2009 20:24
Location: Saint-Petersburg
Has thanked: 19 times
Been thanked: 1 time

Получить имя компьютера из lua

Post by Kerberos464 »

не силён в луа, но вроде можно делать так:
os.getenv("computername")
16.09.2012 14:35:28 +0200 - build 2799 - все нативные плагины перестали работать.
30.09.2012 03:26:20 +0200 - build 2851 - все макросы перестали работать.
31.02.2029 25:61:61 +0200 - build 6666 - весь фар перестал работать.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Получить имя компьютера из lua

Post by Shmuel »

Kerberos464 wrote: не силён в луа
Не силён, а самое простое решение нашёл. :) Правда не знаю, будет ли это работать, если в имени есть юникод, например буквы из китайского и греческого.
Вот 2 "юникодных" решения:
(1) win.GetEnv("computername") и (2)

Code: Select all

local ffi=require'ffi'
ffi.cdef [[ BOOL GetComputerNameW(wchar_t* lpBuffer, DWORD* lpnSize); ]]
local wbuf = ffi.new("wchar_t[256]")
local size = ffi.new("DWORD[1]", 256)
local name =  ffi.C.GetComputerNameW(wbuf, size)~=0 and win.Utf16ToUtf8(ffi.string(wbuf, 2*size[0]))
far.Show(name)
DeeZ
Posts: 100
Joined: Sat 20 Mar, 2010 18:48

Получить имя компьютера из lua

Post by DeeZ »

Спасибо!
Post Reply

Return to “Нужна помощь”