(´・∀・`) JScript .NET スレッド
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2005/08/12(金) 19:29:35関連リンク
JScript .NETの紹介
http://www.microsoft.com/japan/msdn/columns/scripting/scripting07142000.asp
[MSDN] JScript
http://www.microsoft.com/japan/msdn/library/ja/jscript7/html/jsoriJScript.asp
.NET Framework ダウンロード情報
http://www.microsoft.com/japan/msdn/netframework/downloads/
JScript.NET (入門者向け)
http://homepage3.nifty.com/aya_js/JScript.NET/
.NET Framework SDKで始める .NETプログラミング
http://www.atmarkit.co.jp/fdotnet/special/dotnet_sdk/dotnetsdk01.html
関連スレ
ECMAScript デス 2
http://pc8.2ch.net/test/read.cgi/tech/1088298991/l50
0002デフォルトの名無しさん
2005/08/12(金) 19:35:540003デフォルトの名無しさん
2005/08/12(金) 19:36:57お茶ドゾーつ旦^
漏れもせっかく立てたスレ女に潰されたから気持ちは分かるけどさ。・゚・(ノД`)・゚・。
つうか、こんなスレ立てる>>1がキモい童貞だと思うのは漏れだけ?
まあ,皆分かってると思うけど、>>1はスルーでつよ(`・ω・´)
漏れこう見えても(見えないけどw)そこそこ有名な
国立大学出てるからさ,形の見えないネットの世界で一方的に
批判するのはどうかと思う訳。って思っている漏れガイル。
そんな希ガス。
童貞に限ってこういう糞スレ立てるからwうえっwwwww
漏れも一人の時は構って欲しくてこういうスレ立てたこともあったけどさ、
今は資産家の息子さんと結婚して幸せな生活送っているから、
なんというか、これ以上不幸な人を増やしたくないんだよね。
漏れを救ってくれたのは旦那タンなんだけどね(笑)
トメとはあんま上手くいってないけどさ。
って,思いっきりスレ違い気味になってきたw
すれ違いにつきsageで。
長文スマソ。回線切って吊ってきます(`;ω;´)ブワッ
0004デフォルトの名無しさん
2005/08/12(金) 19:37:200005デフォルトの名無しさん
2005/08/12(金) 19:42:32import System;
Console.WriteLine("hello, world");
0006デフォルトの名無しさん
2005/08/12(金) 19:47:050007デフォルトの名無しさん
2005/08/12(金) 19:47:510008デフォルトの名無しさん
2005/08/12(金) 20:24:24hello.js(1,8) : error JS1004: ';' が必要です。
hello.js(1,1) : error JS1135: 変数 'MsgBox' が宣言されていません。
hello.js(1,8) : warning JS1169: 式は実行されません。
0009デフォルトの名無しさん
2005/08/12(金) 20:25:23error JS1135: 変数 'System' が宣言されていません。
0010デフォルトの名無しさん
2005/08/12(金) 20:34:11import System.Windows.Forms;
MessageBox.Show("hello, world!");
0011デフォルトの名無しさん
2005/08/12(金) 20:45:31print("Hello, World!");
でいいんだった。
0012デフォルトの名無しさん
2005/08/14(日) 22:39:33案外面倒だったりする。
0013デフォルトの名無しさん
2005/08/15(月) 14:00:22CodeDomでコンパイルしてアセンブリオブジェクトを取得した後
アセンブリ内の関数を呼び出す方法はわかったのですが、コードの冒頭から実行する方法がわかりません
0014デフォルトの名無しさん
2005/08/18(木) 12:58:540015デフォルトの名無しさん
2005/08/19(金) 22:25:13import System;var q='"',s="import System;var q='{0}',s={0}{1}{0};Console.WriteLine(s,q,s);";Console.WriteLine(s,q,s);
0016デフォルトの名無しさん
2005/08/24(水) 00:12:17E:\>type calc.js
import System;
var expr : String, ans : Number;
while ((expr = Console.ReadLine()) != null) {
try {
eval("with(Math) { ans=(" + expr + ");}");
Console.WriteLine(ans);
}
catch (e : Exception) {
Console.WriteLine("Error");
}
}
E:\>jsc /nologo /fast- calc.js
E:\>calc.exe
1+2+3
6
1/3
0.333333333333333
sqrt(2)
1.4142135623731
r=5
5
2*PI*r
31.4159265358979
Console.WriteLine("hello")
hello
NaN (非数値)
^Z
0017デフォルトの名無しさん
2005/08/25(木) 17:31:44で始まるコードってなんですか?
これあるとFirefoxで読めないんですけど。
どうすればいいのでしょか?
0018デフォルトの名無しさん
2005/08/25(木) 19:39:36思いっっきりスレ違いですなあ。誤爆?
http://www.microsoft.com/japan/msdn/workshop/author/behaviors/overview/elementb_ovw.asp
0019デフォルトの名無しさん
2005/08/26(金) 00:12:52■(((Microsoft.NET総合スレッド)))■
http://pc8.2ch.net/test/read.cgi/tech/1124784480/l50
0020デフォルトの名無しさん
2005/08/29(月) 22:13:51import System;
import System.Collections;
var arguments: ArrayList = new ArrayList(Environment.GetCommandLineArgs());
arguments.RemoveAt(0);
var nFlag = arguments.Count > 0 && arguments[0] === "-n";
if (nFlag)
arguments.RemoveAt(0);
Console.Write(String.Join(" ", String[](arguments.ToArray())));
if (! nFlag)
Console.WriteLine();
0021デフォルトの名無しさん
2005/08/29(月) 22:16:45booleanが抜けてた。なくても動くけれど
var nFlag : boolean = …
0022デフォルトの名無しさん
2005/08/29(月) 22:22:240023デフォルトの名無しさん
2005/08/29(月) 22:25:51一々型付けしなくてもいいってメリットはあるね。
0024デフォルトの名無しさん
2005/08/29(月) 22:45:43// echo.js
import System;
var arguments = Environment.GetCommandLineArgs().slice();
arguments.shift();
var nFlag = arguments.length > 0 && arguments[0] == "-n";
if (nFlag)
arguments.shift();
Console.Write("{0}{1}", arguments.join(" "), nFlag ? "" : "\n");
0025デフォルトの名無しさん
2005/08/29(月) 23:24:30const nFlag : boolean = arguments.Count > 0 && arguments[0] === "-n";
とすると「***内部コンパイラ エラー***」となる。これはコンパイラのバグか。
var t : boolean = arguments.Count > 0 && arguments[0] === "-n";
const nFlag : boolean = t;
とするとエラーにならないし。
0026デフォルトの名無しさん
2005/08/30(火) 01:39:44Assemblyが手に入ったならあとはEntryPointプロパティでMethodInfoが手にはいるからそいつをInvokeだ。
ちなみにjsc.exeだと自動的に"JScript Main"クラスを作成し、その静的メソッドMainをエントリポイントに割り当てる。
この中身にベタで書かれたコードが内蔵される。
……エントリポイントを任意のメソッドであると明示することってできたっけ?
0027デフォルトの名無しさん
2005/08/30(火) 23:07:26わ。ありがとうございます。やってみます。
jsc でコンパイルして、Reflect関連ツールで覗いてみたらグローバルオブジェクトを継承したクラスのメソッド?になってたような。
0028デフォルトの名無しさん
2005/08/31(水) 08:45:33EntryPoint が null でした orz
jscと同じような加工を施さないとだめな気がしてきた。
0029デフォルトの名無しさん
2005/08/31(水) 10:51:42……あ、ひょっとしてCompilerParametersのExecutableをtrueにしてないんじゃ?
サンプル書いてみた。
import System;
import System.CodeDom.Compiler;
import System.Reflection;
import Microsoft.JScript;
var source : String = "var ie = new ActiveXObject(\"InternetExplorer.Application\");"
+ "ie.Navigate(\"ttp://www.yahoo.com/\");"
+ "ie.Visible = true;";
var provider : JScriptCodeProvider = new JScriptCodeProvider();
var jsc : ICodeCompiler = provider.CreateCompiler();
var param : CompilerParameters = new CompilerParameters();
param.GenerateInMemory = true;
param.GenerateExecutable = true;
var result : CompilerResults = jsc.CompileAssemblyFromSource(param, source);
var assembly : Assembly = result.CompiledAssembly;
var entry : MethodInfo = assembly.EntryPoint;
var args : Object[] = new Object[1];
entry.Invoke(null, new Object[1]);
0030デフォルトの名無しさん
2005/08/31(水) 11:19:18○ CompilerParametersのGenerateExecutable
for...inってSystem.Arrayから派生した配列には使えないの?
いや使えないことはないんだけど何故か要素じゃなくてキー、つまり0からの添え字が列挙されちゃう……役たたねー。
0031デフォルトの名無しさん
2005/08/31(水) 11:23:220032デフォルトの名無しさん
2005/08/31(水) 13:29:32GenerateExecutable = true してませんでした m(_ _)m
わぁ出来た。ありがとうございました。
0033デフォルトの名無しさん
2005/09/20(火) 00:29:120034デフォルトの名無しさん
2005/10/03(月) 02:11:080035デフォルトの名無しさん
2005/11/30(水) 22:00:350036デフォルトの名無しさん
2005/12/17(土) 01:31:420037デフォルトの名無しさん
2005/12/17(土) 05:47:580038デフォルトの名無しさん
2005/12/17(土) 20:45:550039デフォルトの名無しさん
2006/01/18(水) 21:48:01// sleep.js - suspend execution for an interval of time
import System;
import System.Threading;
var args: String[] = Environment.GetCommandLineArgs();
if (args.Length == 2) {
try {
Thread.Sleep(1000 * Int32.Parse(args[1]));
}
catch (e: Exception) {
Console.Error.WriteLine("{0}: Invalid time interval '{1}'", args[0], args[1]);
usage();
}
}
else
usage();
function usage(): void {
Console.Error.WriteLine("Usage: {0} <time>", args[0]);
Console.Error.WriteLine(" Specify time in seconds");
Environment.Exit(1);
}
0040デフォルトの名無しさん
2006/02/03(金) 21:15:140041デフォルトの名無しさん
2006/02/12(日) 23:10:30import System;
var a = [];
var c;
while ((c = Console.Read()) >= 0)
if (c > 32)
a.push(String.fromCharCode(c));
print(" [゚д゚] <デフラグガカンリョウシマシタ");
print(" /[_]ヽ");
print(" | |");
print(a.sort().join(""));
0042まいちゃん ◆sGiKVw3hJo
2006/02/13(月) 03:35:350043デフォルトの名無しさん
2006/02/14(火) 00:33:040044ms ◆OOuOpXqoBQ
2006/02/20(月) 20:02:12// defragman.js
import System;
var a = [];
var c;
print("スタート : ");
while ((c = Console.Read()) >= 0 )
{
if (c > 32) a.push(String.fromCharCode(c));
else break;
}
print(" [゚д゚] <デフラグガカンリョウシマシタ");
print(" /[_]ヽ");
print(" | |");
print(a.sort().join(""));
0045デフォルトの名無しさん
2006/02/20(月) 20:35:02breakしたらだめだと思う
0046繁蔵
2006/02/20(月) 21:05:200047デフォルトの名無しさん
2006/02/20(月) 21:05:26// defragman.js
import System;
import System.Collections;
var a : ArrayList = new ArrayList();
var c : int;
while ((c = Console.Read()) >= 0)
if (c > 32)
a.Add(c);
a.Sort();
Console.WriteLine(" [゚д゚] <デフラグガカンリョウシマシタ");
Console.WriteLine(" /[_]ヽ");
Console.WriteLine(" | |");
for (var i: char in a)
Console.Write(Convert.ToChar(i));
Console.WriteLine();
0048繁蔵
2006/02/20(月) 21:06:360049繁蔵
2006/02/20(月) 21:08:24誰か、教えて頂けませんか?
0050デフォルトの名無しさん
2006/02/20(月) 21:09:190051デフォルトの名無しさん
2006/02/20(月) 21:12:31C#初心者なら↓がいいですよ。
ふらっとC♯(初心者用) Part6
http://pc8.2ch.net/test/read.cgi/tech/1122001458/l50
0052デフォルトの名無しさん
2006/02/21(火) 00:55:25// main.js
import System;
import System.IO;
import System.Web;
import System.Web.Hosting;
import MyAspHost;
var mh: MyHost = MyHost(ApplicationHost.CreateApplicationHost(
MyHost, "/", Environment.CurrentDirectory));
var page: String = "test.aspx";
var sw: StringWriter = new StringWriter();
mh.WriteHtmlPage(page, String.Empty, TextWriter(sw));
sw.Flush();
Console.Write(sw.GetStringBuilder().ToString());
// myasphost.js - myasphost.dllをbinフォルダに入れておく
import System;
import System.IO;
import System.Web;
import System.Web.Hosting;
package MyAspHost {
class MyHost extends MarshalByRefObject {
function WriteHtmlPage(page: String, query: String, output: TextWriter) {
var swr: SimpleWorkerRequest = new SimpleWorkerRequest(page, query, output);
HttpRuntime.ProcessRequest(swr);
}
}
}
0053デフォルトの名無しさん
2006/03/15(水) 00:21:120054デフォルトの名無しさん
2006/03/18(土) 19:49:49はJScript.netで簡単に作れる。
0055デフォルトの名無しさん
2006/03/18(土) 21:02:560056http://www.vector.co.jp/soft/win95/util/se072729.html
2006/03/18(土) 21:51:16もしくは64bitにネイティブ対応したテキスト置換ソフトありますか?
そういや64bitにネイティブ対応している2chブラウザてありましたっけ?
0057デフォルトの名無しさん
2006/03/18(土) 22:06:090058デフォルトの名無しさん
2006/03/27(月) 20:16:32UNLHA32.dllみたいなのだとラップしてもTypeLoadException で落ちる。
これってアンマネージ側が対応してないと無理ってことっすか?
0059デフォルトの名無しさん
2006/03/27(月) 21:10:15を見てみては?
006058
2006/03/28(火) 17:32:03/r:で違うとこ指してただけというオチでした・・・
0061デフォルトの名無しさん
2006/05/17(水) 15:26:42MSIEで外部のウェブサイト閲覧中に HTMLに埋め込まれたJScriptでWMIが操作できるのって普通ですか?
とあるアプリにオブジェクトを色々作れる関数が入っているのですが、ユーザーに無表示でサービス止めたり、ファイル埋め込みができるスクリプトが書けたりして困ってます。
開発者曰く、「WebからJScriptでWMIが弄れるのは普通に仕様だからアプリの問題では無い」とか。
でもそうすると悪質なサイトを訪問するだけで一発BOT感染できるのでないかと疑問が。
MSIEでどのようなセキュリティ上の制限が適用されているかの一覧みたいのがあったら助かります。
オフトピですが、宜しくお願いします。
0063デフォルトの名無しさん
2006/05/20(土) 10:40:47そういうのってインターネットオプションで信頼済サイトに登録してないと
実行できないようになってなかったっけ。
するとどこでもWMIはセキュリティホールですね。
どうやって開発者にねじ込むか。
0065デフォルトの名無しさん
2006/05/24(水) 00:29:22しかもpoderosa自身のオブジェクトを公開してるけど、どうやってるの?
ソース見てもわからんかった。
0066デフォルトの名無しさん
2006/07/12(水) 11:35:520067デフォルトの名無しさん
2006/07/12(水) 16:36:19http://d.hatena.ne.jp/rahAloe/20060712
パクッタだけなのにそこそこいいできだと思ってはいるんだがisComplete()関数がちょっとイマイチなんだわ。
具体的にいうと単純に2回以上のネストに耐えられない。
正直正規表現とかよくわからなくててきとーなんだ。
だれかisComplete関数よくするアイディアください。
0068デフォルトの名無しさん
2006/07/12(水) 16:40:390069デフォルトの名無しさん
2006/07/14(金) 16:16:02それは.NetでなくWSHなので↓のいずれかのほうが適当でしょう。
WSH(・∀・)スレッド!
http://pc8.2ch.net/test/read.cgi/tech/1055075469/l50
お前ら、wsh使ってますか? part5
http://pc8.2ch.net/test/read.cgi/win/1126543183/l50
ECMAScript デス 2
http://pc8.2ch.net/test/read.cgi/tech/1088298991/l50
0070デフォルトの名無しさん
2006/07/14(金) 22:49:45そうかすまん。ここ.NETスレか。
OKありがとう。
007167=68=70
2006/07/17(月) 17:49:54なんとかこのようなJScript shellができますた。
できたはいいのだが、いちいち
コマンドプロンプトで
> cscript.exe imjs.js
とする。
とやらないといけないのが面倒くさい。
そこで簡単に実行できるようにJScript.NETのほうからこのスクリプト呼び出すようにしようと
『JScriptハンドブック』という本の最後のページにあるように
import System;
System.Diagnostics.Process.Start("./imjs.js");
でjsc.exeでコンパイルして実行させてみたんだけれど
imjs.jsの中にあるWScript.StdOut.Writeという部分でエラー起こすんだわ。
どうすれば.NETから実行できる?
0072デフォルトの名無しさん
2006/07/17(月) 17:52:37微妙にリンク間違えた。
0073デフォルトの名無しさん
2006/07/17(月) 20:17:02import System;
System.Diagnostics.Process.Start("cscript.exe", "./imjs.js");
とすればよかった。
0074デフォルトの名無しさん
2006/08/01(火) 16:12:42一々別窓を開かないバージョンを作ってみた。
import System;
import System.Diagnostics;
var imjs : Process = new Process();
imjs.StartInfo.FileName = "cscript.exe";
imjs.StartInfo.Arguments = "//nologo ./imjs.js";
imjs.StartInfo.UseShellExecute = false;
imjs.Start();
imjs.WaitForExit();
0076デフォルトの名無しさん
2006/08/23(水) 16:37:17計算してしまうので、そうならないようにするには、下のように
するしかないのかな。
「独自に作成したコードから直接使用するためのものではありません」な
メソッド使ってるけど。
import Microsoft.VisualBasic.CompilerServices;
import System;
var a : int = 123;
var b : int = 45;
var x : int;
x = Operators.IntDivideObject(a, b);
Console.WriteLine(x);
と思ったけどOperators.IntDivideObjectを一々呼ぶよりは単純に
x = int(a / b);
としたほうがはるかに速かった。
0077デフォルトの名無しさん
2006/08/24(木) 15:25:09// SetIEPrintBackground.js
// コンパイル方法: jsc /t:winexe SetIEPrintBackground.js
import Microsoft.Win32;
import System;
import System.Windows.Forms;
var result: DialogResult = MessageBox.Show("印刷時、背景の色とイメージを印刷しますか?",
"Internet Explorer 設定",
MessageBoxButtons.YesNoCancel);
const keyName: String = "Software\\Microsoft\\Internet Explorer\\Main";
const name: String = "Print_Background";
var regKey: RegistryKey = Registry.CurrentUser.OpenSubKey(keyName, true);
if (result == DialogResult.Yes)
regKey.SetValue(name, "yes");
else if (result == DialogResult.No)
regKey.SetValue(name, "no");
0078デフォルトの名無しさん
2006/08/24(木) 19:04:54var name = [
"line1",
"line2",
"line3",
].join("\n");
+ で連結するより高速です。
0079デフォルトの名無しさん
2006/08/24(木) 19:17:39var name = "\
line1\
line2\
line3\
";
なんて書き方をよく使ってます。
※行末の「\」の直後で改行するように
0080デフォルトの名無しさん
2006/08/24(木) 21:53:33var name = "\
line1\n\
line2\n\
line3\n\
";
だった
0081デフォルトの名無しさん
2006/08/24(木) 22:09:47var name = ["line1", "line2", "line3"].join("\n");
と
var name = "line1\n" + "line2\n" + "line3\n";
の処理速度を比べてみたら後者の方がはるかに速かった。
後者はコンパイル時に
var name = "line1\nline2\nline3\n";
とみなしているようです。
0082デフォルトの名無しさん
2006/08/25(金) 00:10:05と
var name = "line1\n" + "line2\n" + "line3\n";
は,等価じゃないな
0083デフォルトの名無しさん
2006/08/25(金) 00:16:540084デフォルトの名無しさん
2006/08/26(土) 15:46:240085デフォルトの名無しさん
2006/08/26(土) 16:00:02C#,J#,Java等への移行も楽だし。
0086デフォルトの名無しさん
2006/09/24(日) 05:22:02あと統合環境ってない?
0087デフォルトの名無しさん
2006/09/24(日) 11:11:58作れるんじゃね?
VC2005あるんじゃね?
0088デフォルトの名無しさん
2006/09/25(月) 00:56:27作れますよ。統合環境で作ったことは無いけれど。
0089デフォルトの名無しさん
2006/09/25(月) 00:58:54// gototest.js
import System;
var $goto : int = 0;
do switch ($goto) {
case 0:
Console.Write("文字列を入力: ");
var s : String = Console.ReadLine();
case 20:
$goto = 40; break;
case 30:
Console.WriteLine(s);
$goto = 20; break;
case 40:
Console.Write("hello, ");
$goto = 30; break;
default:
$goto = 0;
} while ($goto);
0090デフォルトの名無しさん
2006/09/25(月) 01:22:02// monadialog.js
import Accessibility;
import System.Drawing;
import System.Windows.Forms;
var f: Form = new Form();
f.Size = new System.Drawing.Size(300, 125); f.Text = "確認";
var mona : Label = new Label();
mona.AutoSize = true; mona.BackColor = Color.White;
mona.BorderStyle = BorderStyle.FixedSingle;
mona.Font = new Font("MS PGothic", 12); mona.Location = new Point(10, 10);
mona.Text = "\n ∧_∧ \n( ´∀`) \n( )";
f.Controls.Add(mona);
var message : Label = new Label();
message.Text = "ダイアログを表示してみますた。";
message.AutoSize = true; message.Location = new Point(100, 20);
f.Controls.Add(message);
var yes: Button = new Button();
yes.DialogResult = DialogResult.Yes; yes.Location = new Point(110, 60);
yes.NotifyDefault(true); yes.Text = "はい";
f.Controls.Add(yes);
var no : Button = new Button();
no.DialogResult = DialogResult.No; no.Location = new Point(190, 60);
no.Text = "いいえ";
f.Controls.Add(no);
f.ShowDialog();
0091デフォルトの名無しさん
2006/09/30(土) 21:53:54D:\>type MyServer.js
import System;
import System.Runtime.InteropServices;
public Guid("E65CFE0B-2F1E-45A4-9FBE-4CC1D2B20AE8") ProgId("MyServer.Sample")
class MyServerSample {
private var _property : int = 0;
public function Method(s: String): int {
Console.WriteLine(s);
return s.Length;
}
public function get Property() : int {
return _property;
}
public function set Property(n : int) {
_property = n;
}
}
0092デフォルトの名無しさん
2006/09/30(土) 21:55:00D:\>jsc /nologo /t:library MyServer.js
D:\>regasm MyServer.dll /tlb:MyServer.tlb /silent
D:\>copy MyServer.dll %SystemRoot%\System32
1 個のファイルをコピーしました。
D:\>type test.js
var Sample = new ActiveXObject("MyServer.Sample");
Sample.Property = 123;
Sample.Method(Sample.Property);
D:\>cscript //nologo test.js
123
D:\>
0093デフォルトの名無しさん
2006/10/06(金) 16:48:28JScriptにしてみたけど、とりあえず動作するからこんなんでいいのかな。
import System;
import System.Timers;
public class Timer1 {
public static function Main(): void
{
var aTimer : Timer = new Timer();
aTimer.add_Elapsed(OnTimedEvent);
aTimer.Interval = 2000;
aTimer.Enabled = true;
Console.WriteLine("Press the Enter key to exit the program.");
Console.ReadLine();
GC.KeepAlive(aTimer);
}
private static function OnTimedEvent(source : Object, e : ElapsedEventArgs): void
{
Console.WriteLine("Hello World!");
}
}
Timer1.Main();
0094デフォルトの名無しさん
2006/10/25(水) 00:59:39仕事のツールが簡単に出来ちゃうよ。
0095デフォルトの名無しさん
2006/10/26(木) 10:46:02JScriptで書かれたWSHのスクリプトや、Perlのスクリプトを移植するのに
重宝してるけど。
0096デフォルトの名無しさん
2006/10/29(日) 02:57:21大変便利でかなりいいですね。
■ このスレッドは過去ログ倉庫に格納されています