06/10/29 03:03:24
>>96
WSH(・∀・)スレッド!
スレリンク(tech板)l50
というのもありますよ。
JScript.NETもなかなか使えるので使ってやってください。
98:デフォルトの名無しさん
06/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:デフォルトの名無しさん
06/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:デフォルトの名無しさん
06/11/01 14:06:23
バッチファイルにJScript.NETスクリプトを埋め込むテスト
※ スレリンク(tech板: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:デフォルトの名無しさん
06/11/27 21:59:16
ものすごい初歩的な質問だと思うのですが、1つの変数に改行コードを
入れる場合はどうすればよいのでしょうか?
var a = "A";
var b = "B";
var c = a + (ここに改行コードを入れたい) + b;
document.writeln (c);
出力結果
A
B
\nとか%0Dとか試したのですが、エラーになってしまってよくわかりません。
よろしくお願いします。
102:デフォルトの名無しさん
06/11/27 22:21:04
var c = a + "\n" + b;
103:101
06/11/27 22:33:42
>>102
ありがとうございます。
しかし、IEで実行すると、改行表示されずに、
A B
と、出てしまいました。
104:デフォルトの名無しさん
06/11/27 23:34:48
>>103
そういうことなら
var c = a + "<BR>" + b;
105:101
06/11/27 23:50:59
>>104
結果、
A
B
になりました。
VBのように、 c = a & chr(13) & chr(10) & b
みたいなものを想像してたので、タグを直接入れるとは驚きです。
ありがとうございました。
106:デフォルトの名無しさん
06/11/28 00:09:43
>>105
ここは JScript「.NET」 のスレ何だけど(w
VBだってIE上で改行かけるんなら<BR>なんですが。
根本的に分かってない。
document.writeln はHTMLソースを書き出すものだぞ。
ソース自体を改行したいならJSだろうとVBSだろうと文字列に改行を入れるんだし、
レンダリング結果を改行するならHTMLにしたがって<BR>
107:デフォルトの名無しさん
07/01/07 12:09:40
あけおぬ
108:デフォルトの名無しさん
07/02/03 21:47:05
Win32API呼び出せますか?
ほかのサンプルはあるのにJScript.NETだけないような。
109:デフォルトの名無しさん
07/02/03 21:55:07
>>100
jsc.exeのフルパスをレジストリかどっかから取り出せませんか?
110:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/02/04 16:47:55
>>110
ラッパーというと、DLL作って呼び出すということでしょうか?
JScriptソースにC#ソースを埋め込んで、とか出来ます?
或いは、C#で>>100みたいなCMD埋め込み
112:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/02/04 21:06:41
>>111
C#でdll作るのが楽だけど、埋め込むというならCodeDomが使えるような気がする。
>>112
バージョン決め撃ちならそれでもいいな。
114:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/02/05 18:34:48
>>114
しかし、v3.0というフォルダ内には jsc.exe はないのだった。
116:115
07/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
07/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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/02/08 22:05:05
>>118
RawValueはlongですよ。なので
var PID : int = int(PC.RawValue);
とすればよいでしょう。
120:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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
07/02/09 01:00:05
>>121
感謝。最小化されました。
123:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/02/09 16:22:59
これを使うと、見た目、テンポラリファイルを作ることなく、できます。
@if(0)==(0) ECHO OFF
codedom.exe "%~f0"
GOTO :EOF
@end
var ie = new ActiveXObject("InternetExplorer.Application");
ie.Navigate("URLリンク(www.yahoo.com));
ie.Visible = true;
125:デフォルトの名無しさん
07/03/16 23:24:23
教えてください!
現在.NET C#で開発しています。
cs側からRegisterStartupScriptを使って
aspx側にjavascriptを埋め込んでいるのですが、
onload時に処理を走らせようとしても、通ってくれません。
onloadが実行される前にcs側のjavascriptがaspxに埋め込まれる方法はありませんか?
[.aspx]
~
<body onload="initList()">
~
</body>
</html>
<.cs>
RegisterStartupScriptを使って以下をaspx側に埋め込む
function initList()
{
~
}
126:デフォルトの名無しさん
07/03/17 00:07:48
>>125
JScript.NETとは関係ない内容なので↓あたりで
改めて質問されたほうがいいですよ。
【質問】ASP.NETスレ Part3【議論】
スレリンク(php板)l50
127:デフォルトの名無しさん
07/03/17 01:35:04
JScript.NETじゃないやん
マルチやめれ
128:デフォルトの名無しさん
07/03/20 16:00:16
C# 3.0で
T a = new T();
を
var a = new T();
と書けるように,JScriptで
var a := new T();
のように書ければいいのにと思った。
129:デフォルトの名無しさん
07/03/28 16:15:35
ブラウザの閉じるボタンのイベントってどう拾うんだ?
130:デフォルトの名無しさん
07/03/28 17:31:49
NativeWindowつかってサブクラス化してメッセージ盗めばいいんじゃない?