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つかってサブクラス化してメッセージ盗めばいいんじゃない?