プログラムの事とか

お約束ですが「掲載内容は私個人の見解です」

.Net Framework 4.7 のWPF Touch/Stylus support をあまり考えずに有効にしたらはまったこと

早いもので半年以上前にリリースされた.Net 4.7です

リリースノートはこちら

blogs.msdn.microsoft.com

この記事に

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で撮った動画をそのまま上げたらなんか小さいんですがなんでですか)


20171108 053019000 iOS

Surface Pro2現役ですよ!!!1

WPFでInkCanvasを置いて画面左上のボタンでデスクトップを180°回転できるようにしてます デスクトップの回転はUser32.dllSetDisplayConfigを呼んでます

通常時は当たり前ですがちゃんとペンでなぞった部分に描画します

しかし180°回転させた状態でペンで描くと180°反対側に描画してしまいます(動画には入っていませんがマウスだとちゃんとポインターの場所に描画されます)

dnSpyさんで処理を追っていくとStylusのMoveイベントの時の座標取得をStylus系(?)じゃなくてPointer系(マウスの座標とるやつ)を使っていてそれが画面の回転を考慮してないっぽいんですね

上で追加した設定でもうちょっとググったら

軽減策: ポインター ベースのタッチおよびスタイラスのサポート | Microsoft Docs

なんてのが

WM_POINTERベースにするってかいてあるんですが、そんなことリリースノートに書いてないと思うんですよ

ということで先ほどの設定を消して実行すると


20171108 053127000 iOS

デスクトップを回転してもちゃんとStylusの位置に描画されました

この動作が仕様通りなのかバグなのかもわからないし、あの設定はなんのためにできたんだろう(しらべてない)

きっとだれの参考にもならないことでした

Windows 10 Fall Creators UpdateにしたらIISが動かなくなった件

1709のせいかどうかわかりませんがUpdateしたら動かなくなったので

現象

f:id:puni-o:20171019134955p:plain

f:id:puni-o:20171019135008p:plain

アプリケーション プール 'DefaultAppPool' のワーカー プロセスで、ファイル '\\?\<EMPTY>'、行番号 '0' から構成データを読み取ろうとしてエラー '構成ファイルを読み取れません
' が発生しました。データ フィールドにはエラー コードが含まれています。

\\?\ってどこ!

原因

アプリケーションプールの構成ファイルはデフォルトではc:\inetpub\temp\appPoolsにあるらしいので覗いてみるとこんなことになってました

f:id:puni-o:20171019135231p:plain

自分を参照しているショートカットかな???

Updateしていない環境みると普通にフォルダとその中にconfigファイルがあったのでこれが原因ぽいですね

とりあえず古い環境からフォルダごとコピーしました

Windows.oldには該当フォルダが無かったので元に戻しても復旧するのか怪しいですね

Creators Updateで標準がコマンドプロンプトからPowerShellに変わったけどなんの問題もなかった件

Windows 10 Creators Updateが出てから四か月以上たって今更ではありますが、標準のCUI(スタート右クリックやエクスプローラーでShift+右クリックで選べるやつ)がコマンドプロンプトからPowerShellに変わりましたね

CUIなんてiisreset ping ipconfig しか使わないからコマンドプロンプトでいいんだよ!と思って一度はコマンドプロンプトに変えたんですが、PowerShellで全部できるんですよね

f:id:puni-o:20170824094144p:plain

ということですぐにPowerShellに戻しました

おしまい