1 (изменено: DIMMon, 2012-07-04 10:23:29)

Тема: JS: Скрипт для создания на рабочем столе RDP-подключений

Здравствуйте, Всем!
Нужна помощь. Имеется скрипт, который создает на рабочем столе файлик RDP


var net = new ActiveXObject("WScript.Network");
var cmpn = net.ComputerName;

if(cmpn.indexOf('-SRV') + 1)
 { var z=1}
else
{var z=0}

if (z == 0)
{

a=new ShortCutter();
a.createrdpfile("RDP Касса",true,"auto","auto","192.168.0.230");


//====================
function ShortCutter()
{
this.createrdpfile=createrdpfile;
this.WshShell=WScript.CreateObject("WScript.Shell");
this.fso=new ActiveXObject("Scripting.FileSystemObject");
this.WshNetwork = WScript.CreateObject("WScript.Network");
this.user=this.WshNetwork.UserDomain + "\\" + this.WshNetwork.UserName;
//this.QueryWMI=QueryWMI;


function createrdpfile(name,fullscreen,resx,resy,server,user)
{
var WQL="Select ScreenHeight,ScreenWidth from Win32_DesktopMonitor where Availability=3";
var wbemFlagReturnImmediately = 0x10;
var wbemFlagForwardOnly = 0x20;
var compname, username, password;
var wmi_items;
var SWBemlocator = new ActiveXObject("WbemScripting.SWbemLocator");
var objWMIService = SWBemlocator.ConnectServer("localhost","\\root\\CIMV2","","");
var wmi_items = objWMIService.ExecQuery(WQL,"WQL",wbemFlagReturnImmediately | wbemFlagForwardOnly);
var wmi_enum = new Enumerator(wmi_items);
var wmi_item = wmi_enum.item();
if (resx=="auto") resx=wmi_item.ScreenWidth;
if (resy=="auto") resy=wmi_item.ScreenHeight
if (user == null) u=this.user; else u=user;
if (fullscreen==true) sm=2; else sm=1;
strDesktop = this.WshShell.SpecialFolders("Desktop");
fp=strDesktop + "\\"+name+".rdp"
//if (!this.fso.FileExists(fp)) //не создает файл, если он уже существует
{
fo = this.fso.CreateTextFile(fp,true);
s="screen mode id:i:2\n\
session bpp:i:16\n\
winposstr:s:0,0,0,0,"+resx+","+resy+"\n\
compression:i:1\n\
keyboardhook:i:2\n\
displayconnectionbar:i:1\n\
disable wallpaper:i:1\n\
disable full window drag:i:1\n\
allow desktop composition:i:0\n\
allow font smoothing:i:0\n\
disable menu anims:i:1\n\
disable themes:i:1\n\
disable cursor setting:i:0\n\
bitmapcachepersistenable:i:1\n\
audiomode:i:0\n\
redirectprinters:i:0\n\
redirectcomports:i:0\n\
redirectsmartcards:i:0\n\
redirectclipboard:i:1\n\
redirectposdevices:i:1\n\
redirectdrives:i:1\n\
autoreconnection enabled:i:1\n\
authentication level:i:0\n\
prompt for credentials:i:0\n\
negotiate security layer:i:1\n\
remoteapplicationmode:i:0\n\
alternate shell:s:\"%PROGRAMFILES(x86)%\\1cv82\\8.2.15.289\\bin\\1cv8.exe\" enterprise /s buh8-srv:1741\\SeydKassa /L RU\n\
shell working directory:s:%PROGRAMFILES(x86)%\\1cv82\\8.2.15.289\\bin\n\
gatewayhostname:s:\n\
gatewayusagemethod:i:4\n\
gatewaycredentialssource:i:4\n\
gatewayprofileusagemethod:i:0\n\
promptcredentialonce:i:1\n\
drivestoredirect:s:*\n"
s=s+"full address:s:"+server+
"\nusername:s:"+u+"\ndesktopwidth:i:"+resx+
"\ndesktopheight:i:"+resy+"\n"+
"screen mode id:i:"+sm+"\n";
 fo.Write(s);
 fo.Close();
}
delete wmi_enum;
delete fso;
delete SWBemlocator;
}

}
}

Работал на УРА!! на WinXP, но с появлением Win7 возникли (правда опять не на всех компьютерах) трудности - при запуске скрипта стал ругаться на строчки


if (resx=="auto") resx=wmi_item.ScreenWidth;
if (resy=="auto") resy=wmi_item.ScreenHeight

а если точнее ему не нравится, что ScreenWidth и ScreenHeight равны null. Почему они вдруг равны NULL я не понял. Но вопрос не в этом, а вот в чем: можно ли чтобы при таком значении WSH не выдавал окно со страшной ошибкой, а присваивал этим переменным какое-нибудь значение?

2 (изменено: Spy00000, 2012-07-04 10:21:35)

Re: JS: Скрипт для создания на рабочем столе RDP-подключений

Попробуйте вот так написать:

if (resx=="auto") resx=wmi_item.ScreenWidth || 1280;
if (resy=="auto") resy=wmi_item.ScreenHeight || 1024;

1280 и 1024 можно заменить на числа, который Вас больше устроят.

PS: и поменяйте заголовок Вашей темы, по правилам он должен называться так:
"JS: Скрипт для создания на рабочем столе RDP-подключений"
или
"JScript: Скрипт для создания на рабочем столе RDP-подключений"

3

Re: JS: Скрипт для создания на рабочем столе RDP-подключений

Spy00000 пишет:

Попробуйте вот так написать:

if (resx=="auto") resx=wmi_item.ScreenWidth || 1280;
if (resy=="auto") resy=wmi_item.ScreenHeight || 1024;

1280 и 1024 можно заменить на числа, который Вас больше устроят.

А что это даст? Мне это ничего не дало. Как ругался на эти переменные так и ругается

4

Re: JS: Скрипт для создания на рабочем столе RDP-подключений

Это могло помочь
У меня Ваш скрипт ошибку не выдаёт, поэтому полностью исправление проверить не получается.

Попробуйте тогда вот так:


if (resx=="auto") try{ resx = wmi_item.ScreenWidth }catch(e){ resx = 1280 };
if (resy=="auto") try{ resy = wmi_item.ScreenHeight }catch(e){ resy = 1024 };

5

Re: JS: Скрипт для создания на рабочем столе RDP-подключений

Spy00000 пишет:

if (resx=="auto") try{ resx = wmi_item.ScreenWidth }catch(e){ resx = 1280 };
if (resy=="auto") try{ resy = wmi_item.ScreenHeight }catch(e){ resy = 1024 };

Последний способ сработал. Спасибо большое!!!

6

Re: JS: Скрипт для создания на рабочем столе RDP-подключений

вми тут не нужен

Я конечно далек от мысли... (с)