ラベル c# の投稿を表示しています。 すべての投稿を表示
ラベル c# の投稿を表示しています。 すべての投稿を表示

2013年5月29日水曜日

.NET Framework で WebBrowser コントロールを使用する際に IE のバージョンを選択する

VBとかC#でWebBrowserコントロールを使用する時に、IEのバージョンを指定したい時が有る。
そんな時はレジストリをいじるといいらしい。

32 bit:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION
64 bit:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION

ここに使用したいEXE名(myapp.exe 等)で新規DWORD値を追加する。
で、以下の通りに値を指定する。

  • 9999 (0x270F)
    • IE9のスタンダードモード。!DOCTYPEは無視する。
  • 9000 (0x2328)
    • IE9のスタンダードモードがベースだが、!DOCTYPEに従う。
  • 8888 (0x22B8)
    • IE8のスタンダードモード。!DOCTYPEは無視する。
  • 8000 (0x1F40)
    • IE8のスタンダードモードがベースだが、!DOCTYPEに従う。
  • 7000 (0x1B58) 
    • IE7のスタンダードモードがベースで、!DOCTYPEに従う。
ちなみに、VisualStudio で開発・デバッグ中にこの機能を有効にしたい場合は myapp.vshost.exe も追加しないといけない。

2013年1月29日火曜日

Windowsのイベントログから起動・終了時間を取得する

System.Diagnostics.EventLog[] logs = System.Diagnostics.EventLog.GetEventLogs(); 
StringBuilder sb = new StringBuilder(); 
foreach (System.Diagnostics.EventLog log in logs) 
{ 
  if (log.Log == "System") 
  { 
    int cnt = 0; 
    for (int i = log.Entries.Count -1 ; i > 0 ; i--) 
    { 
      if (log.Entries[i].Source == "Microsoft-Windows-Kernel-General") 
      { 
        if (log.Entries[i].InstanceId == 12) 
        { 
          sb.AppendLine(log.Entries[i].TimeGenerated.ToString("[yyyy/MM/dd HH:mm:ss]") + "起動"); 
          cnt++; 
        } 
        else if (log.Entries[i].InstanceId == 13) 
        { 
          sb.AppendLine(log.Entries[i].TimeGenerated.ToString("[yyyy/MM/dd HH:mm:ss]") + "終了"); 
          cnt++; 
        } 
      } 
      if (cnt > 10) 
      { 
        break; 
      } 
    } 
  } 
} 
return sb.ToString();

C#でEval

CSharpCodeProvider c = new CSharpCodeProvider();
CompilerParameters cp = new CompilerParameters();
cp.ReferencedAssemblies.Add("system.dll");
cp.CompilerOptions = "/t:library";
cp.GenerateInMemory = true;
StringBuilder sb = new StringBuilder("");
sb.Append("using System;\n" );
sb.Append("namespace CSCodeEvaler{ \n");
sb.Append("public class CSCodeEvaler{ \n");
sb.Append("public object EvalCode(){\n");
sb.Append("return Environment.ProcessorCount.ToString(); \n");
sb.Append("} \n");
sb.Append("} \n");
sb.Append("}\n");
CompilerResults cr = icc.CompileAssemblyFromSource(cp, sb.ToString());
if (cr.Errors.Count > 0)
{
  MessageBox.Show("ERROR: " + cr.Errors[0].ErrorText, "Error evaluating cs code", MessageBoxButtons.OK, MessageBoxIcon.Error);
  return null;
}
System.Reflection.Assembly a = cr.CompiledAssembly;
object o = a.CreateInstance("CSCodeEvaler.CSCodeEvaler");
Type t = o.GetType();
MethodInfo mi = t.GetMethod("EvalCode");
object s = mi.Invoke(o, null);
return s;

C#でIsNothing

if (obj != null)
{
  //
}