テンプレートテスト
ブログの説明
ブログの説明2
menu
keyboard_arrow_up
Top
search
close
home
ホーム
computer
PC一般
construction
開発環境・ツール
code
プログラミング
home
ホーム
computer
PC一般
construction
開発環境・ツール
code
プログラミング
Home
›
Archives for 3月 2021
2021/03/19
image
NO IMAGE
プログラムから C:\Windows\System32 にアクセスできない
update
event_note
label
Windows
プログラムで Windows のイベントログをコピーする際、パスとして `C:\Windows\System32\winevt\Logs\Application.evtx` を指定しても見つからないとエラーになりました。
どうやら 64 bit の Windows で 32bit アプリケーションを動作させている場合、`C:\Windows\System32` へのアクセスは `C:\Windows\SystemWOW64` にリダイレクトされてしまうそうです。 この場合、`System32` ではなく `Sysnative` を指定する必要があるみたいです。 上記のイベントログであれば、`C:\Windows\System32\winevt\Logs\Application.evtx` のように指定すればコピーできました。 ちなみに上記のファイルをコピーするためにはアプリケーションを管理者権限で実行する必要があります。
## 参考 URL - https://stackoverflow.com/questions/2958081/anyone-know-why-i-cant-access-the-winevt-folder-programmatically-in-c - https://nishiohirokazu.hatenadiary.org/entry/20150220/1424413124
Read more
2021/03/17
jQuery Keypad を使ってみた
update
event_note
label
JavaScript
label
Vue.js
キーボードがない環境での操作にも対応するため、ソフトウェアキーボードを実装することになったので、jQuery Keypad というものを使ってみました。
選定理由は一番簡単に導入できそうだったからです。
ダウンロード方法や使い方は以下で簡単に説明されていました。 - https://qiita.com/solabito331/items/f06d613c166e2bed2839 ## 表示/非表示用のボタンを用意 デフォルトではフォーカスした際に jQuery Keypad が表示されますが、キーボードで入力したい人にとっては邪魔だと思うので、jQuery Keypad 表示用のボタンを用意し、必要な人だけが表示できるようにしてみました。 具体的には、`showOn` を空文字にし、表示ボタンを押したときに表示するようにしています。 また、表示ボタンを連打するとテンキーが表示されたまま閉じれなくなってしまったので、ボタンの連打対策だけしておきました。 以下サンプルコードです。 ```html
表示
``` ```js $('#inputKeypad').keypad({ showOn: '', showAnime: 'blind', duration: 'fast', keypadOnly: false, }); ``` ```js var keypadFlag = false; function showKeypad(){ if (!keypadFlag) { keypadFlag = true; // ボタン連打対策として、一定時間後にフラグを落とす setTimeout(function(){ keypadFlag = false; }, 500); if ($(".keypad-popup").css('display') == 'block') { // 表示されている場合の処理 // ※フォーカスが外れた時点で非表示になるので、明示的に非表示にしなくてもよい? //$('#inputKeypad').keypad('hide') // Hide the keypad } else { // 非表示の場合の処理 $('#inputKeypad').keypad('show') // Show the keypad } } } ``` ## type="number" への対応 jQuery Keypad は `type="number"` の `input` には対応しておらず、キーを押したときの入力内容が思っていたような動作になりません。 そこで、`0~9` `+` `-` のボタンを独自で定義して無理矢理対応させました。 ```js // keypad は type="number" の input に対応していないため、数値ボタンをカスタムで追加して無理矢理対応する var customNumberKeys = [ ['ZERO', 'zero', 0], ['ONE', 'one', 1], ['TWO', 'two', 2], ['THREE', 'three', 3], ['FOUR', 'four', 4], ['FIVE', 'five', 5], ['SIX', 'six', 6], ['SEVEN', 'seven', 7], ['EIGHT', 'eight', 8], ['NINE', 'nine', 9] ]; customNumberKeys.forEach(customNumberKey => { $.keypad.addKeyDef(customNumberKey[0], customNumberKey[1], function (inst) { this.val(this.val() + String(customNumberKey[2])).focus(); }); }); $.keypad.addKeyDef('MINUS', 'minus', function (inst) { let val = Number(this.val()) if (val > 0) { this.val(val * -1).focus(); } }); $.keypad.addKeyDef('PLUS', 'plus', function (inst) { let val = Number(this.val()) if (val < 0) { this.val(val * -1).focus(); } }); $('#inputKeypad').keypad({ showOn: '', showAnime: '', duration: 'fast', keypadOnly: false, closeText: '閉じる', closeStatus: '', clearText: 'クリア', clearStatus: '', zeroText: '0', zeroStatus: '', oneText: '1', oneStatus: '', twoText: '2', twoStatus: '', threeText: '3', threeStatus: '', fourText: '4', fourStatus: '', fiveText: '5', fiveStatus: '', sixText: '6', sixStatus: '', sevenText: '7', sevenStatus: '', eightText: '8', eightStatus: '', nineText: '9', nineStatus: '', minusText: '-', minusStatus: '', plusText: '+', plusStatus: '', layout: [ $.keypad.SEVEN + $.keypad.EIGHT + $.keypad.NINE + $.keypad.CLOSE, $.keypad.FOUR + $.keypad.FIVE + $.keypad.SIX + $.keypad.CLEAR, $.keypad.ONE + $.keypad.TWO + $.keypad.THREE, $.keypad.MINUS + $.keypad.ZERO + $.keypad.PLUS ], }); ```
※デザインは変更しています(後述) ## デザインの調整 デフォルトのデザインがちょっとダサいので、Bootstrap に合わせてちょっとだけ修正しました。 ```css /* キーパッド */ .keypad-popup { /* 線が太くて濃くてダサいので、bootstrap に合わせる */ border: 1px solid #dee2e6; } .keypad-special, .keypad-key { /* 線が太くて濃くてダサいので、bootstrap に合わせる */ border: 1px solid #dee2e6; /* border を細くしたので、ちょっとだけ広げる */ padding: 4px; } .keypad-close { /* bootstrap の success に合わせる */ background-color: #28a745; } .keypad-clear { /* bootstrap の danger に合わせる */ background-color: #dc3545; } .keypad-back { /* bootstrap の primary に合わせる */ background-color: #007bff; } .keypad-shift { /* bootstrap の info に合わせる */ background-color: #17a2b8; } .keypad-spacebar { /*デフォルトは 13.25em だけど、keypad-tab を 2em 大きくしたので、その分小さくする */ width: 11.25em; } .keypad-tab { /*デフォルトは 2em だけど小さいので大きくする*/ width: 4em; } /* キーパッド(独自追加分) */ .keypad-zero, .keypad-one, .keypad-two, .keypad-three, .keypad-four, .keypad-five, .keypad-six, .keypad-seven, .keypad-eight, .keypad-nine, .keypad-ten, .keypad-plus, .keypad-minus { /* keypad-key に合わせる */ width: 2em; } ```
## vue.js で v-model と共存させる 私は部分的に vue.js を使っていますが、jQuery Keypad で入力した値が `v-model` でバインディングした変数に反映されていませんでした。 どうやら、この手の入力補助 UI を使う場合、`input` イベントを発火させないといけないようです。 とりあえず jQuery Keypad の `onClose` でイベントを発火するようにしたら上手くいきました。 ```js $('#inputKeypad').keypad({ showOn: 'focus', showAnime: 'blind', duration: 'fast', keypadOnly: false, onKeypress: null, onClose: function () { var evt = document.createEvent('HTMLEvents'); evt.initEvent('input', true, false); this.dispatchEvent(evt); } }); ``` 試していませんが、`onKeypress` で発火するようにすればリアルタイムで同期がとれそうです。 ## 参考 URL - https://qiita.com/solabito331/items/f06d613c166e2bed2839 - https://qiita.com/kawasima/items/d052d0f4565c7f0a7492 - https://chi-bd.hatenadiary.org/entry/20170723/1500796421
Read more
新しい投稿
前の投稿
ホーム
Translate
Popular Posts
TortoiseGit でコミットメッセージを変更する
image
NO IMAGE
TortoiseGit でブランチ間の差分を見る
image
NO IMAGE
[ASP.NET Core] 前のページ(遷移元)の URL を取得する
image
NO IMAGE
外部 DLL を NuGet パッケージに含める方法
image
NO IMAGE
[C#] SonarQube で .NET アプリケーションのコード解析を行う
image
NO IMAGE
[ASP.NET Core] Form value count limit 1024 exceeded のエラーが発生した
image
NO IMAGE
マージ元ブランチとマージ先ブランチ
TortoiseGit でリモートリポジトリのタグを削除する
image
NO IMAGE
C# で GitHub からリリースバージョンを取得する
[Jenkins] エラー 1069: ログオンに失敗したため、サービスを開始できませんでした。
Labels
.NET Core
31
.NET Framework
17
.NET Standard
2
AdminLTE
1
Apache
3
AppVeyor
2
AsciiDoc
3
ASP.NET Core
55
Atom
4
AWS
2
AWS Cloud9
4
blockdiag
1
Blogger
10
Bootstrap
3
C/C++
6
C#
106
CentOS
3
Chrome
1
Chronograf
3
Codecov
1
CSS
1
Docker
28
DokuWiki
4
Doxygen
1
draw.io
1
Electron.NET
2
Entity Framework Core
9
Excel
2
FFmpeg
2
Firefox
5
Git
12
GitBook
4
GitBucket
7
GitHub
7
GitLab
30
Go
1
Google
1
Google Cloud Platform
1
Grafana
5
HTML
5
IIS
8
InfluxDB
6
JavaScript
7
Jenkins
7
Linux
25
Log4View
1
MahApps.Metro
3
MaterialDesignInXamlToolkit
1
MVC
1
MVVM
6
NLog
3
Node.js
3
npm
1
OpenSSL
3
ownCloud
2
Pine Script
1
PlantUML
5
PowerShell
7
Prism
2
Python
11
Razor
3
Redmine
30
remark.js
2
rocketchat
4
Ruby
3
SignalR
1
Socket.IO
1
SonarQube
5
Sphinx
10
SQL Server
5
SQLite
1
t
1
TestLink
2
Tomcat
2
TortoiseGit
10
TortoiseSVN
2
Trading View
1
Travis CI
1
Ubuntu
13
Visual Studio
39
Visual Studio Code
9
Vue.js
8
Windows
56
Windows 10
4
Windows ADK
1
Windows API
2
Windows Embedded
4
wkhtmltopdf
2
Word
3
WPF
12
WSL
1
Xamarin
1
xUnit
5
アプリケーション
1
デザインパターン
1
テスト
3
バッチファイル
2
ぴよ
3
プログラミング
3
ライセンス
1
ラベル
3
ラベル1
2
英語
2
雑記
1
書籍
1
数学
1
正規表現
1
Blog Archive
►
2022
(1)
►
2月
(1)
▼
2021
(24)
►
5月
(7)
►
4月
(8)
▼
3月
(2)
プログラムから C:\Windows\System32 にアクセスできない
jQuery Keypad を使ってみた
►
2月
(2)
►
1月
(5)
►
2020
(60)
►
12月
(1)
►
11月
(3)
►
10月
(3)
►
9月
(3)
►
8月
(3)
►
7月
(7)
►
6月
(7)
►
5月
(2)
►
4月
(6)
►
3月
(6)
►
2月
(7)
►
1月
(12)
►
2019
(92)
►
12月
(13)
►
11月
(9)
►
10月
(3)
►
9月
(2)
►
8月
(3)
►
7月
(5)
►
6月
(11)
►
5月
(6)
►
4月
(17)
►
3月
(9)
►
2月
(6)
►
1月
(8)
►
2018
(100)
►
12月
(1)
►
11月
(11)
►
10月
(8)
►
9月
(6)
►
8月
(10)
►
7月
(10)
►
6月
(8)
►
5月
(9)
►
4月
(8)
►
3月
(14)
►
2月
(4)
►
1月
(11)
►
2017
(117)
►
12月
(14)
►
11月
(20)
►
10月
(17)
►
9月
(19)
►
8月
(10)
►
7月
(8)
►
6月
(3)
►
5月
(6)
►
4月
(5)
►
3月
(2)
►
2月
(8)
►
1月
(5)
►
2016
(91)
►
12月
(5)
►
11月
(9)
►
10月
(11)
►
9月
(9)
►
8月
(6)
►
7月
(14)
►
6月
(14)
►
5月
(11)
►
4月
(10)
►
3月
(2)
►
2015
(23)
►
12月
(4)
►
11月
(2)
►
10月
(8)
►
9月
(8)
►
7月
(1)
►
2013
(3)
►
11月
(1)
►
9月
(1)
►
7月
(1)
►
2012
(2)
►
7月
(1)
►
6月
(1)
►
2011
(1)
►
9月
(1)
►
2009
(1)
►
7月
(1)
►
2008
(2)
►
11月
(1)
►
7月
(1)
►
2007
(3)
►
10月
(3)