Windows

Windowsの欧文フォントを日本語に対応させる

Mohmongar
Windowsの欧文フォント表示時に無理やり日本語フォントを対応させるには、Fontlinkという機能を使う。レジストリを変更するので実施は自己責任でお願いします。レジストリエディタで HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLink の場所を探して、新規要素として キー名に、リンクする欧文フォント名 例:Inconslate 種類を、複数行文字列 値に、日本語フォントファイル名,日本語フォント名 例:Meiryo.ttc,Meiryo を追加する。こうするとInconslateフォントで日本語表示したときはMeiryoで表示される。 追加したレジストリをエクスポートした場合は Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLink] "Inconsolata"=hex(7):6d,00,65,00,69,00,72,00,79,00,6f,00,2e,00,74,00,74,00,63,\ 00,2c,00,4d,00,65,00,69,00,72,00,79,00,6f,00,00,00,00,00 とこんな感じになってます。 参考にしたのはデスクトップ・カスタマイズ:フォントリンクの方法のサイトです。

DarkSoul2 Steamでセール中

Mohmongar
「DARK SOULS™ II: Scholar of the First Sin」がSteamで 6月15日 2:00am JSTまで66%OFFセール中。ゲームが安いのはいいが、進んでないゲームが溜まっていく・・・・

[WPF]DataGridをクリックしたセルの位置を調べる

Mohmongar
C# WPF環境でDataGridをクリックした時のセル位置を求める。VisualTreeHelperを使ってDataGridCellとDataGridRowをたぐってcolumnとrowを調べる。formと違ってめんどくさい。他にも方法があるかもしんない。 // // DataGrid dg ... Clicked Control // Point pos ... Position in DataGrid axis // HitTestResult result = VisualTreeHelper.HitTest(dg, pos); if (result == null) { return; } DependencyObject dep = result.VisualHit; while (!(dep is DataGridCell || dep is DataGridRow)) { if (dep == null) { return null; } dep = VisualTreeHelper.GetParent(dep); } DataGridCell dgcell = null; int c = -1; if (dep is DataGridCell) { dgcell = dep as DataGridCell; c = dgcell.

PC版ダークソウル署名運動

Mohmongar
ダークソウルPC版について現在署名活動を行っています( https://t.co/kva5omyGV6 … )。説明をよく読んで賛同いただける方は、署名やソーシャルメディアでの紹介等で応援をどうか宜しくお願いいたします! — HAL2039 (@hal2039) 2016年3月31日 たまたま見つけましたが、「日本でもダークソウルのSteamWorks版を販売してください!」という署名運動を見つけました。現在国内版ダークソールは、MicrosoftのGFWLサービスに伴い、オンラインプレイや新たな起動や再インストール等ができなくなっております。わたしの場合も、HDDを新調した後に再インストールをしようとしたらこれにはまり、起動できなくなりました。あきらめておりましたが、こうやって地道に署名活動を頑張っておられる方をたまたま見つけたので、賛同およびここにご紹介させていただきます。

MAPIのAppointmentItemにTimezoneを追加

Mohmongar
MAPIでAppointmentを作る場合にTimeZoneの指定をする時のメモ。TimeZoneの元オブジェクトはApplication下にあるTimeZonesコレクションから参照する。 Using Outlook = Microsoft.Office.Interop.Outlook; Outlook.Application app = new outlook.Application(); Outlook.AppointmentItem apoItem = app.CreateItem(Outlook.OlItemType.olAppointmentItem) as Outlook.AppointmentItem; Outlook.TimeZones tzs = app.TimeZones; apoItem.StartTimeZone = tzs["Tokyo Standard Time"]; くわしくはHow to: Create an Appointment That Starts in the Pacific Time Zone and Ends in the Eastern Time Zoneを参照。

[C#]任意の型のインスタンスを作成

Mohmongar
c#で任意の型TがType型の変数tで与えられている場合のインスタンスを作る場合の方法。またはその配列のインスタンスを作る方法のメモ // 任意型tのインスタンスの作成 Type t = typeof(***); var tInst = Activator.CreateInstace(t); // 型tの配列t[]のインスタンスの作成 Type t = typeof(***); Type ta = Type.GetType(t.toString()+"[]"); Int num; var tInst = Activator.CreateInstace(ta, num); // または Type t; Int num; var tInst = Array.CreateInstace(t, num); // 追加 var tInst = Activator.CreateInstace(t.MakeArrayType(1), num);

[WPF]Drawing.BitmapをBitmapSourceへ変換

Mohmongar
昔のDLLがBitmapしか対応してないので、System.DrawingのBitmapをWPFのBitmapSourceへ変換する。 [System.Runtime.InteropServices.DllImport("gdi32.dll")] public static extern bool DeleteObject(IntPtr hObject); public BitmapSource BmpToWPFBmp(System.Drawing.Bitmap bitmap) { IntPtr hBitmap = bitmap.GetHbitmap(); BitmapSource source; source = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(hBitmap, IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions()); DeleteObject(hBitmap); return source; }

[WPF]Dispatcherで別スレッドからUIアクセス

Mohmongar
WPFでUIスレッドとは別のスレッドからUIを変更するときの作法。いつもやりかた忘れるのでメモ。formの場合のInvokeRequiredとinvokeに当たる。状況に応じてInvokeをBeginInvokeで非同期にするのもあり。VSでCheckAccessが入力補完対象にならないのはなぜだろう。 if (mycontrol.Dispatcher.CheckAccess()) { mycontrol.Content = "test"; } else { mycontrol.Dispatcher.Invoke((Action)(() => { mycontrol.Content = "test"; })); }

今更メタルギア(MGSV-TPP)

Mohmongar
もう過ぎてしまったが、STEAMにて先週末50%OFFセールだったので、いまさらメタルギア5(MGSV-TPP)をぽちった。いろいろ物議を醸したが、やっぱり面白いわ。これ。最近これのせいで寝不足です。