.Net Framework 4.7 のWPF Touch/Stylus support をあまり考えずに有効にしたらはまったこと
早いもので半年以上前にリリースされた.Net 4.7です
リリースノートはこちら
この記事に
WPF Touch/Stylus support for Windows 10
ってのがありまして、More reliableとかMore capableとかよさげなことが書いてあるんですね
ということで何も考えずに有効にしてました
有効にするにはapp.configに
<configuration> <runtime> <AppContextSwitchOverrides value="Switch.System.Windows.Input.Stylus.EnablePointerSupport=true"/> </runtime> </configuration>
って足せばいいだけなので簡単ですね
問題発生
とりあえず下に動画貼ります(iPhoneで撮った動画をそのまま上げたらなんか小さいんですがなんでですか)
Surface Pro2現役ですよ!!!1
WPFでInkCanvasを置いて画面左上のボタンでデスクトップを180°回転できるようにしてます
デスクトップの回転はUser32.dll
のSetDisplayConfig
を呼んでます
通常時は当たり前ですがちゃんとペンでなぞった部分に描画します
しかし180°回転させた状態でペンで描くと180°反対側に描画してしまいます(動画には入っていませんがマウスだとちゃんとポインターの場所に描画されます)
dnSpyさんで処理を追っていくとStylusのMoveイベントの時の座標取得をStylus系(?)じゃなくてPointer系(マウスの座標とるやつ)を使っていてそれが画面の回転を考慮してないっぽいんですね
上で追加した設定でもうちょっとググったら
軽減策: ポインター ベースのタッチおよびスタイラスのサポート | Microsoft Docs
なんてのが
WM_POINTERベースにするってかいてあるんですが、そんなことリリースノートに書いてないと思うんですよ
ということで先ほどの設定を消して実行すると
デスクトップを回転してもちゃんとStylusの位置に描画されました
この動作が仕様通りなのかバグなのかもわからないし、あの設定はなんのためにできたんだろう(しらべてない)
きっとだれの参考にもならないことでした
Windows 10 Fall Creators UpdateにしたらIISが動かなくなった件
1709のせいかどうかわかりませんがUpdateしたら動かなくなったので
現象
アプリケーション プール 'DefaultAppPool' のワーカー プロセスで、ファイル '\\?\<EMPTY>'、行番号 '0' から構成データを読み取ろうとしてエラー '構成ファイルを読み取れません ' が発生しました。データ フィールドにはエラー コードが含まれています。
\\?\
原因
アプリケーションプールの構成ファイルはデフォルトではc:\inetpub\temp\appPools
にあるらしいので覗いてみるとこんなことになってました
自分を参照しているショートカットかな???
Updateしていない環境みると普通にフォルダとその中にconfigファイルがあったのでこれが原因ぽいですね
とりあえず古い環境からフォルダごとコピーしました
Windows.oldには該当フォルダが無かったので元に戻しても復旧するのか怪しいですね
Creators Updateで標準がコマンドプロンプトからPowerShellに変わったけどなんの問題もなかった件
Windows 10 Creators Updateが出てから四か月以上たって今更ではありますが、標準のCUI(スタート右クリックやエクスプローラーでShift+右クリックで選べるやつ)がコマンドプロンプトからPowerShellに変わりましたね
CUIなんてiisreset
ping
ipconfig
しか使わないからコマンドプロンプトでいいんだよ!と思って一度はコマンドプロンプトに変えたんですが、PowerShellで全部できるんですよね
ということですぐにPowerShellに戻しました
おしまい