5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

(´・∀・`) JScript .NET スレッド

1 :デフォルトの名無しさん:2005/08/12(金) 19:29:35
JScript .NETを語るスレです。質問等どうぞ。

関連リンク
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

2 :デフォルトの名無しさん:2005/08/12(金) 19:35:54
重複

3 :デフォルトの名無しさん:2005/08/12(金) 19:36:57
あらあらまたでつか。
お茶ドゾーつ旦^
漏れもせっかく立てたスレ女に潰されたから気持ちは分かるけどさ。・゚・(ノД`)・゚・。
つうか、こんなスレ立てる>>1がキモい童貞だと思うのは漏れだけ?
まあ,皆分かってると思うけど、>>1はスルーでつよ(`・ω・´)
漏れこう見えても(見えないけどw)そこそこ有名な
国立大学出てるからさ,形の見えないネットの世界で一方的に
批判するのはどうかと思う訳。って思っている漏れガイル。
そんな希ガス。
童貞に限ってこういう糞スレ立てるからwうえっwwwww
漏れも一人の時は構って欲しくてこういうスレ立てたこともあったけどさ、
今は資産家の息子さんと結婚して幸せな生活送っているから、
なんというか、これ以上不幸な人を増やしたくないんだよね。
漏れを救ってくれたのは旦那タンなんだけどね(笑)
トメとはあんま上手くいってないけどさ。

って,思いっきりスレ違い気味になってきたw
すれ違いにつきsageで。
長文スマソ。回線切って吊ってきます(`;ω;´)ブワッ

4 :デフォルトの名無しさん:2005/08/12(金) 19:37:20
こちらが正しいスレとします。

5 :デフォルトの名無しさん:2005/08/12(金) 19:42:32
Hello, worldプログラムがこれだけで済む

import System;
Console.WriteLine("hello, world");

6 :デフォルトの名無しさん:2005/08/12(金) 19:47:05
MsgBox "Hello, World!"


7 :デフォルトの名無しさん:2005/08/12(金) 19:47:51
System.Console.WriteLine(">>1は死ね");


8 :デフォルトの名無しさん:2005/08/12(金) 20:24:24
>>6
hello.js(1,8) : error JS1004: ';' が必要です。
hello.js(1,1) : error JS1135: 変数 'MsgBox' が宣言されていません。
hello.js(1,8) : warning JS1169: 式は実行されません。

9 :デフォルトの名無しさん:2005/08/12(金) 20:25:23
>>7
error JS1135: 変数 'System' が宣言されていません。

10 :デフォルトの名無しさん:2005/08/12(金) 20:34:11
>>6に相当するのは

import System.Windows.Forms;
MessageBox.Show("hello, world!");

11 :デフォルトの名無しさん:2005/08/12(金) 20:45:31
ただ表示させるだけなら

print("Hello, World!");

でいいんだった。

12 :デフォルトの名無しさん:2005/08/14(日) 22:39:33
JScriptで書かれたWSHをJScript.NETに移行するのは
案外面倒だったりする。

13 :デフォルトの名無しさん:2005/08/15(月) 14:00:22
コードの冒頭から実行したいとき、エントリーポイントはどうなるんですか?
CodeDomでコンパイルしてアセンブリオブジェクトを取得した後
アセンブリ内の関数を呼び出す方法はわかったのですが、コードの冒頭から実行する方法がわかりません

14 :デフォルトの名無しさん:2005/08/18(木) 12:58:54
CodeDomはまだ使ったことないなあ。

15 :デフォルトの名無しさん:2005/08/19(金) 22:25:13
自分自身のソースを表示

import System;var q='"',s="import System;var q='{0}',s={0}{1}{0};Console.WriteLine(s,q,s);";Console.WriteLine(s,q,s);

16 :デフォルトの名無しさん:2005/08/24(水) 00:12:17
数式を計算
E:\>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

17 :デフォルトの名無しさん:2005/08/25(木) 17:31:44
PUBLIC:COMPONENT


で始まるコードってなんですか?
これあるとFirefoxで読めないんですけど。

どうすればいいのでしょか?

18 :デフォルトの名無しさん:2005/08/25(木) 19:39:36
>>17
思いっっきりスレ違いですなあ。誤爆?
http://www.microsoft.com/japan/msdn/workshop/author/behaviors/overview/elementb_ovw.asp

19 :デフォルトの名無しさん:2005/08/26(金) 00:12:52
関連スレ追加
■(((Microsoft.NET総合スレッド)))■
http://pc8.2ch.net/test/read.cgi/tech/1124784480/l50

20 :デフォルトの名無しさん:2005/08/29(月) 22:13:51
echoコマンド(もどき)

import 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();

21 :デフォルトの名無しさん:2005/08/29(月) 22:16:45
>>20
booleanが抜けてた。なくても動くけれど

var nFlag : boolean = …

22 :デフォルトの名無しさん:2005/08/29(月) 22:22:24
正直、一々型付けしてたらJScript.NETの利点が見あたらなくなると思うんだ。

23 :デフォルトの名無しさん:2005/08/29(月) 22:25:51
即席でちょっとしたプログラム作るなら
一々型付けしなくてもいいってメリットはあるね。

24 :デフォルトの名無しさん:2005/08/29(月) 22:45:43
こうするとJavaScriptっぽい感じ

// 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");

25 :デフォルトの名無しさん:2005/08/29(月) 23:24:30
>>20の5行目を

const nFlag : boolean = arguments.Count > 0 && arguments[0] === "-n";

とすると「***内部コンパイラ エラー***」となる。これはコンパイラのバグか。

var t : boolean = arguments.Count > 0 && arguments[0] === "-n";
const nFlag : boolean = t;

とするとエラーにならないし。

26 :デフォルトの名無しさん:2005/08/30(火) 01:39:44
>>13
Assemblyが手に入ったならあとはEntryPointプロパティでMethodInfoが手にはいるからそいつをInvokeだ。
ちなみにjsc.exeだと自動的に"JScript Main"クラスを作成し、その静的メソッドMainをエントリポイントに割り当てる。
この中身にベタで書かれたコードが内蔵される。
……エントリポイントを任意のメソッドであると明示することってできたっけ?

27 :デフォルトの名無しさん:2005/08/30(火) 23:07:26
>>26
わ。ありがとうございます。やってみます。

jsc でコンパイルして、Reflect関連ツールで覗いてみたらグローバルオブジェクトを継承したクラスのメソッド?になってたような。

28 :デフォルトの名無しさん:2005/08/31(水) 08:45:33
>>26
EntryPoint が null でした orz


jscと同じような加工を施さないとだめな気がしてきた。

29 :デフォルトの名無しさん:2005/08/31(水) 10:51:42
えー、nullになる?
……あ、ひょっとして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]);

30 :デフォルトの名無しさん:2005/08/31(水) 11:19:18
× CompilerParametersのExecutable
○ CompilerParametersのGenerateExecutable

for...inってSystem.Arrayから派生した配列には使えないの?
いや使えないことはないんだけど何故か要素じゃなくてキー、つまり0からの添え字が列挙されちゃう……役たたねー。

31 :デフォルトの名無しさん:2005/08/31(水) 11:23:22
WSHでもそうなってた

32 :デフォルトの名無しさん:2005/08/31(水) 13:29:32
>>29
GenerateExecutable = true してませんでした m(_ _)m

わぁ出来た。ありがとうございました。

33 :デフォルトの名無しさん:2005/09/20(火) 00:29:12
var

34 :デフォルトの名無しさん:2005/10/03(月) 02:11:08
const

35 :デフォルトの名無しさん:2005/11/30(水) 22:00:35
保守

36 :デフォルトの名無しさん:2005/12/17(土) 01:31:42
JScript 8.0は7.0とほとんど変わってないような…

37 :デフォルトの名無しさん:2005/12/17(土) 05:47:58
WSH の JScript が ECMAScript 4th edition ベースになるのはいつですか?

38 :デフォルトの名無しさん:2005/12/17(土) 20:45:55
Windows Vista が出てから?

39 :デフォルトの名無しさん: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);
}

40 :デフォルトの名無しさん:2006/02/03(金) 21:15:14
JScript.NET(ASP) + Ajaxなんて面白いかもと考えている漏れ

41 :デフォルトの名無しさん:2006/02/12(日) 23:10:30
// defragman.js
import 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(""));

42 :まいちゃん ◆sGiKVw3hJo :2006/02/13(月) 03:35:35
break;

43 :デフォルトの名無しさん:2006/02/14(火) 00:33:04
error JS1019: 'break' をループの外に設定できません。

44 :ms ◆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(""));

45 :デフォルトの名無しさん:2006/02/20(月) 20:35:02
>>44
breakしたらだめだと思う

46 :繁蔵:2006/02/20(月) 21:05:20
1

47 :デフォルトの名無しさん:2006/02/20(月) 21:05:26
.Netっぽくしてみた

// 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();

48 :繁蔵:2006/02/20(月) 21:06:36
すいません、お邪魔します。初めて2CHやるのですが、いいですか?

49 :繁蔵:2006/02/20(月) 21:08:24
C#.NETで自動販売機のプログラミングをやるのですが、文字列がまったく解りません。
誰か、教えて頂けませんか?

50 :デフォルトの名無しさん:2006/02/20(月) 21:09:19
いいですけどJScript.netスレッドでも良ければ

51 :デフォルトの名無しさん:2006/02/20(月) 21:12:31
>>49
C#初心者なら↓がいいですよ。
ふらっとC♯(初心者用) Part6
http://pc8.2ch.net/test/read.cgi/tech/1122001458/l50

52 :デフォルトの名無しさん:2006/02/21(火) 00:55:25
IISなしにtest.aspx (ASP.NETファイル)を解釈するテスト

// 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);
}
}
}

53 :デフォルトの名無しさん:2006/03/15(水) 00:21:12
// 眠い

54 :デフォルトの名無しさん:2006/03/18(土) 19:49:49
あらかじめ言っておくが64bitにネイティブ対応したテキスト置換ソフト
はJScript.netで簡単に作れる。

55 :デフォルトの名無しさん:2006/03/18(土) 21:02:56
コンパイル時間含めても全般的にActivePerlより速かった

56 :http://www.vector.co.jp/soft/win95/util/se072729.html:2006/03/18(土) 21:51:16
TextSS のWindowsXP(Professional)64bit化おながいします

もしくは64bitにネイティブ対応したテキスト置換ソフトありますか?

そういや64bitにネイティブ対応している2chブラウザてありましたっけ?





57 :デフォルトの名無しさん:2006/03/18(土) 22:06:09
マルチに見せかけた嵐か

58 :デフォルトの名無しさん:2006/03/27(月) 20:16:32
C#でラップしてwin32apiは呼び出せたんだけど、
UNLHA32.dllみたいなのだとラップしてもTypeLoadException で落ちる。
これってアンマネージ側が対応してないと無理ってことっすか?

59 :デフォルトの名無しさん:2006/03/27(月) 21:10:15
http://caldbase.sourceforge.jp/
を見てみては?

60 :58:2006/03/28(火) 17:32:03
すまん普通にできた
/r:で違うとこ指してただけというオチでした・・・

61 :デフォルトの名無しさん:2006/05/17(水) 15:26:42
print("sage");

62 : ◆DEATHPgXXc :2006/05/20(土) 02:23:29
JScript.NET ではなくて、JScriptについて質問があるんですが(オフトピでスマソ)、
MSIEで外部のウェブサイト閲覧中に HTMLに埋め込まれたJScriptでWMIが操作できるのって普通ですか?
とあるアプリにオブジェクトを色々作れる関数が入っているのですが、ユーザーに無表示でサービス止めたり、ファイル埋め込みができるスクリプトが書けたりして困ってます。
開発者曰く、「WebからJScriptでWMIが弄れるのは普通に仕様だからアプリの問題では無い」とか。
でもそうすると悪質なサイトを訪問するだけで一発BOT感染できるのでないかと疑問が。

MSIEでどのようなセキュリティ上の制限が適用されているかの一覧みたいのがあったら助かります。

オフトピですが、宜しくお願いします。

63 :デフォルトの名無しさん:2006/05/20(土) 10:40:47
>>62
そういうのってインターネットオプションで信頼済サイトに登録してないと
実行できないようになってなかったっけ。

64 : ◆DEATHPgXXc :2006/05/21(日) 23:31:39
>>63 矢張りそのような制限が本来はありますか。
するとどこでもWMIはセキュリティホールですね。
どうやって開発者にねじ込むか。

65 :デフォルトの名無しさん:2006/05/24(水) 00:29:22
poderosaってマクロ機能で、アプリケーションからJScript.NETを動かしてて
しかもpoderosa自身のオブジェクトを公開してるけど、どうやってるの?

ソース見てもわからんかった。

66 :デフォルトの名無しさん:2006/07/12(水) 11:35:52
人いないお

67 :デフォルトの名無しさん:2006/07/12(水) 16:36:19
ijs.jsを完璧にパクッたというか改良したというかとにかくこういうの作ってみた
http://d.hatena.ne.jp/rahAloe/20060712
パクッタだけなのにそこそこいいできだと思ってはいるんだがisComplete()関数がちょっとイマイチなんだわ。
具体的にいうと単純に2回以上のネストに耐えられない。
正直正規表現とかよくわからなくててきとーなんだ。
だれかisComplete関数よくするアイディアください。

68 :デフォルトの名無しさん:2006/07/12(水) 16:40:39
あと言い忘れたけどisComplete()関数の目的はとりあえずいまのところ引数文字列においてブレースが閉じられているか閉じられていないかどうか判別するというだけ。


69 :デフォルトの名無しさん:2006/07/14(金) 16:16:02
>>67-68
それは.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


70 :デフォルトの名無しさん:2006/07/14(金) 22:49:45
>>69
そうかすまん。ここ.NETスレか。
OKありがとう。

71 :67=68=70:2006/07/17(月) 17:49:54
http://d.hatena.ne.jp/rahAloe/20060716/p2#c
なんとかこのような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から実行できる?

72 :デフォルトの名無しさん:2006/07/17(月) 17:52:37
http://d.hatena.ne.jp/rahAloe/20060716/p2
微妙にリンク間違えた。

73 :デフォルトの名無しさん:2006/07/17(月) 20:17:02
解決しますた。

import System;
System.Diagnostics.Process.Start("cscript.exe", "./imjs.js");

とすればよかった。

74 :デフォルトの名無しさん:2006/08/01(火) 16:12:42
>>73
一々別窓を開かないバージョンを作ってみた。

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();


75 :73:2006/08/04(金) 18:22:27
>>74
ありがとう!
早速反映させました。

76 :デフォルトの名無しさん:2006/08/23(水) 16:37:17
JScriptで普通に a / b のように割り算をやるとaもbもdoubleに変換して
計算してしまうので、そうならないようにするには、下のように
するしかないのかな。
「独自に作成したコードから直接使用するためのものではありません」な
メソッド使ってるけど。

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);
としたほうがはるかに速かった。

77 :デフォルトの名無しさん:2006/08/24(木) 15:25:09
IEの背景の色とイメージの印刷をon/offする

// 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");

78 :デフォルトの名無しさん:2006/08/24(木) 19:04:54
改行付き文字列を見た目にもキレイに簡単出力

var name = [
"line1",
"line2",
"line3",
].join("\n");

+ で連結するより高速です。

79 :デフォルトの名無しさん:2006/08/24(木) 19:17:39
>>78

var name = "\
line1\
line2\
line3\
";

なんて書き方をよく使ってます。
※行末の「\」の直後で改行するように

80 :デフォルトの名無しさん:2006/08/24(木) 21:53:33
改行付きなら

var name = "\
line1\n\
line2\n\
line3\n\
";


だった

81 :デフォルトの名無しさん:2006/08/24(木) 22:09:47
JScript.NETで
var name = ["line1", "line2", "line3"].join("\n");

var name = "line1\n" + "line2\n" + "line3\n";
の処理速度を比べてみたら後者の方がはるかに速かった。
後者はコンパイル時に
var name = "line1\nline2\nline3\n";
とみなしているようです。

82 :デフォルトの名無しさん:2006/08/25(金) 00:10:05
var name = ["line1", "line2", "line3"].join("\n");

var name = "line1\n" + "line2\n" + "line3\n";
は,等価じゃないな

83 :デフォルトの名無しさん:2006/08/25(金) 00:16:54
line3の\nを取ればいいさ

84 :デフォルトの名無しさん:2006/08/26(土) 15:46:24
VBScriptとJScriptのどっちをよく使いますか?

85 :デフォルトの名無しさん:2006/08/26(土) 16:00:02
断然JScript。
C#,J#,Java等への移行も楽だし。

86 :デフォルトの名無しさん:2006/09/24(日) 05:22:02
JScript.NETってフォーム使ったアプリケーション作れますか?
あと統合環境ってない?

87 :デフォルトの名無しさん:2006/09/24(日) 11:11:58
>>86
作れるんじゃね?
VC2005あるんじゃね?

88 :デフォルトの名無しさん:2006/09/25(月) 00:56:27
>>86
作れますよ。統合環境で作ったことは無いけれど。

89 :デフォルトの名無しさん:2006/09/25(月) 00:58:54
BASICのgotoのようなものを実現するテスト。

// 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);

90 :デフォルトの名無しさん: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();

91 :デフォルトの名無しさん:2006/09/30(土) 21:53:54
WSH(JScript)からJScript.NETで作ったコンポーネントを利用するテスト

D:\>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;
  }
}

92 :デフォルトの名無しさん:2006/09/30(土) 21:55:00

D:\>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:\>

93 :デフォルトの名無しさん:2006/10/06(金) 16:48:28
http://msdn2.microsoft.com/ja-jp/library/system.timers.timer.aspx の使用例を
JScriptにしてみたけど、とりあえず動作するからこんなんでいいのかな。
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();

94 :デフォルトの名無しさん:2006/10/25(水) 00:59:39
JScriptって便利だね。
仕事のツールが簡単に出来ちゃうよ。


95 :デフォルトの名無しさん:2006/10/26(木) 10:46:02
しかしあまり人気ないような。
JScriptで書かれたWSHのスクリプトや、Perlのスクリプトを移植するのに
重宝してるけど。

96 :デフォルトの名無しさん:2006/10/29(日) 02:57:21
会社でWSHを広めています。
大変便利でかなりいいですね。



97 :デフォルトの名無しさん:2006/10/29(日) 03:03:24
>>96
WSH(・∀・)スレッド!
http://pc8.2ch.net/test/read.cgi/tech/1055075469/l50
というのもありますよ。

JScript.NETもなかなか使えるので使ってやってください。

98 :デフォルトの名無しさん:2006/10/29(日) 14:55:46
JScript.NETでActiveXコントロールを作ってHTMLに埋め込むテスト

J:\>type SampleControl.js
import Accessibility;
import System;
import System.ComponentModel;
import System.Drawing;
import System.Runtime.InteropServices;
import System.Windows.Forms;
public Guid("5C466CE7-5C06-49FA-869D-E0BBE71F833B") ProgId("Sample.Control")
class SampleControl extends UserControl {
  private var textName: TextBox;
  private var labelName: Label;
  private var components: IContainer;
  public function SampleControl() { InitializeComponent(); }
  public function InitializeComponent(): void {
    components = new System.ComponentModel.Container();
    textName = new TextBox();
    labelName = new Label();
    textName.Location = new Point(64, 8);
    textName.Size = new System.Drawing.Size(240, 23);
    textName.TabIndex = 0;
    labelName.Location = new Point(8, 8);
    labelName.Size = new System.Drawing.Size(56, 23);
    labelName.Text = "Name:";
    labelName.TextAlign = ContentAlignment.MiddleRight;
    Controls.AddRange(Control[]([labelName, textName]));
    Size = new System.Drawing.Size(300, 80);
  }
  public function get Value(): String { return textName.Text; }
  public function set Value(val: String) { textName.Text = val; }
}

99 :デフォルトの名無しさん:2006/10/29(日) 14:57:19
(続き)
J:\>jsc /nologo /t:library SampleControl.js

J:\>regasm /nologo /tlb:SampleControl.tlb SampleControl.dll
型は正常に登録されました。
アセンブリは 'J:\SampleControl.tlb' にエクスポートされ、タイプ ライブラリは正常
に登録されました。

J:\>copy /y SampleControl.dll %windir%\system32
  1 個のファイルをコピーしました。

J:\>type Sample.hta
<html>
<head><title>Test</title></head>
<body>
<object id="Control1" classid="clsid:5C466CE7-5C06-49FA-869D-E0BBE71F833B"
width="300" height="80" ></object><br />
<input type="button" value="Click me" onclick="alert(Control1.Value)" />
</body>
</html>
J:\>Sample.hta

(以下後始末)
J:\>regasm /nologo /unregister SampleControl.dll
型は正常に登録が解除されました。

J:\>del %windir%\system32\SampleControl.dll

J:\>

100 :デフォルトの名無しさん:2006/11/01(水) 14:06:23
バッチファイルにJScript.NETスクリプトを埋め込むテスト
http://pc8.2ch.net/test/read.cgi/tech/1148485555/65 を参照

/rスイッチは.exeが存在しても強制的にコンパイル

[hello.cmd]

@if (0==1) rem [hello.cmd]
@echo off
if exist "%0.cmd" "%0.cmd" %1
setlocal
path %SystemRoot%\Microsoft.NET\Framework\v2.0.50727
set source=%0
set target=%source:.cmd=.exe%
if /i "%1"=="/r" goto build
if exist "%target%" goto run
:build
jsc /nologo /out:"%target%" "%source%"
:run
"%target%"
goto :eof
@end
// ここからJScript
print("hello, world!");

101 :デフォルトの名無しさん:2006/11/27(月) 21:59:16
ものすごい初歩的な質問だと思うのですが、1つの変数に改行コードを
入れる場合はどうすればよいのでしょうか?
var a = "A";
var b = "B";
var c = a + (ここに改行コードを入れたい) + b;
document.writeln (c);
出力結果
A
B

\nとか%0Dとか試したのですが、エラーになってしまってよくわかりません。
よろしくお願いします。


102 :デフォルトの名無しさん:2006/11/27(月) 22:21:04
var c = a + "\n" + b;


103 :101:2006/11/27(月) 22:33:42
>>102
ありがとうございます。
しかし、IEで実行すると、改行表示されずに、
A B
と、出てしまいました。


104 :デフォルトの名無しさん:2006/11/27(月) 23:34:48
>>103
そういうことなら
var c = a + "<BR>" + b;


105 :101:2006/11/27(月) 23:50:59
>>104
結果、
A
B
になりました。

VBのように、 c = a & chr(13) & chr(10) & b
みたいなものを想像してたので、タグを直接入れるとは驚きです。
ありがとうございました。


106 :デフォルトの名無しさん:2006/11/28(火) 00:09:43
>>105
ここは JScript「.NET」 のスレ何だけど(w

VBだってIE上で改行かけるんなら<BR>なんですが。
根本的に分かってない。
document.writeln はHTMLソースを書き出すものだぞ。

ソース自体を改行したいならJSだろうとVBSだろうと文字列に改行を入れるんだし、
レンダリング結果を改行するならHTMLにしたがって<BR>

107 :デフォルトの名無しさん:2007/01/07(日) 12:09:40
あけおぬ

108 :デフォルトの名無しさん:2007/02/03(土) 21:47:05
Win32API呼び出せますか?
ほかのサンプルはあるのにJScript.NETだけないような。

109 :デフォルトの名無しさん:2007/02/03(土) 21:55:07
>>100
jsc.exeのフルパスをレジストリかどっかから取り出せませんか?


110 :デフォルトの名無しさん:2007/02/04(日) 10:42:14
>>108
直接は呼び出せないから、C#等ででラッパーを作ってやるしかなかったような。

>>109
直接取り出す方法はないような。
\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\InstallRoot
から C:\WINDOWS\Microsoft.NET\Framework\ は取り出せるけれど。
この中の v2.0.50727、v1.1.4322、v1.0.3705 というフォルダに jsc.exeがある。

111 :デフォルトの名無しさん:2007/02/04(日) 16:47:55
>>110
ラッパーというと、DLL作って呼び出すということでしょうか?
JScriptソースにC#ソースを埋め込んで、とか出来ます?
或いは、C#で>>100みたいなCMD埋め込み



112 :デフォルトの名無しさん:2007/02/04(日) 20:56:08
>>110
Set WindowsInstaller=CreateObject("WindowsInstaller.Installer")
WScript.Echo WindowsInstaller.ComponentPath("{7131646D-CD3C-40F4-97B9-CD9E4E6262EF}","{0BC7A7D7-183A-472C-BE1F-A40A0E626C74}")
で取り出せました。ありがと

113 :デフォルトの名無しさん:2007/02/04(日) 21:06:41
>>111
C#でdll作るのが楽だけど、埋め込むというならCodeDomが使えるような気がする。
>>112
バージョン決め撃ちならそれでもいいな。

114 :デフォルトの名無しさん:2007/02/05(月) 15:31:38
バッチではこんなの
FOR /F "delims=" %%1 IN ('DIR /AD /B /ON "%SystemRoot%\Microsoft.NET\Framework\v*"') DO SET DOTNET=%%~1
ECHO "%SystemRoot%\Microsoft.NET\Framework\%DOTNET%\jsc.exe"



115 :デフォルトの名無しさん:2007/02/05(月) 18:34:48
>>114
しかし、v3.0というフォルダ内には jsc.exe はないのだった。

116 :115:2007/02/05(月) 18:49:53
これでどうでしょう
@ECHO OFF
SETLOCAL
SET Framework=%SystemRoot%\Microsoft.NET\Framework
FOR /F "delims=" %%1 IN ('DIR /AD /B /ON "%SystemRoot%\Microsoft.NET\Framework\v*"') DO IF EXIST "%Framework%\%%~1\jsc.exe" set DOTNET=%%~1
SET JSC="%Framework%\%DOTNET%\jsc.exe"
ECHO %JSC%

117 :115:2007/02/05(月) 18:51:59
>>116の4行目は↓でok
FOR /F "delims=" %%1 IN ('DIR /AD /B /ON "%Framework%\v*"') DO IF EXIST "%Framework%\%%~1\jsc.exe" set DOTNET=%%~1

118 :デフォルトの名無しさん:2007/02/08(木) 18:53:47
コンソールのタイトルを表示するバッチファイル+JScript.NET
@if(0)==(0) ECHO OFF
SETLOCAL
SET DOTNET=%SystemRoot%\Microsoft.NET\Framework
FOR /F "delims=" %%1 IN ('DIR /AD /B /ON "%DOTNET%\v*"') DO IF EXIST "%DOTNET%\%%~1\jsc.exe" SET DOTNET=%DOTNET%\%%~1\jsc.exe
"%DOTNET%" /nologo /d:_ /out:"%~f0.exe" "%~f0"
"%~f0.exe"
DEL "%~f0.exe"
GOTO :EOF
@end
import System;
import System.Diagnostics;
var PC : PerformanceCounter=new PerformanceCounter('Process','Creating Process Id',Process.GetCurrentProcess().ProcessName);
var PID : int = PC.RawValue;
Console.WriteLine(Process.GetProcessById(PID).MainWindowTitle)
ワーンングが出ますが、コードのほうで直せませんか?

119 :デフォルトの名無しさん:2007/02/08(木) 22:05:05
>>118
RawValueはlongですよ。なので
var PID : int = int(PC.RawValue);
とすればよいでしょう。

120 :デフォルトの名無しさん:2007/02/08(木) 22:39:48
>>119
サンクス。直りました。今度は最小化ですが、
import System;
import System.Diagnostics;
import System.Windows.Forms;
const WM_SYSCOMMAND : int = 0x0112;
const SC_MINIMIZE : int = 0xF020;
var nCmdShow : int =SC_MINIMIZE;
var PC : PerformanceCounter=new PerformanceCounter('Process','Creating Process Id',Process.GetCurrentProcess().ProcessName);
var PID : int=int(PC.RawValue);
var oProcess : System.Diagnostics.Process=System.Diagnostics.Process.GetProcessById(PID);
var hwnd : IntPtr=oProcess.MainWindowHandle;
var m : Message = Message.Create(hwnd,WM_SYSCOMMAND,IntPtr.op_Explicit(nCmdShow),IntPtr.op_Explicit(0));
var nw : NativeWindow = new NativeWindow();
nw.AssignHandle(hwnd);
print(m.ToString());
nw.DefWndProc(m); // 型が一致しません。のエラーになります。なぜでしょう?
nw.ReleaseHandle();
nw = null;

121 :デフォルトの名無しさん:2007/02/08(木) 22:59:04
Microsoft .NET Framework SDK v2.0のドキュメントによると
NativeWindow.DefWndProc()のC#の構文は,

public void DefWndProc (
  ref Message m
)

refとは参照渡しなので,引数にmではなくてmの参照を渡す必要があります。
(mという名前の箱の中に入っている値を渡すのではなくて,
mという名前の箱がある場所を渡すというイメージ。)
JScriptでは, &m と書けばmの参照を表します。
すなわち,
nw.DefWndProc(&m);
と書けばいいわけです。

122 :120:2007/02/09(金) 01:00:05
>>121
感謝。最小化されました。


123 :デフォルトの名無しさん:2007/02/09(金) 16:21:10
>>29
を以下に変えて、codedom.exeを作ります。
import System;
import System.IO;
import System.CodeDom.Compiler;
import System.Reflection;
import Microsoft.JScript;
var source : String = new StreamReader(Environment.GetCommandLineArgs()(1)).ReadToEnd();
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]);


124 :デフォルトの名無しさん:2007/02/09(金) 16:22:59
これを使うと、見た目、テンポラリファイルを作ることなく、できます。
@if(0)==(0) ECHO OFF
codedom.exe "%~f0"
GOTO :EOF
@end
var ie = new ActiveXObject("InternetExplorer.Application");
ie.Navigate("ttp://www.yahoo.com/");
ie.Visible = true;


43 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.02 2018/11/22 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)