WSH und externe Script-Dateien

Begonnen von TomPro, 15. November 2009, 10:11:29

Vorheriges Thema - Nächstes Thema

TomPro

Weis zufällig jemand (vonemlich Tedgo) ob es angedacht wird quasi eine Art Script Bibliotek Möglichkeit zu impementieren, also eine oder mehrere .js-Datei/en, welche in die WSH Scripte, ähnlich der z.B. .js- oder .css-Dateien bei HTML, eingebunden werden können.

Gruß TomPro

tedgo

#1
Davon weiß ich leider nichts...
Vielleicht solltest du da T.P Wang auf HA mal selber fragen, ich habe schon länger nichts mehr von ihm gehört (er ist wohl sehr beschäftigt).

Allerdings sind WSH-Skripte bereits .js-Dateien, nur für gewöhnlich mit TXT-Endung und eben durch die eigenen Callbacks und Interfaces auf WSH Panel mod abgestimmt.
Ob also T.P Wang eine Möglichkeit einbaut, externe JS-Dateien in JS-Dateien einzubinden glaube ich nicht... ;).

Oder habe ich dich missverstanden?

TomPro

Zitat von: tedgo in 15. November 2009, 10:18:13
Vielleicht solltest du da T.P Wang auf HA mal selber fragen, ich habe schon länger nichts mehr von ihm gehört (er ist wohl sehr beschäftigt).

Schätze dafür reichen meine Englischkentnisse nicht (Legasteniker)

Zitat von: tedgo in 15. November 2009, 10:18:13
Oder habe ich dich missverstanden?

Schätze ja.

Ein simples Beispiel:

Datei "txtstuff.txt" oder auch "txtstuff.js" im Foobarordner:

//--------- Set Color
function RGB(r,g,b){ return (0xff000000|(r<<16)|(g<<8)|(b)); }
function RGBA(r,g,b,a){ return ((a<<24)|(r<<16)|(g<<8)|(b)); }

//----------------------------------------------------------------------------
//------ Text Options

//--------- Font
// format : x = gdi.Font("FontName", ptSize, FStyle.Style);
var FStyle = {
Normal: 0,
Bold: 1,
Italic: 2,
Underline: 4,
Strikeout: 8
}

//--------- String Format
//------------ Align
var HAlign = { Left: 0, Center: 1, Right: 2 }
var VAlign = { Top: 0, Middle: 1, Bottom: 2 }

//------------ Trim
var Trim = {
No: 0,
Chara: 1,
Word: 2,
ElipsChara: 3,
ElipsWord: 4,
ElipsPath: 5
}

//------------ Flag
var Flag = {
Rtl: 0x0001,
Vert: 0x0002,
Nofit : 0x0004,
Dispctrl: 0x0020,
Nofallback: 0x0400,
Trailspace: 0x0800,
Nowrap: 0x1000,
Linelimit: 0x2000,
Noclip: 0x4000
}

//------------ Set String Format
function StrFmt(alignH,alignV,trim,flag){ return ((alignH<<28)|(alignV<<24)|(trim<<20)|flag); }


Datei "timestuff.txt" oder auch "timestuff.js" im Componentenordner:

//--------- Format Time String
function TimeFmt(t){
var zpad = function(n){
var str = n.toString();
return (str.length<2) ? "0"+str : str;
}
var h = Math.floor(t/3600); t-=h*3600;
var m = Math.floor(t/60); t-=m*60;
var s = Math.floor(t);
if(h>0) return h.toString()+":"+zpad(m)+":"+zpad(s);
return m.toString()+":"+zpad(s);
}


Script einem WSH-Fenster:

embeding (fb.FoobarPath + "txtstuff.js");
embeding (fb.FoobarPath + "components\timestuff.js");

... Fenstereigenes Script ...


tedgo

Ja, da habe ich dich schon richtig verstanden.
Du willst also so etwas wie "globale Scripte" erstellen, mit Code, der praktisch in jedem Script vorkommt.
Und diese dann in deine WSH Scripte importieren.

So etwas hatte ich auch schon mal angefragt, dann aber nicht weiter verfolgt...
Ich weiß auch gar nicht, ob es zwischenzeitlich nicht sogar schon möglich ist.
Ich werde noch mal nachfragen :).

TomPro

Zitat von: tedgo in 15. November 2009, 11:03:44
Ja, da habe ich dich schon richtig verstanden.

Da sieht man es wieder, Worte sind nicht meine Stärke

Zitat von: tedgo in 15. November 2009, 11:03:44
Du willst also so etwas wie "globale Scripte" erstellen, mit Code, der praktisch in jedem Script vorkommt.
Und diese dann in deine WSH Scripte importieren.

So Einfach hätte man das verständlich sagen können.

Zitat von: tedgo in 15. November 2009, 11:03:44
Ich werde noch mal nachfragen :).

Danke schon mal im Voraus

Gruß TomPro

tedgo

#5
T.P Wang hat schon geantwortet:
Es würde mit FSO und der JScript-Funktion eval() funktionieren.
Er wird aber in die nächste Version eine einfachere Lösung einbauen, die ohne FSO auskommt.

TomPro

Zitat von: tedgo in 15. November 2009, 12:50:51
T.P Wang hat schon geantwortet:
Klasse
Zitat von: tedgo in 15. November 2009, 12:50:51
Es würde mit FSO und der JScript-Funktion eval() funktionieren.
zum rumprobieren schon mal ganz nett, stehe aber momentan mit FSO ein wenig auf Kriegsfuß.
Zitat von: tedgo in 15. November 2009, 12:50:51
Er wird aber in die nächste Version eine einfachere Lösung einbauen, die ohne FSO auskommt.
Dann warte ich darauf und überlege mir schon mal wie ich strategisch externe Dateien gruppiere

Danke nochmal für Deine Mühe

tedgo

Habe gerade eine WSH-Version inkl. Script-Import-Funktion zum Testen erhalten :).
Wird also nicht mehr lange dauern, bis ein Update öffentlich erhältlich sein wird.

Anhängen möchte ich die Testversion nicht, da sich noch einiges ändern kann...

TomPro

#8
Habe nun doch das Wochenende genutz um mich nochmal mit FSO vertrauter zu machen und folgende (bald veraltete) Lösung zu probieren

//----------------------------------------------------------------------------
//--- 1stStrike Testsamples (by TomPro)
//----------------------------------------------------------------------------

//----------------------------------------------------------------------------
//------ Global
//--------- Objects
var FSO = new ActiveXObject("Scripting.FileSystemObject");

//--------- Variables


//--------- Imports
var JSFile, File = null;
var ImportFile = new Object;
ImportFile = {};
ImportFile["GlobalVar"] = fb.FoobarPath + "1stStrike\\js\\GlobalVar.js";
ImportFile["Color"] = fb.FoobarPath + "1stStrike\\js\\Color.js";
ImportFile["Text"] = fb.FoobarPath + "1stStrike\\js\\Text.js";

for (File in ImportFile) {
if (FSO.FileExists(ImportFile[File])) {
JSFile = FSO.OpenTextFile(ImportFile[File]);
eval(JSFile.ReadAll());
JSFile.close();
} else {
fb.ShowPopupMessage("File not found : \"" + ImportFile[File] + "\"!","WSH Panel Mod - File Not Found",1);
}
}


im WSH Fenster und die Dateien mit entsprechendem Speicherort wie folgt:

//----------------------------------------------------------------------------
//--- Script for WSH Panel for foobar2000
//---
//--- Windows Scripting Host Panel
//--- Modded by T.P. Wang
//---
//--- To use since Vers. 1.0
//----------------------------------------------------------------------------
//--- 1stStrike - Global Variable (by TomPro)
//----------------------------------------------------------------------------

//----------------------------------------------------------------------------
//------   Global
//---------   Window
var ww = window.Width;
var wh = window.Height;

var Setup_File = fb.FoobarPath + "1stStrike\\1stStrike.ini"
var No_Cover = fb.FoobarPath + "1stStrike\\IMG\\NoCover.png"


//----------------------------------------------------------------------------
//--- Script for WSH Panel for foobar2000
//---
//--- Windows Scripting Host Panel
//--- Modded by T.P. Wang
//---
//--- To use since Vers. 1.0
//----------------------------------------------------------------------------
//--- 1stStrike - Color (by TomPro) - from Helpers (by Wang)
//----------------------------------------------------------------------------

//----------------------------------------------------------------------------
//------   Colors
//---------   Generate/Modify Colors
function RGB() {
var R,G,B = 0; A = 0xff;
switch (arguments.length) {
// fall-thru
case 4:; A = arguments[3];
case 3:; B = arguments[2];
case 2:; G = arguments[1];
case 1:; R = arguments[0]; break;
default:; return 0;
}
return ((A << 24) | (R << 16) | (G << 8) | (B));
}

function RGBA() {
var R,G,B = 0; A = 0xff;
switch (arguments.length) {
// fall-thru
case 4:; A = arguments[3];
case 3:; B = arguments[2];
case 2:; G = arguments[1];
case 1:; R = arguments[0]; break;
default:; return 0;
}
return ((A << 24) | (R << 16) | (G << 8) | (B));
}

function getAlpha(color) {return ((color >> 24) & 0xff)}
function getRed(color) {return ((color >> 16) & 0xff)}
function getGreen(color) {return ((color >> 8) & 0xff)}
function getBlue(color) {return (color & 0xff)}

function setAlpha(color, a) {return ((color & 0x00ffffff) | (a << 24))}
function setRed(color, r) {return ((color & 0xff00ffff) | (r << 16))}
function setGreen(color, g) {return ((color & 0xffff00ff) | (g << 8))}
function setBlue(color, b) {return ((color & 0xffffff00) | b)}

//---------   Pre-Calculated Colors
Colors = {
AliceBlue : 0xFFF0F8FF,
AntiqueWhite : 0xFFFAEBD7,
Aqua : 0xFF00FFFF,
Aquamarine : 0xFF7FFFD4,
Azure : 0xFFF0FFFF,
Beige : 0xFFF5F5DC,
Bisque : 0xFFFFE4C4,
Black : 0xFF000000,
BlanchedAlmond : 0xFFFFEBCD,
Blue : 0xFF0000FF,
BlueViolet : 0xFF8A2BE2,
Brown : 0xFFA52A2A,
BurlyWood : 0xFFDEB887,
CadetBlue : 0xFF5F9EA0,
Chartreuse : 0xFF7FFF00,
Chocolate : 0xFFD2691E,
Coral : 0xFFFF7F50,
CornflowerBlue : 0xFF6495ED,
Cornsilk : 0xFFFFF8DC,
Crimson : 0xFFDC143C,
Cyan : 0xFF00FFFF,
DarkBlue : 0xFF00008B,
DarkCyan : 0xFF008B8B,
DarkGoldenrod : 0xFFB8860B,
DarkGray : 0xFFA9A9A9,
DarkGreen : 0xFF006400,
DarkKhaki : 0xFFBDB76B,
DarkMagenta : 0xFF8B008B,
DarkOliveGreen : 0xFF556B2F,
DarkOrange : 0xFFFF8C00,
DarkOrchid : 0xFF9932CC,
DarkRed : 0xFF8B0000,
DarkSalmon : 0xFFE9967A,
DarkSeaGreen : 0xFF8FBC8B,
DarkSlateBlue : 0xFF483D8B,
DarkSlateGray : 0xFF2F4F4F,
DarkTurquoise : 0xFF00CED1,
DarkViolet : 0xFF9400D3,
DeepPink : 0xFFFF1493,
DeepSkyBlue : 0xFF00BFFF,
DimGray : 0xFF696969,
DodgerBlue : 0xFF1E90FF,
Firebrick : 0xFFB22222,
FloralWhite : 0xFFFFFAF0,
ForestGreen : 0xFF228B22,
Fuchsia : 0xFFFF00FF,
Gainsboro : 0xFFDCDCDC,
GhostWhite : 0xFFF8F8FF,
Gold : 0xFFFFD700,
Goldenrod : 0xFFDAA520,
Gray : 0xFF808080,
Green : 0xFF008000,
GreenYellow : 0xFFADFF2F,
Honeydew : 0xFFF0FFF0,
HotPink : 0xFFFF69B4,
IndianRed : 0xFFCD5C5C,
Indigo : 0xFF4B0082,
Ivory : 0xFFFFFFF0,
Khaki : 0xFFF0E68C,
Lavender : 0xFFE6E6FA,
LavenderBlush : 0xFFFFF0F5,
LawnGreen : 0xFF7CFC00,
LemonChiffon : 0xFFFFFACD,
LightBlue : 0xFFADD8E6,
LightCoral : 0xFFF08080,
LightCyan : 0xFFE0FFFF,
LightGoldenrodYellow : 0xFFFAFAD2,
LightGray : 0xFFD3D3D3,
LightGreen : 0xFF90EE90,
LightPink : 0xFFFFB6C1,
LightSalmon : 0xFFFFA07A,
LightSeaGreen : 0xFF20B2AA,
LightSkyBlue : 0xFF87CEFA,
LightSlateGray : 0xFF778899,
LightSteelBlue : 0xFFB0C4DE,
LightYellow : 0xFFFFFFE0,
Lime : 0xFF00FF00,
LimeGreen : 0xFF32CD32,
Linen : 0xFFFAF0E6,
Magenta : 0xFFFF00FF,
Maroon : 0xFF800000,
MediumAquamarine : 0xFF66CDAA,
MediumBlue : 0xFF0000CD,
MediumOrchid : 0xFFBA55D3,
MediumPurple : 0xFF9370DB,
MediumSeaGreen : 0xFF3CB371,
MediumSlateBlue   : 0xFF7B68EE,
MediumSpringGreen : 0xFF00FA9A,
MediumTurquoise : 0xFF48D1CC,
MediumVioletRed : 0xFFC71585,
MidnightBlue : 0xFF191970,
MintCream : 0xFFF5FFFA,
MistyRose : 0xFFFFE4E1,
Moccasin : 0xFFFFE4B5,
NavajoWhite : 0xFFFFDEAD,
Navy : 0xFF000080,
OldLace : 0xFFFDF5E6,
Olive : 0xFF808000,
OliveDrab : 0xFF6B8E23,
Orange : 0xFFFFA500,
OrangeRed : 0xFFFF4500,
Orchid : 0xFFDA70D6,
PaleGoldenrod : 0xFFEEE8AA,
PaleGreen : 0xFF98FB98,
PaleTurquoise : 0xFFAFEEEE,
PaleVioletRed : 0xFFDB7093,
PapayaWhip : 0xFFFFEFD5,
PeachPuff : 0xFFFFDAB9,
Peru : 0xFFCD853F,
Pink : 0xFFFFC0CB,
Plum : 0xFFDDA0DD,
PowderBlue : 0xFFB0E0E6,
Purple : 0xFF800080,
Red : 0xFFFF0000,
RosyBrown : 0xFFBC8F8F,
RoyalBlue : 0xFF4169E1,
SaddleBrown : 0xFF8B4513,
Salmon : 0xFFFA8072,
SandyBrown : 0xFFF4A460,
SeaGreen : 0xFF2E8B57,
SeaShell : 0xFFFFF5EE,
Sienna : 0xFFA0522D,
Silver : 0xFFC0C0C0,
SkyBlue : 0xFF87CEEB,
SlateBlue : 0xFF6A5ACD,
SlateGray : 0xFF708090,
Snow : 0xFFFFFAFA,
SpringGreen : 0xFF00FF7F,
SteelBlue : 0xFF4682B4,
Tan : 0xFFD2B48C,
Teal : 0xFF008080,
Thistle : 0xFFD8BFD8,
Tomato : 0xFFFF6347,
Transparent : 0x00FFFFFF,
Turquoise : 0xFF40E0D0,
Violet : 0xFFEE82EE,
Wheat : 0xFFF5DEB3,
White : 0xFFFFFFFF,
WhiteSmoke : 0xFFF5F5F5,
Yellow : 0xFFFFFF00,
YellowGreen : 0xFF9ACD32
};


//----------------------------------------------------------------------------
//--- Script for WSH Panel for foobar2000
//---
//--- Windows Scripting Host Panel
//--- Modded by T.P. Wang
//---
//--- To use since Vers. 1.0
//----------------------------------------------------------------------------
//--- 1stStrike - Text (by TomPro) - from Helpers (by Wang)
//----------------------------------------------------------------------------

//----------------------------------------------------------------------------
//------   Text Options

//---------   Font
// format : x = gdi.Font("FontName", ptSize, FStyle.Style);

//------------   Font Style
var FStyle = { Normal: 0, Bold: 1, Italic: 2, Underline: 4, Strikeout: 8 };

//------------   Helper
// Convert Point size to Pixel size (always used in gdi.Font())
function Point2Pixel(pt, dpi) { return (pt * dpi / 72)};

//---------   String Format
// Format: StrFmt(alignH, alignV, trimming, flags)

//------------   Align
var Align = { Left: 0, Center: 1, Right: 2, Top: 0, Middle: 1, Bottom: 2 };

//------------   Trimming
var Trim = { No: 0, Chara: 1, Word: 2, ElipsChara: 3, ElipsWord: 4, ElipsPath: 5 };

//------------   Flags
var Flag = {
Rtl : 0x0001,
Vert : 0x0002,
Nofit : 0x0004,
Dispctrl : 0x0020,
Nofallback : 0x0400,
Trailspace : 0x0800,
Nowrap : 0x1000,
Linelimit : 0x2000,
Noclip : 0x4000
}

//------------   Set String Format
// Helper function for DrawString()/MeasureString()
function StrFmt() {
var alignH,alignV,trimming,flags = 0;
switch (arguments.length)
{
// fall-thru
case 4:; flags = arguments[3];
case 3:; trimming = arguments[2];
case 2:; alignV = arguments[1];
case 1:; alignH = arguments[0]; break;
default:; return 0;
}
return ((alignH << 28) | (alignV << 24) | (trimming << 20) | flags);
}



Funtioniert bestens.