• R/O
  • SSH
  • HTTPS

nodoka4: Commit


Commit MetaInfo

Revision232 (tree)
Time2015-09-23 17:54:01
Authorapplet

Log Message

4.29

Change Summary

Incremental Difference

--- nodoka/trunk/nodoka/exe.x64.limit/nodoka64.manifest (revision 231)
+++ nodoka/trunk/nodoka/exe.x64.limit/nodoka64.manifest (revision 232)
@@ -3,7 +3,7 @@
33 <assemblyIdentity
44 type="win32"
55 name="nodoka"
6- version="4.2.8.0"
6+ version="4.2.9.0"
77 processorArchitecture="amd64"
88 />
99 <description>nodoka</description>
@@ -29,4 +29,18 @@
2929 </requestedPrivileges>
3030 </security>
3131 </trustInfo>
32+ <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
33+ <application>
34+ <!-- Windows 10 -->
35+ <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
36+ <!-- Windows 8.1 -->
37+ <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
38+ <!-- Windows Vista -->
39+ <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
40+ <!-- Windows 7 -->
41+ <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
42+ <!-- Windows 8 -->
43+ <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
44+ </application>
45+ </compatibility>
3246 </assembly>
--- nodoka/trunk/nodoka/exe.hil/nodoka_hil.manifest (revision 231)
+++ nodoka/trunk/nodoka/exe.hil/nodoka_hil.manifest (revision 232)
@@ -3,7 +3,7 @@
33 <assemblyIdentity
44 type="win32"
55 name="nodoka"
6- version="4.2.8.0"
6+ version="4.2.9.0"
77 processorArchitecture="X86"
88 />
99 <description>nodoka</description>
@@ -29,4 +29,18 @@
2929 </requestedPrivileges>
3030 </security>
3131 </trustInfo>
32+ <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
33+ <application>
34+ <!-- Windows 10 -->
35+ <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
36+ <!-- Windows 8.1 -->
37+ <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
38+ <!-- Windows Vista -->
39+ <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
40+ <!-- Windows 7 -->
41+ <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
42+ <!-- Windows 8 -->
43+ <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
44+ </application>
45+ </compatibility>
3246 </assembly>
--- nodoka/trunk/nodoka/exe.limit/nodoka.manifest (revision 231)
+++ nodoka/trunk/nodoka/exe.limit/nodoka.manifest (revision 232)
@@ -3,7 +3,7 @@
33 <assemblyIdentity
44 type="win32"
55 name="nodoka"
6- version="4.2.8.0"
6+ version="4.2.9.0"
77 processorArchitecture="X86"
88 />
99 <description>nodoka</description>
@@ -29,4 +29,18 @@
2929 </requestedPrivileges>
3030 </security>
3131 </trustInfo>
32+ <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
33+ <application>
34+ <!-- Windows 10 -->
35+ <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
36+ <!-- Windows 8.1 -->
37+ <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
38+ <!-- Windows Vista -->
39+ <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
40+ <!-- Windows 7 -->
41+ <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
42+ <!-- Windows 8 -->
43+ <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
44+ </application>
45+ </compatibility>
3246 </assembly>
--- nodoka/trunk/nodoka/dot.nodoka/readme.txt (revision 231)
+++ nodoka/trunk/nodoka/dot.nodoka/readme.txt (revision 232)
@@ -1,6 +1,6 @@
11 汎用キーバインディング変更ソフト「のどか」について
22
3-http://appletkan.com/ applet@bp.iij4u.or.jp 2015-07-28
3+http://appletkan.com/ applet@bp.iij4u.or.jp 2015-09-17
44
55
66 1. 概要
@@ -8,10 +8,10 @@
88
99  dot.nodokaという設定ファイルを用いて、ある程度自由に、キーボードの配列を変えることが可能です。
1010
11- OSとして、Windows 2000, XP(x86, x64), Vista(x86, x64), 7(x86, x64), 8(x86, x64)を対象としてます。
11+ OSとして、Windows 2000と、32bit/64bitのWindows XP, Vista, 7, 8, 8.1, 10を対象としてます。
1212  実行ファイルならびにデバイスドライバに署名が付いています。
1313  
14- 試用版は、起動後30分で自動終了します。
14+ 試用版は起動後30分で自動終了します。なお4.29の試用版では30分の制限はなく、その代り2015-12-27まで使用可能な特別版となっています。
1515
1616  シェアウェアです。
1717  ソースコードは、Common Public License で http://sourceforge.jp/projects/nodoka4/ にて公開しています。
@@ -31,7 +31,7 @@
3131 (1)インストール方法
3232  過去に「窓使いの憂鬱」「繭(まゆ)」をインストールされていた場合や、他のキーボードカスタマイズソフトなど共存などに関して、手順を間違えると、インストールに失敗するので、上記ヘルプのインストールの項を、必ずご参照ください。
3333
34- インストールを実施するには、nodoka-4.28_sample_setup.exe (試用版), nodoka-4.28_setup.exe (正式版)を、管理者権限で実行してください。
34+ インストールを実施するには、nodoka-4.29_sample_setup.exe (試用版), nodoka-4.29_setup.exe (正式版)を、管理者権限で実行してください。
3535
3636
3737  4.02以前をお使いで、上書きインストールした場合、ショートカットが2個ずつ、スタートメニューやスタートアップに登録されるため、「のどか 」の方を削除してください。元が4.03以降であれば、問題は発生しません。
@@ -42,7 +42,7 @@
4242 (2)実行方法
4343  スタートメニューに登録された 「のどか」をダブルクリックする。あるいはスタートアップに登録した場合には、Windowsログイン時に自動実行されます。
4444
45- なお試用版では、起動後30分で自動終了します。
45+ なお試用版では、起動後30分で自動終了します(4.29の試用版はその制限はありませんが、2015-12-27までの使用期限があります)。
4646
4747
4848 (3)アンインストール方法
@@ -174,12 +174,24 @@
174174 5. 謝辞
175175
176176 偉大かつ、手放すことができない「窓使いの憂鬱」を作成された TAGA Nayuta氏。大変どうもありがとうございます。
177-また Vista向けの 3.30.1ソースを作成され、2chでのスレッドで公開してくださった無名の方、大変ありがとうございます。
178-また、YAMYを開発されたKOBAYASHI Yoshiaki氏。たいへんありがとうございます。
177+また Vista向けの 3.30.1ソースを作成され、2chでのスレッドで公開してくださった無名の方、大変どうもありがとうございます。
178+また、YAMYを開発されたKOBAYASHI Yoshiaki氏。大変どうもありがとうございます。
179179
180180
181181 6. 短い修正履歴 (詳細はヘルプの改版履歴をご覧ください。)
182182
183+ 2015-09-17 「のどか」4.29をリリース
184+ Windows 10対応
185+ ・Windows 10対応を記念して、4.29評価版では30分しか使えない制限を廃止しています。ただし2015-12-27までの使用期限があります。
186+ ・実行ファイルのminifestにて、Windows 7からWindows 10までの互換フラグを設定しました。
187+ ・インストール時に過去にインストール済であれば、「デバイスドライバをインストールしない」にチェックを付けるようにしました。
188+ Windows 10では上書きインストールの際、デバイスドライバファイルの上書きに失敗するためです。
189+ ・Windows 10へのインストール関係の情報やのどかの制限事項は、ヘルプの「Windows 10へのインストール関係の情報」にまとめましたので忘れずにご覧ください。
190+ その他
191+ ・インストール時にkbdclassのドライバが既に存在する場合、nodokadドライバが、kbdclassの次に来るよう変更しました。
192+ VMwareなどのドライバと併用するとキー入力時にWindowsがフリーズする対策です。
193+ ・キー入力のログのうち、拡張キーであるE0E1-が付いてる場合、以前は空白を表示していましたが、E0E1-を表示するようにしました。
194+
183195 2015-07-28 「のどか」4.28をリリース
184196  機能修正
185197  ・整合性レベルHILを実現方法を4.26相当に戻して nodoka64_hil.exe, nodoka_hil.exeの復活 #34606
--- nodoka/trunk/nodoka/dot.nodoka/readme-en.txt (revision 231)
+++ nodoka/trunk/nodoka/dot.nodoka/readme-en.txt (revision 232)
@@ -1,15 +1,17 @@
11 About "Nodoka". This is change general-purpose key binding software.
22
3-http://appletkan.com/ applet@bp.iij4u.or.jp 2015-07-28
3+http://appletkan.com/ applet@bp.iij4u.or.jp 2015-09-17
44
55
66 1. Outline
77 You can use change key binding by setting file as dot.nodoka.
88
9- Target OS is Windows 2000, XP(x86, x64), Vista(x86, x64), 7(x86, x64), 8(x86, x64).
10- Exe file and Device Driver with Code signing for Vista and 7.
9+ Target OS are Windows 2000 and XP, Vista, 7, 8, 8.1, 10 32bit/64bit version.
10+ Exe file and Device Driver with Code signing for Vista or later.
1111
1212 This is Shareware. Sample version is use on 30 minutes for trial.
13+ Special sample version of 4.29 is the full version with the restriction of the use of up to 2015-12-27.
14+ There is no restriction of the use of 30 minutes to it.
1315
1416 Retail version is 1800 Yen. buy at http://appletkan.com/en/index.htm You can use paypal.
1517
@@ -21,7 +23,7 @@
2123 (1) Install
2224
2325 at Administrator
24- run nodoka-4.28_sample_setup.exe (as trial version), nodoka-4.28_setup.exe (as retail version).
26+ run nodoka-4.29_sample_setup.exe (as trial version), nodoka-4.29_setup.exe (as retail version).
2527
2628
2729 (2) Run
@@ -162,6 +164,18 @@
162164
163165
164166 6. Short Histroy
167+ 2015-09-17 "Nodoka" 4.29 Release.
168+ - for Windows 10
169+  To celebrate the Windows 10 support, at 4.29 evaluation version has abolished the restrictions that
170+  can be used only 30 minutes. However there is a use-by date up to 2015-12-27.
171+ exe file minifest have Windows 7,8,8.1,10 compatible flag.
172+ check Don't Install Device Driver at Nodoka upgrade install.
173+ and other install informationa at Windows 10 on Help. Please see it.
174+
175+ - Other
176+ nodokad device driver to kbdclass driver's next at install. for VMware vmkbd.
177+ key logging add E0E1- extend key.
178+
165179 2015-07-28 "Nodoka" 4.28 Release.
166180 - fix High integrity level revise.
167181 def option SendTextDelay probrem.
--- nodoka/trunk/nodoka/exe.x64/nodoka64.manifest (revision 231)
+++ nodoka/trunk/nodoka/exe.x64/nodoka64.manifest (revision 232)
@@ -3,7 +3,7 @@
33 <assemblyIdentity
44 type="win32"
55 name="nodoka"
6- version="4.2.8.0"
6+ version="4.2.9.0"
77 processorArchitecture="amd64"
88 />
99 <description>nodoka</description>
@@ -29,4 +29,18 @@
2929 </requestedPrivileges>
3030 </security>
3131 </trustInfo>
32+ <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
33+ <application>
34+ <!-- Windows 10 -->
35+ <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
36+ <!-- Windows 8.1 -->
37+ <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
38+ <!-- Windows Vista -->
39+ <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
40+ <!-- Windows 7 -->
41+ <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
42+ <!-- Windows 8 -->
43+ <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
44+ </application>
45+ </compatibility>
3246 </assembly>
--- nodoka/trunk/nodoka/s/installer.h (revision 231)
+++ nodoka/trunk/nodoka/s/installer.h (revision 232)
@@ -156,6 +156,9 @@
156156 const _TCHAR *i_preloadedGroups
157157 );
158158
159+ // stop driver service
160+ BOOL stopDriverService(const tstringi &i_serviceName);
161+
159162 // remove driver service
160163 DWORD removeDriverService(const tstringi &i_serviceName);
161164
--- nodoka/trunk/nodoka/s/setup.manifest (revision 231)
+++ nodoka/trunk/nodoka/s/setup.manifest (revision 232)
@@ -3,7 +3,7 @@
33 <assemblyIdentity
44 type="win32"
55 name="nodoka installer"
6- version="4.2.8.0"
6+ version="4.2.9.0"
77 processorArchitecture="*"
88 />
99 <description>nodoka installer</description>
@@ -29,4 +29,18 @@
2929 </requestedPrivileges>
3030 </security>
3131 </trustInfo>
32+ <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
33+ <application>
34+ <!-- Windows 10 -->
35+ <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
36+ <!-- Windows 8.1 -->
37+ <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
38+ <!-- Windows Vista -->
39+ <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
40+ <!-- Windows 7 -->
41+ <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
42+ <!-- Windows 8 -->
43+ <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
44+ </application>
45+ </compatibility>
3246 </assembly>
--- nodoka/trunk/nodoka/s/installer.cpp (revision 231)
+++ nodoka/trunk/nodoka/s/installer.cpp (revision 232)
@@ -329,7 +329,7 @@
329329 hscm = OpenSCManager(NULL, NULL,
330330 SC_MANAGER_CREATE_SERVICE | SC_MANAGER_CONNECT);
331331 if (!hscm) {
332- //MessageBox(NULL, L"OpenScManager error", L"Nodoka Setup", MB_OK | MB_ICONSTOP);
332+ //MessageBox(NULL, L"OpenScManager error", L"Nodoka Setup", MB_OK | MB_ICONSTOP); // DEBUG
333333 return false;
334334 }
335335
@@ -336,11 +336,13 @@
336336 // Service(driver)が居たら停止させる。
337337 hs = OpenService(hscm, i_serviceName.c_str(), SERVICE_STOP);
338338 if (!hs)
339- {
339+ {
340+ //MessageBox(NULL, L"OpenService stop error", L"Nodoka Setup", MB_OK | MB_ICONSTOP); // DEBUG
341+
340342 SERVICE_STATUS ss;
341343 ControlService(hs, SERVICE_CONTROL_STOP, &ss);
342344 CloseServiceHandle(hs);
343- }
345+ }
344346
345347 // Service(driver)のインストール
346348 {
@@ -402,6 +404,7 @@
402404 if (!reg.read(_T("UpperFilters"), &filters)) {
403405 return false;
404406 }
407+ // nodokad登録がある場合、削除する
405408 for (Filters::iterator i = filters.begin(); i != filters.end(); ) {
406409 Filters::iterator next = i;
407410 ++ next;
@@ -410,7 +413,25 @@
410413 }
411414 i = next;
412415 }
413- filters.push_back(_T("nodokad"));
416+ // kbdclassの次にnodokadを入れる。
417+ bool add_nodokad = false;
418+
419+ for (Filters::iterator i = filters.begin(); i != filters.end(); ) {
420+ Filters::iterator next = i;
421+ ++ next;
422+ if (*i == _T("kbdclass")) {
423+ filters.insert(next, _T("nodokad"));
424+ add_nodokad = true;
425+ }
426+ i = next;
427+ }
428+
429+ // もしkbdclassが見つからない場合(そのケースはありえないが)一番最後に入れる。
430+ if (add_nodokad == false) {
431+ filters.push_back(_T("nodokad"));
432+ }
433+
434+ // レジストリに書き込む。
414435 if (!reg.write(_T("UpperFilters"), filters)) {
415436 return false;
416437 }
@@ -419,7 +440,48 @@
419440 }
420441 #endif // _WINNT
421442
443+#if defined(_WINNT)
422444
445+ // stop driver service
446+ BOOL stopDriverService(const tstringi &i_serviceName)
447+ {
448+ SC_HANDLE hscm;
449+ SC_HANDLE hs;
450+ BOOL err = FALSE;
451+ SERVICE_STATUS ss;
452+
453+ hscm = OpenSCManager(NULL, NULL, SC_MANAGER_CONNECT | GENERIC_EXECUTE);
454+ if (!hscm)
455+ {
456+ DBG_PRINT((L"can not service open hscm error"));
457+ DBG_PRINT((L"GetLastError = %d"), GetLastError());
458+ return false;
459+ }
460+
461+ hs = OpenService(hscm, i_serviceName.c_str(), SERVICE_STOP | GENERIC_EXECUTE);
462+ if (!hs)
463+ {
464+ DBG_PRINT((L"can not service stop hs error"));
465+ DBG_PRINT((L"GetLastError = %d"), GetLastError());
466+ CloseServiceHandle(hscm);
467+ return false;
468+ }
469+ err = ControlService(hs, SERVICE_CONTROL_STOP, &ss);
470+ if (!err)
471+ {
472+ DBG_PRINT((L"can not service stop ctrl error"));
473+ DBG_PRINT((L"GetLastError = %d"), GetLastError());
474+
475+ return false;
476+ }
477+
478+ CloseServiceHandle(hs);
479+ CloseServiceHandle(hscm);
480+
481+ return TRUE;
482+ }
483+#endif // _WINNT
484+
423485 #if defined(_WINNT)
424486 // remove driver service
425487 DWORD removeDriverService(const tstringi &i_serviceName)
--- nodoka/trunk/nodoka/s/setup64.manifest (revision 231)
+++ nodoka/trunk/nodoka/s/setup64.manifest (revision 232)
@@ -3,7 +3,7 @@
33 <assemblyIdentity
44 type="win32"
55 name="nodoka installer"
6- version="4.2.8.0"
6+ version="4.2.9.0"
77 processorArchitecture="*"
88 />
99 <description>nodoka installer</description>
@@ -29,4 +29,18 @@
2929 </requestedPrivileges>
3030 </security>
3131 </trustInfo>
32+ <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
33+ <application>
34+ <!-- Windows 10 -->
35+ <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
36+ <!-- Windows 8.1 -->
37+ <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
38+ <!-- Windows Vista -->
39+ <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
40+ <!-- Windows 7 -->
41+ <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
42+ <!-- Windows 8 -->
43+ <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
44+ </application>
45+ </compatibility>
3246 </assembly>
--- nodoka/trunk/nodoka/s/setup.cpp (revision 231)
+++ nodoka/trunk/nodoka/s/setup.cpp (revision 232)
@@ -447,6 +447,10 @@
447447 Registry::remove(NODOKA_OLD_REGISTRY_ROOT3);
448448 #endif
449449
450+ // ドライバをコピーするならばドライバを停止させる。
451+ if(!m_doNotRegisterDriver)
452+ stopDriverService(_T("nodokad"));
453+
450454 // ファイルコピー
451455 if (!installFiles(g_setupFiles, NUMBER_OF(g_setupFiles), g_flags, srcDir, g_destDir, !m_doNotRegisterDriver, m_doNotReviseDotNodoka))
452456 {
@@ -758,9 +762,12 @@
758762 reg.read(_T("registerHIL"), &bCheck, 0);
759763 CheckDlgButton(m_hwnd, IDC_CHECK_HIL, bCheck);
760764
761- reg.read(_T("doNotRegisterDriver"), &bCheck, 0);
762- CheckDlgButton(m_hwnd, IDC_CHECK_dont_devicedriver, bCheck);
765+ // レジストリの値は使わずに、updateなら checkするようにする。
766+ //reg.read(_T("doNotRegisterDriver"), &bCheck, 0);
763767
768+ if (g_update == true)
769+ CheckDlgButton(m_hwnd, IDC_CHECK_dont_devicedriver, TRUE);
770+
764771 reg.read(_T("reloadScancodeMap"), &bCheck, 0);
765772 CheckDlgButton(m_hwnd, IDC_CHECK_ScancodeMapReload, bCheck);
766773
--- nodoka/trunk/nodoka/doc/MANUAL-ja.html (revision 231)
+++ nodoka/trunk/nodoka/doc/MANUAL-ja.html (revision 232)
@@ -59,16 +59,20 @@
5959  </font></p>
6060 <ul>
6161 <li><font face="MS Pゴシック">はじめに</font><ul>
62- <li><font face="MS Pゴシック"> Windows 2000, Windows XP(x86, x64),
63- Windows Vista(x86, x64), Windows 7(x86, x64), Windows 8,8.1(x86, x64) で動く汎用キーバインディング変更ソフトです。</font></li>
62+ <li><font face="MS Pゴシック"> Windows 2000とWindows XP, Vista, 7, 8,
63+ 8.1, 10(32bit, 64bit)で動く汎用キーバインディング変更ソフトです。</font></li>
6464 <li><font face="MS Pゴシック"> 実行ファイルならびにデバイスドライバに、コードサイニング(デジタル署名)を付与し、管理者権限へのアプリへの操作および、x64環境では、x86,
6565 x64両方のアプリへの操作が可能です。<br> 現在のコードサイニング証明書の期限は、2020-12-22です。なお、Windows XP, Vista
6666 において、インストール時にドライバに署名が無いことによる警告ダイアログが出る場合には、Windows Update
6767 による「ルート証明書の更新プログラム」のインストールが必要な場合があります。</font></li>
68- <li><font face="MS Pゴシック">「窓使いの憂鬱」Version 3.30から「のどか」Version 4.28
69- までの変更/修正点については、<b><a href="#HISTORY">改版履歴</a></b>を ご覧ください。
70-
71- </font></li>
68+ <li><font face="MS Pゴシック">「窓使いの憂鬱」Version 3.30から「のどか」Version 4.29
69+ までの変更/修正点については、<b><a href="#HISTORY">改版履歴</a></b>を ご覧ください。</font></li>
70+ <li>
71+ <font face="MS Pゴシック"><a href="#FAQ">FAQ</a>や<a href="#BUGS">バグ</a>に出ていない情報は、<a target="_blank" href="https://osdn.jp/projects/nodoka4/ticket/">Project
72+ nodoka4のチケット</a>もご覧ください。</font><li><span class="bug">
73+ <font face="MS Pゴシック">Windows 10上での追加の制限事項は、「</font></span><font size="2"><b><a href="#Windows10">Windows
74+ 10へのインストール関係の情報</a></b></font><span class="bug"><font face="MS Pゴシック">」をご覧ください。</font></span><font face="MS Pゴシック">
75+ </font>
7276 </ul>
7377 <li><font face="MS Pゴシック">キー入れ替えとウィンドウ操作に関する機能</font><ul>
7478 <li><font face="MS Pゴシック"><a href="#key">特定のキーを入れ替え</a>たり、<a href="CUSTOMIZE-ja.html#function_Prefix">2
@@ -137,11 +141,13 @@
137141 <li><font face="MS Pゴシック">シェアウェアやユーザーサポートについて</font><ul>
138142 <li><font face="MS Pゴシック">試用版は、正式版からの制限として、起動後30分で動作停止します。正式版(税込み
139143 1800円)は、<a target="_blank" href="http://appletkan.com/">http://appletkan.com/</a>
140- にて販売しています。<br>Paypalを用いてクレジットカードでのお支払い、あるいは銀行振り込みにて購入可能です。
144+ にて販売しています。<br>
145+ なおWindows
146+ 10に対応を記念したVer4.29では、30分の制限を撤廃したフルバージョンとなっており、2015-12/27まで使用可能となります。<br>Paypalを用いてクレジットカードでのお支払い、あるいは銀行振り込みにて購入可能です。
141147 なお将来にわたって、無償バージョンアップを保証するものではなく、Windowsのメジャーバージョンアップまでとなります。Windows
142- 8に対応したVersion 4.21は、Version 4.19aまでのユーザには、有償バージョンアップ(期間限定
143- 2013/1/12まで 939円。)を実施しました。期間を過ぎると通常価格版のみとなります。
144- この次はWindows 10がリリースされる2015年を想定しています。二つ前のバージョンで告知することとし、バージョンアップ価格は予価1000円。バージョンアップ版の販売は、期間限定一か月となります。<br>ソースコードは、<a target="_blank" href="../Common_Public_License_1_0.txt">Common
148+ 10に対応したVersion 4.29は、2014-12-31までに購入されたユーザ様には、有償バージョンアップ(期間限定
149+ 2015/10/18まで 1000円。)を実施します。期間を過ぎると通常価格版のみとなります。
150+ この次はWindowsのメジャーバージョンアップは無いと伺っているので、この先は不明ですが、また数年後に実施した場合には、バージョンアップ価格は予価1000円。バージョンアップ版の販売は、期間限定一か月となります。<br>ソースコードは、<a target="_blank" href="../Common_Public_License_1_0.txt">Common
145151 Public License</a> で
146152
147153
@@ -175,6 +181,8 @@
175181 <dt class="h1"><font face="MS Pゴシック"><a name="INSTALL">3. インストール install</a>
176182
177183 </font>
184+ <dd><br>
185+ Windows 10上でお使いになる場合には、「<b><a href="#Windows10">Windows 10へのインストール関係の情報</a></b>」もご覧ください。</dd>
178186
179187 <dd class="d1">
180188
@@ -211,8 +219,8 @@
211219 <li><font face="MS Pゴシック">4.02以前をインストールしていた場合には、スタートアップやプログラムメニューに、それぞれショートカットが2個登録されるので、インストール後、手作業で片方を削除してください。「のどか
212220 」「のどか」が存在し、半角スペースが付いている方が古い方です。</font><li><font face="MS Pゴシック"><b>「窓使いの憂鬱」からの移行の場合</b>には、下記コラム<a href="#toNodoka">「窓使いの憂鬱」から「のどか」への移行について</a>
213221 を ご覧ください。</font><li><font face="MS Pゴシック">上書きインストール時に、デバイスドライバの登録に失敗したり、あるいは既にアンインストールされている時、エラーダイアログが出ることがあります。その場合には、PCを再起動して、インストール作業を実施してください。</font></ul>
214- <li><font face="MS Pゴシック">入手された実行ファイル <span class="auto-style6">nodoka-4.28_sample_setup.exe</span>
215- (試用版), <span class="auto-style6">nodoka-4.28_setup.exe</span> (正式版)を <strong>Administrator(管理者)</strong>権限で実行してください。すると「のどか」のインストール作業が開始され
222+ <li><font face="MS Pゴシック">入手された実行ファイル <span class="auto-style6">nodoka-4.29_sample_setup.exe</span>
223+ (試用版), <span class="auto-style6">nodoka-4.29_setup.exe</span> (正式版)を <strong>Administrator(管理者)</strong>権限で実行してください。すると「のどか」のインストール作業が開始され
216224 、下記に示すダイアログが表示されます。(ドメインに参加している場合には、ローカルPCの管理者権限での実行が必要です。)<br>
217225 もし、「のどか」実行中の場合では、先に、「のどか」を終了させるかどうか、ダイアログによる問い合わせがあるので、OKで進めてください。&nbsp;</font><p>
218226 <img border="0" src="setup.png"></p>
@@ -261,9 +269,8 @@
261269 4 Language Pack<br>&nbsp; </span></span>
262270 <a target="_blank" href="http://www.microsoft.com/downloads/details.aspx?familyid=7A4C6414-7F64-47A5-AE20-218403137957&displaylang=ja">http://www.microsoft.com/downloads/details.aspx?familyid=7A4C6414-7F64-47A5-AE20-218403137957&amp;displaylang=ja</a><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: 'MS PGothic'; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><span class="Apple-style-span" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; "><br> </span></span></li>
263271 <li><font face="MS Pゴシック"><a name="デバイスドライバをインストールしない">デバイスドライバをインストールしない</a><br>
264- デバイスドライバをインストールせずに、インストールを実施します。以前にデバイスドライバをインストールしている場合には
265- デバイスドライバのインストール状態は変わりません。<br>
266- 後述するキーボードLLフックのチェックが付いていない場合には、本機能のチェックされたときに、キーボードLLフックのチェックが付けられます。<br> </font></li>
272+ デバイスドライバをインストールせずに、インストールを実施します。以前にのどかをインストールしている場合には、チェックが自動的に付きます。<br>
273+ 後述するキーボードLLフックのチェックが付いていない場合には、チェックされたときに、キーボードLLフックのチェックが付けられます。<br> </font></li>
267274 <li><font face="MS Pゴシック">マウスLLフック<br>nodoka起動時の引数 -m
268275 をスタートメニューや、スタートアップに登録されたショートカットに設定します。<br>
269276 <a target="_self" href="CUSTOMIZE-ja.html#def_option_mouse-event">マウスフック機能</a>を用いる場合には、チェックしてください。<br> </font></li>
@@ -274,7 +281,7 @@
274281 <li><font face="MS Pゴシック">キーボードLLフック時のWA<br>nodoka起動時の引数 -w
275282 をスタートメニューや、スタートアップに登録されたショートカットに設定します。<br>
276283 Windows
277- 8以降のOS利用時に、キーボードLLフックを使う場合、Alt-TabとWin-Xを、キーカスタマイズ対象から外して、Windowsに送られるようにします。必要ならばチェックしてください。
284+ 8での利用時に、キーボードLLフックを使う場合、Alt-TabとWin-Xを、キーカスタマイズ対象から外して、Windowsに送られるようにします。必要ならばチェックしてください。
278285 オプションでは、<a href="CUSTOMIZE-ja.html#option_WIN8WA">Windows 8用ワークアラウンド</a>と呼んでいます。<a href="#高整合性(高IL)版">高整合性(高IL)版オプション</a>もご覧ください。<br>
279286  </font></li>
280287 <li>機能制限版<font face="MS Pゴシック"><br>マクロ機能を排除した<a href="CUSTOMIZE-ja.html#option_limitversion" target="MANUAL">機能制限版の「のどか」</a>をインストールします。スタートメニューあるいはスタートアップへの登録時に、作成されるショートカットは、機能制限版(<span class="auto-style6">nodoka64_limit.exe</span>
@@ -304,7 +311,7 @@
304311 を実行することで動作開始します。
305312 機能制限版の場合には、インストール先の<span class="auto-style6">nodoka_limit.exe</span>か、<span class="auto-style6">nodoka64_limit.exe</span>を実行すれば良いです
306313 。またHIL版のバイナリ名は、<span class="auto-style6">nodoka_hil.exe</span>か、<span class="auto-style6">nodoka64_hil.exeとなります</span>。<b>なお、
307- いずれも試用版の場合には起動後30分で自動終了します。<br>
314+ いずれも試用版の場合には起動後30分で自動終了します(4.29の試用版では30分ではなく、2015-12-27まで使用可能です)。<br>
308315 <br>
309316 </b>4.04以降では、<span class="auto-style6">nodoka.exe</span> などを実行時に、引数を指定することで、通知領域のアイコンの色を指定することが可能となりました。<br>
310317 その他、起動時の引数については、<a href="CUSTOMIZE-ja.html#option_arg" target="_self">こちらをご覧ください。</a></font><li><font face="MS Pゴシック"><b>
@@ -387,6 +394,42 @@
387394 104on109.mayu, 109on104.mayu の記述については、修正不要です。</font></div></dd>
388395 </dl>
389396
397+ <dd class="d1">
398+
399+ <dl>
400+ <dt class="h2"><a name="Windows10"><font face="MS Pゴシック">「</font><font size="2"><b>Windows
401+ 10へのインストール関係の情報</b></font><font face="MS Pゴシック">」</font></a></dt>
402+ <dd class="d2">
403+ <div>
404+ <b>1. Windowsのアップグレードインストール時の制限事項<br>
405+ </b> のどかをインストールしたままで、Windowsを7や8.1からWindows
406+ 10にアップグレードした場合、次に示す制限事項があります。<p>
407+ ・設定ファイルである.nodokaファイルの関連付けが削除され、設定ダイアログでのファイル編集ボタンが機能しません。<br>
408+  修正するには、コントロールパネル/規定のプログラム/ファイルの種類またはプロトコルのプログラムへの関連付けにおいて、「.nodoka
409+ のどかファイルの現在の規定プログラム」を、プログラムの変更ボタンをクリックし、メモ帳などテキストファイル編集アプリに変更してください。</p>
410+ <p><br>
411+ <b>2.&nbsp; Windows 10上で、のどかを上書きインストールする場合の制限事項<br>
412+ </b> Windows 10上で上書きインストールする場合、以下の制限事項があります。</p>
413+ <p>・デバイスドライバのファイルコピーに失敗しインストールに失敗します。<br>
414+  
415+ そのため、setupウィンドウ上のオプションで、「デバイスドライバをインストールしない」を選択して実行してください。なお4.29では自動的に選択するように変更しました。もし、そうされずにインストールが失敗した場合には、Windows
416+ 10を再起動してから、のどかを再インストールし直してください。<br>
417+ <br>
418+  なお「デバイスドライバをインストールしない」を新たにチェックを付けた場合、安全のために「キーボードLLフック」が自動的に選択されるので、それが不要であれば「キーボードLLフック」の選択は外してください。</p>
419+ <p>・Windows 10上でのどかをアンインストールする場合、特に問題は見つかっていません。</p>
420+ <p>・Windows
421+ 10上で「キーボードLLフック」を使用する場合、「キーボードLLフック時のWA」を選択する必要はありません。つまり引数の-k使用時の-wの設定は不要となります。</p>
422+ <p><br>
423+ <b>3. Windows 10上での、のどかの制限事項<br>
424+ </b> 他にもあるかも知れませんが、現在確認出来ているものとして以下が有ります。</p>
425+ <p>・Internet Explorer上で、IMEの変換中(-IC)が取れないことがあります。</p>
426+ <p>・Internet Explorerを管理者権限で動作させた場合、ウィンドウ名が取れないことが有ります。その場合<font face="MS Pゴシック">KeymapはGlobalとなります。</font></p>
427+ <p>・OneNote、Windows Edgeでは、IMEの状態が一切取れていません。</p>
428+ <p>・メモ帳を管理者権限で動作させた場合、IMEの状態が正しく取れません。</p>
429+ <p>・たまにウィンドウの調査が機能しないことが有ります。<br>
430+ </div></dd>
431+ </dl>
432+
390433 <dt class="h1"><font face="MS Pゴシック"><a name="UNINSTALL">4. アンインストール uninstall</a>
391434
392435 </font>
@@ -658,7 +701,7 @@
658701 <font face="MS Pゴシック">ログ(<u>L</u>)...</font></a></span><font face="MS Pゴシック">
659702  (「のどか」のアイコンを左ボタンでクリックしても表示されます。)</font><dd>
660703 <div>
661- <p><font face="MS Pゴシック">ログウィンドウを表示します。 (以下の図では4.27表記ですが、4.28版では4.28と表記されます。)</font></p>
704+ <p><font face="MS Pゴシック">ログウィンドウを表示します。 (以下の図では4.27表記ですが、4.29版では4.29と表記されます。)</font></p>
662705 <p><font face="MS Pゴシック"><img src="log-ja.png"></font></p>
663706 <p><font face="MS Pゴシック">・</font><a href="#menu-i" class="menu-item"><font face="MS Pゴシック">調査(<u>I</u>)...</font></a><font face="MS Pゴシック">の結果やエラーなどがここに表示されます。<br></font></p>
664707 <p><font face="MS Pゴシック">・「ログのクリア(L)」ボタンを押すと、現在表示されているログを消去します。</font></p>
@@ -688,7 +731,7 @@
688731 </font>
689732 <dd>
690733 <div>
691- <p><font face="MS Pゴシック">バージョン情報を表示します。(以下の図では、4.27表記ですが、4.28版では4.28と表記されます。)<br>  x64環境で、nodoka64.exeが起動されているときには、バージョン番号の後ろに、for x64 と表示されます。</font></p>
734+ <p><font face="MS Pゴシック">バージョン情報を表示します。(以下の図では、4.27表記ですが、4.29版では4.29と表記されます。)<br>  x64環境で、nodoka64.exeが起動されているときには、バージョン番号の後ろに、for x64 と表示されます。</font></p>
692735 <p><font face="MS Pゴシック">デバイスドライバのバージョン番号も表示されており、(nodokad:
693736 $Revision: 1.31 $) と通常表示されます。</font></p>
694737 <p><font face="MS Pゴシック">もし、<a href="CUSTOMIZE-ja.html#option_keyboardLLhook">起動時引数に -k
@@ -1155,7 +1198,12 @@
11551198 <dd class="d1">
11561199 <div>
11571200 <dl>
1158- <dt class="h2"><font face="MS Pゴシック">Q1.
1201+ <li>
1202+ <font face="MS Pゴシック">FAQやバグに出ていない情報は、<a target="_blank" href="https://osdn.jp/projects/nodoka4/ticket/">Project
1203+ nodoka4のチケット</a>もご覧ください。</font><li><span class="bug">
1204+ <font face="MS Pゴシック">Windows 10上での追加の制限事項は、「</font></span><font size="2"><b><a href="#Windows10">Windows
1205+ 10へのインストール関係の情報</a></b></font><span class="bug"><font face="MS Pゴシック">」をご覧ください。<br>
1206+ </font></span><dt class="h2"><font face="MS Pゴシック">Q1.
11591207 「のどか」を使っていると勝手にキーリピートしてしまいます。
11601208
11611209
@@ -1207,7 +1255,8 @@
12071255 が追加されており、同じく不具合の原因となります。<br> VMware Workstationの場合には、vmkbd
12081256 が追加されています。ある程度、共存して動作しますが、ときどきキーボードやマウスが固まると言った不具合が発生するので、vmkbd
12091257 エントリを削除して、PCを再起動すると安定することが試行錯誤した結果 分かりました。なお、その場合には VMware
1210- Workstation側で、キーボードの操作に一部問題が発生するかもしれません。<br> vmkbd は、VMware Workstation Version
1258+ Workstation側で、キーボードの操作に一部問題が発生するかもしれません。あるいは、vmkbdが存在しても、kbdclassの次に
1259+ nodokadがあれば大丈夫そうなので、4.29からsetup時にそうなるよう修正しています。<br> vmkbd は、VMware Workstation Version
12111260 6.0で確認しましたが、他のバージョンでは異なる名前のドライバのようです。<br>
12121261 <br>
12131262  ユーザー様ご報告では、下記のフィルタドライバも存在するようです。いずれも同時動作はユーザー様責任となります。</font></p>
@@ -1632,7 +1681,11 @@
16321681 ることがあるので、リンク先を参照して修復してください。なお、これはWindows側の不具合です。<a href="http://support.microsoft.com/kb/927824/ja">Windows
16331682 7, Vista, XP</a><a target="_blank" href="http://support.microsoft.com/kb/927824/ja">の場合</a>。<a href="http://support.microsoft.com/kb/880943/ja">Windows
16341683 7, Vista, XP</a><a target="_blank" href="http://support.microsoft.com/kb/2569052/ja">の場合(</a><a href="http://support.microsoft.com/kb/880943/ja">より初心者向け)</a>。<a target="_blank" href="http://support.microsoft.com/kb/416037/ja">Windows
1635- 8の場合</a></font></ul>
1684+ 8の場合</a></font><li>
1685+ <font face="MS Pゴシック">FAQやバグに出ていない情報は、<a target="_blank" href="https://osdn.jp/projects/nodoka4/ticket/">Project
1686+ nodoka4のチケット</a>もご覧ください。</font><li><span class="bug">
1687+ <font face="MS Pゴシック">Windows 10上での追加の制限事項は、「</font></span><font size="2"><b><a href="#Windows10">Windows
1688+ 10へのインストール関係の情報</a></b></font><span class="bug"><font face="MS Pゴシック">」をご覧ください。</font></span></ul>
16361689 <p><font face="MS Pゴシック">上記以外で、Windows XP
16371690 32bit上で、管理者権限ユーザでログインして、お使いの場合で、「窓使いの憂鬱」Version 3.30
16381691 では出来たけれども、「のどか」では出来なくなっていることがありましたら、随時、掲示板等で、ご連絡ください。「のどか」で、仕様変更した部位もありますが、それは改版履歴をごらん頂き、それ以外であれば、「のどか」リリース時の、Vista対応や64bit対応において、未確認の作りこんでしまったデグレードバグの可能性があります。その場合には、誠意を持って可能な限り対応いたします。</font><dt class="h1">
@@ -2037,6 +2090,43 @@
20372090 <dt class="h1"><font face="MS Pゴシック"><a name="HISTORY">16. 改版履歴 history</a></font>
20382091 <dd class="d1">
20392092 <div>
2093+ <p>2015/09/17 4.29 (Windows
2094+ 10対応は4.30にする予定でしたが空き番にするのも不自然なので4.29としました。)</p>
2095+ <ul class="auto-style4">
2096+ <li><b>Windows 10対応</b><ul class="auto-style4">
2097+ <li><b>Windows
2098+ 10対応を記念して、4.29評価版では30分しか使えない制限を廃止しています。ただし2015-12-27までの使用期限があります。</b></li>
2099+ <li><font size="2">実行ファイルのminifestにて、Windows 7からWindows
2100+ 10までの互換フラグを設定しました。</font></li>
2101+ <li><font size="2">
2102+ インストール時に過去にインストール済であれば、「デバイスドライバをインストールしない」にチェックを付けるようにしました。<br>
2103+ Windows 10では上書きインストールの際、デバイスドライバファイルの上書きに失敗するためです。</font></li>
2104+ <li><font size="2">Windows 10へのインストール関係の情報やのどかの制限事項は、<b>「<a href="#Windows10">Windows
2105+ 10へのインストール関係の情報</a>」</b>にまとめましたので忘れずにご覧ください。</font></li>
2106+ </ul></li>
2107+ <li><b>その他</b><ul class="auto-style4">
2108+ <li>
2109+ インストール時にkbdclassのドライバが既に存在する場合、nodokadドライバが、kbdclassの次に来るよう変更しました。<br>
2110+ VMwareなどのドライバと併用するとキー入力時にWindowsがフリーズすることを防ぐ対処策です。</li>
2111+ <li>
2112+ キー入力のログのうち、拡張キーであるE0E1-が付いてる場合、以前は空白を表示していましたが、E0E1-を表示するようにしました。<br> </li>
2113+ </ul>
2114+ </li>
2115+ <li><b>内部的な修正</b><ul class="auto-style4">
2116+ <li>
2117+ 権限が異なるアプリとのウィンドウメッセージやりとりのために、フィルタ登録関数ChangeWindowMessageFilter()とChangeWindowMessageFilterEx()を使い分けるようにしました。(Windows
2118+ 7以降では該当関数が機能しないためですが、有効にならないWindows 10上のアプリが存在します)</li>
2119+ <li>
2120+ フックDLLに他のプロセスからアタッチされた際、ChangeWindowMessageFilterEx()を呼んでいるが、タスクトレイ上ののどかのウィンドウハンドルが取れないことがあるため、DLLのフックをウィンドウハンドルが取れるまで待たせるようにしました。</li>
2121+ <li>タスクトレイのアイコン表示前にDLLのフックを実行していたが、順番を入れ替えました。<br>
2122+ しかしながら上記を実施しても、IMEの状態が取れないアプリが存在し、またまれにウィンドウの調査が出来ない状態になることが有ります。</li>
2123+ <li>
2124+ engine.cpp内で、nodokadデバイスドライバを起動時に余計にオープンしていたが、1回だけオープンに修正しました。<br>
2125+ しかしながら、Windows 10でデバイスドライバの上書きコピーに失敗する対策にはなっていません。<br>
2126+ </li>
2127+ </ul>
2128+ </li>
2129+ </ul>
20402130 <p>2015/07/28 4.28</p>
20412131 <ul class="auto-style4">
20422132 <li><b>修正</b><ul class="auto-style4">
@@ -2059,8 +2149,8 @@
20592149 <li><b>その他</b><ul class="auto-style4">
20602150 <li>Windows 10対応アップグレードのお知らせ<br>
20612151 2014年以前(2014/12/31以前)に購入されたユーザー様は、Windows
2062- 10対応にはアップグレード版(4.30)の購入が必要となります。<br>
2063- 予価1000円で期間限定販売となります。購入を御希望されない場合には、この4.28か次の4.29が最終サポートバージョンとなります。<br>
2152+ 10対応にはアップグレード版(4.29)の購入が必要となります。<br>
2153+ 予価1000円で期間限定販売となります。購入を御希望されない場合には、この4.28が最終サポートバージョンとなります。<br>
20642154 なおWindows 10上ですべての不具合解消や機能追加を保証するものではありません。<br>
20652155  </li>
20662156 </ul>
--- nodoka/trunk/nodoka/doc/CUSTOMIZE-ja.html (revision 231)
+++ nodoka/trunk/nodoka/doc/CUSTOMIZE-ja.html (revision 232)
@@ -1736,6 +1736,8 @@
17361736 <p><font face="MS Pゴシック">引数は、enable,
17371737 ゲームパッドのアナログスティックの最大値、閾値、デッドゾーン値、リピートまでの最初の遅延量、繰り返しの遅延量、入力ループのWait[ms]、スティックやトリガー、ハットキー、ボタンのリピートフラグ(abit,
17381738 bbit, cbit の各1bit、1でリピート有り、LSB)です。</font></p>
1739+ <p><font face="MS Pゴシック">
1740+ 上記の例では、入力ループのWait指定に5msとしていますが、CPUリソースを消費する場合には、より大きな値にしてください。</font></p>
17391741 <p><font face="MS Pゴシック">プラグイン gamepad.dll は、DirectX
17401742 8互換で実装しています。詳しくはソースコードを ご覧ください。gamepad.dll
17411743 を改造して、任意のデバイスからの入力を受けれるようにすると、のどか
@@ -2514,8 +2516,8 @@
25142516 (nodokad: Keyboard LL Hook Mode) が右上に表示されます。</font></p>
25152517 <p><font face="MS Pゴシック">
25162518 キーボードLLフックで動作させると、デバイスドライバがインストールされていない環境でも実行可能です。
2517- セットアップでは、<a target="_self" href="MANUAL-ja.html#デバイスドライバをインストールしない">デバイスドライバをインストールしない</a>を選択した場合、キーボードLLフックを選択することになります。もし、のどかをインストールせずに、バイナリだけをセットアップから、取り出す場合には、</font><font SIZE="2">nodoka-4.28_setup.exe
2518- /C をコマンドプロンプトから実行してください。</font></p>
2519+ セットアップでは、<a target="_self" href="MANUAL-ja.html#デバイスドライバをインストールしない">デバイスドライバをインストールしない</a>を選択した場合、キーボードLLフックを選択することになります。もし、のどかをインストールせずに、バイナリだけをセットアップから、取り出す場合には、</font><font SIZE="2">nodoka-4.29_setup.exe
2520+ /C をコマンドプロンプトから実行してください(この時の場合でも管理者権限が必要となります)。</font></p>
25192521 <p><font size="2">最小限必要なファイルは、x86環境では nodoka.exe, nodoka.dllと、109.nodokaなどの設定ファイルです。またx64環境では、nodoka64.exe, nodoka64.dll,
25202522 nodoka_helper.exe が必要となります。</font></p>
25212523 <p><font size="2">x86環境では nodoka.exe -k を、またx64環境では、nodoka64.exe
@@ -2573,7 +2575,7 @@
25732575 <div>
25742576  <p><b><font face="MS Pゴシック">引数 -w 解説と使い方</font></b></p>
25752577 <p><font face="MS Pゴシック">def option で指定する機能ではなく、nodoka.exe あるいは
2576- nodoka64.exe の起動時コマンドライン引数に -w
2578+ nodoka64.exe の起動時コマンドライン引数です。Windows 8, 8.1向けで -w
25772579 をつけた時に、Alt-Tabキーと、Win-Xキーを押したとき、キーカスタマイズ対象から外すことで、Windowsに送られるようになります。</font></p>
25782580 <p><font face="MS Pゴシック">デバイスドライバモードではない</font>キーボード<font face="MS Pゴシック">LLフック利用時に、
25792581 高整合性(High IL)版である nodoka_hil.exeあるいはnodoka64_hil.exeを用いて管理者権限で起動するのではなく、Alt-TabやWin-Xキーを、キーカスタマイズ対象にしなくても問題が無い場合には、こちらの起動時オプションを御使い下さい。<br>
--- nodoka/trunk/nodoka/nodoka_helper/nodoka_helper.cpp (revision 231)
+++ nodoka/trunk/nodoka/nodoka_helper/nodoka_helper.cpp (revision 232)
@@ -95,8 +95,6 @@
9595 return (int) msg.wParam;
9696 }
9797
98-
99-
10098 //
10199 // 関数: MyRegisterClass()
102100 //
@@ -127,89 +125,6 @@
127125 hWnd = CreateWindowEx(0, szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
128126 0, 0, 0, 0, NULL, NULL, hInstance, NULL);
129127
130- if (!hWnd)
131- {
132- return FALSE;
133- }
134- // Set ChangeWindowMessageFilter
135- //HMODULE dll = LoadLibrary(TEXT("user32.dll"));
136- FUNCTYPE ChangeWindowMessageFilter = (FUNCTYPE)GetProcAddress(LoadLibrary(TEXT("user32.dll")) , "ChangeWindowMessageFilter");
137-
138- if(ChangeWindowMessageFilter != NULL)
139- {
140- BOOL bFlag = ChangeWindowMessageFilter(WM_APP + 101, MSGFLT_ADD); // WM_APP_taskTrayNotify
141- if(bFlag){
142- //OutputDebugString(L"ChangeWindowMessageFilter OK\n");
143- }
144- else
145- {
146- //OutputDebugString(L"ChangeWindowMessageFilter NG\n");
147- }
148-
149- ChangeWindowMessageFilter(WM_APP + 102, MSGFLT_ADD); // WM_APP_msgStreamNotify
150- ChangeWindowMessageFilter(WM_APP + 103, MSGFLT_ADD); // WM_APP_notifyFocus
151- ChangeWindowMessageFilter(WM_APP + 104, MSGFLT_ADD); // WM_APP_notifyVKey
152- ChangeWindowMessageFilter(WM_APP + 105, MSGFLT_ADD); // WM_APP_targetNotify
153- ChangeWindowMessageFilter(WM_APP + 110, MSGFLT_ADD); // WM_APP_engineNotify
154- ChangeWindowMessageFilter(WM_APP + 115, MSGFLT_ADD); // WM_APP_dlglogNotify
155- ChangeWindowMessageFilter(WM_APP + 116, MSGFLT_ADD); // WM_APP_SendKey
156- ChangeWindowMessageFilter(WM_APP + 120, MSGFLT_ADD); // WM_APP_NotifyThreadDetach
157- ChangeWindowMessageFilter(WM_APP + 122, MSGFLT_ADD); // WM_APP_NotifyLockState
158- ChangeWindowMessageFilter(WM_APP + 123, MSGFLT_ADD); // WM_APP_NotifyTSF
159- ChangeWindowMessageFilter(WM_APP + 124, MSGFLT_ADD); // WM_APP_escapeNLSKeysFailed
160- ChangeWindowMessageFilter(WM_APP + 201, MSGFLT_ADD); // for Touchpad
161- ChangeWindowMessageFilter(WM_APP + 202, MSGFLT_ADD); // for gamepad
162- ChangeWindowMessageFilter(WM_APP + 203, MSGFLT_ADD); // for mouse
163-
164- UINT WM_NODOKA_MESSAGE = RegisterWindowMessage(addSessionId(WM_NODOKA_MESSAGE_NAME).c_str());
165-
166- ChangeWindowMessageFilter(WM_NODOKA_MESSAGE, MSGFLT_ADD); // for Touchpad
167-
168- ChangeWindowMessageFilter(WM_CREATE, MSGFLT_ADD); //
169- ChangeWindowMessageFilter(WM_DESTROY, MSGFLT_ADD); //
170- ChangeWindowMessageFilter(WM_MOVE, MSGFLT_ADD); //
171- ChangeWindowMessageFilter(WM_SIZE, MSGFLT_ADD); //
172- ChangeWindowMessageFilter(WM_ACTIVATE, MSGFLT_ADD); //
173- ChangeWindowMessageFilter(WM_SETFOCUS, MSGFLT_ADD); //
174- ChangeWindowMessageFilter(WM_KILLFOCUS, MSGFLT_ADD); //
175- ChangeWindowMessageFilter(WM_PAINT, MSGFLT_ADD); //
176- ChangeWindowMessageFilter(WM_CLOSE, MSGFLT_ADD); //
177- ChangeWindowMessageFilter(WM_QUERYENDSESSION, MSGFLT_ADD); //
178- ChangeWindowMessageFilter(WM_ACTIVATEAPP, MSGFLT_ADD); //
179- ChangeWindowMessageFilter(WM_MOUSEACTIVATE, MSGFLT_ADD); //
180- ChangeWindowMessageFilter(WM_COPYDATA, MSGFLT_ADD); //
181- ChangeWindowMessageFilter(WM_NOTIFY, MSGFLT_ADD); //
182- ChangeWindowMessageFilter(WM_SETICON, MSGFLT_ADD); //
183- ChangeWindowMessageFilter(WM_NCDESTROY, MSGFLT_ADD); //
184- ChangeWindowMessageFilter(WM_NCHITTEST, MSGFLT_ADD); //
185- ChangeWindowMessageFilter(WM_NCACTIVATE, MSGFLT_ADD); //
186- ChangeWindowMessageFilter(WM_GETDLGCODE, MSGFLT_ADD); //
187- ChangeWindowMessageFilter(WM_INPUT, MSGFLT_ADD); //
188- ChangeWindowMessageFilter(WM_INPUT_DEVICE_CHANGE, MSGFLT_ADD); //
189- ChangeWindowMessageFilter(WM_KEYDOWN, MSGFLT_ADD); //
190- ChangeWindowMessageFilter(WM_KEYUP, MSGFLT_ADD); //
191- ChangeWindowMessageFilter(WM_CHAR, MSGFLT_ADD); //
192- ChangeWindowMessageFilter(WM_DEADCHAR, MSGFLT_ADD); //
193- ChangeWindowMessageFilter(WM_SYSKEYDOWN, MSGFLT_ADD); //
194- ChangeWindowMessageFilter(WM_SYSKEYUP, MSGFLT_ADD); //
195- ChangeWindowMessageFilter(WM_IME_STARTCOMPOSITION , MSGFLT_ADD); //
196- ChangeWindowMessageFilter(WM_IME_ENDCOMPOSITION, MSGFLT_ADD); //
197- ChangeWindowMessageFilter(WM_INITDIALOG, MSGFLT_ADD); //
198- ChangeWindowMessageFilter(WM_COMMAND, MSGFLT_ADD); //
199- ChangeWindowMessageFilter(WM_SYSCOMMAND, MSGFLT_ADD); //
200- ChangeWindowMessageFilter(WM_TIMER, MSGFLT_ADD); //
201- ChangeWindowMessageFilter(WM_MOUSEMOVE, MSGFLT_ADD); //
202- ChangeWindowMessageFilter(WM_LBUTTONDOWN, MSGFLT_ADD); //
203- ChangeWindowMessageFilter(WM_LBUTTONUP, MSGFLT_ADD); //
204- ChangeWindowMessageFilter(WM_ENTERMENULOOP, MSGFLT_ADD); //
205- ChangeWindowMessageFilter(WM_EXITMENULOOP, MSGFLT_ADD); //
206- ChangeWindowMessageFilter(WM_SIZING, MSGFLT_ADD); //
207- ChangeWindowMessageFilter(WM_IME_NOTIFY, MSGFLT_ADD); //
208- ChangeWindowMessageFilter(WM_WTSSESSION_CHANGE, MSGFLT_ADD); //
209- ChangeWindowMessageFilter(WM_LBUTTONDBLCLK, MSGFLT_ADD); //
210- ChangeWindowMessageFilter(WM_MBUTTONDOWN, MSGFLT_ADD); //
211- }
212-
213128 return TRUE;
214129 }
215130
--- nodoka/trunk/nodoka/nodoka_helper/nodoka_helper.manifest (revision 231)
+++ nodoka/trunk/nodoka/nodoka_helper/nodoka_helper.manifest (revision 232)
@@ -3,7 +3,7 @@
33 <assemblyIdentity
44 type="win32"
55 name="nodoka_helper"
6- version="4.2.8.0"
6+ version="4.2.9.0"
77 processorArchitecture="X86"
88 />
99 <description>nodoka_helper</description>
@@ -29,4 +29,18 @@
2929 </requestedPrivileges>
3030 </security>
3131 </trustInfo>
32+ <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
33+ <application>
34+ <!-- Windows 10 -->
35+ <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
36+ <!-- Windows 8.1 -->
37+ <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
38+ <!-- Windows Vista -->
39+ <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
40+ <!-- Windows 7 -->
41+ <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
42+ <!-- Windows 8 -->
43+ <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
44+ </application>
45+ </compatibility>
3246 </assembly>
--- nodoka/trunk/nodoka/dll/hook.cpp (revision 231)
+++ nodoka/trunk/nodoka/dll/hook.cpp (revision 232)
@@ -76,8 +76,6 @@
7676 void EnableChangeWindowMessageFilter(void);
7777 void DisableChangeWindowMessageFilter(void);
7878
79-typedef UINT (CALLBACK *FUNCTYPE4)(HANDLE, UINT, LPVOID, PUINT, UINT);
80-static FUNCTYPE4 myGetRawInputData = (FUNCTYPE4)GetProcAddress(GetModuleHandle(L"user32.dll"), "GetRawInputData");
8179
8280 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8381 // Functions
@@ -121,111 +119,135 @@
121119 return TRUE;
122120 }
123121
124-/// Enable/DisableChangeWindowMessageFilter() for Vista
125-void EnableChangeWindowMessageFilter()
122+// ChangeWindowMessageFilter helper
123+void myChangeWindowMessageFilter(UINT message, DWORD flag)
126124 {
125+ HMODULE dll = LoadLibrary(TEXT("user32.dll"));
126+ static FUNCTYPE ChangeWindowMessageFilter = (FUNCTYPE)GetProcAddress(dll, "ChangeWindowMessageFilter");
127+ static FUNCTYPE7 ChangeWindowMessageFilterEx = (FUNCTYPE7)GetProcAddress(dll, "ChangeWindowMessageFilterEx");
127128
128- //HMODULE dll = LoadLibrary(TEXT("user32.dll"));
129- FUNCTYPE ChangeWindowMessageFilter = (FUNCTYPE)GetProcAddress(LoadLibrary(TEXT("user32.dll")) , "ChangeWindowMessageFilter");
129+ DWORD flag7 = MSGFLT_RESET;
130+ HWND tmpNodokaTasktray = NULL;
130131
131- if(ChangeWindowMessageFilter != NULL)
132+ if (g.hookDataDll == NULL)
132133 {
133- BOOL bFlag = ChangeWindowMessageFilter(WM_APP + 101, MSGFLT_ADD); // WM_APP_taskTrayNotify
134+ tmpNodokaTasktray = FindWindow(L"nodokaTasktray", NULL);
135+ }
136+ else
137+ {
138+ tmpNodokaTasktray = (HWND)g.hookDataDll->m_hwndTaskTray;
139+ }
134140
135- ChangeWindowMessageFilter(WM_APP + 102, MSGFLT_ADD); // WM_APP_msgStreamNotify
136- ChangeWindowMessageFilter(WM_APP + 103, MSGFLT_ADD); // WM_APP_notifyFocus
137- ChangeWindowMessageFilter(WM_APP + 104, MSGFLT_ADD); // WM_APP_notifyVKey
138- ChangeWindowMessageFilter(WM_APP + 105, MSGFLT_ADD); // WM_APP_targetNotify
139- ChangeWindowMessageFilter(WM_APP + 110, MSGFLT_ADD); // WM_APP_engineNotify
140- ChangeWindowMessageFilter(WM_APP + 115, MSGFLT_ADD); // WM_APP_dlglogNotify
141- ChangeWindowMessageFilter(WM_APP + 116, MSGFLT_ADD); // WM_APP_SendKey
142- ChangeWindowMessageFilter(WM_APP + 120, MSGFLT_ADD); // WM_APP_NotifyThreadDetach
143- //ChangeWindowMessageFilter(WM_APP + 121, MSGFLT_ADD); // WM_APP_NotifySync
144- ChangeWindowMessageFilter(WM_APP + 122, MSGFLT_ADD); // WM_APP_NotifyLockState
145- ChangeWindowMessageFilter(WM_APP + 123, MSGFLT_ADD); // WM_APP_NotifyTSF
146- ChangeWindowMessageFilter(WM_APP + 124, MSGFLT_ADD); // WM_APP_escapeNLSKeysFailed
147- ChangeWindowMessageFilter(WM_APP + 201, MSGFLT_ADD); // for Touchpad
148- ChangeWindowMessageFilter(WM_APP + 202, MSGFLT_ADD); // for gamepad
149- ChangeWindowMessageFilter(WM_APP + 203, MSGFLT_ADD); // for mouse
141+ if(flag == MSGFLT_ADD)
142+ {
143+ flag7 = MSGFLT_ALLOW;
144+ }
145+ else if(flag == MSGFLT_REMOVE)
146+ {
147+ flag7 = MSGFLT_RESET;
148+ }
150149
151- UINT WM_NODOKA_MESSAGE = RegisterWindowMessage(addSessionId(WM_NODOKA_MESSAGE_NAME).c_str());
150+ if(ChangeWindowMessageFilterEx != NULL) // 7 or later
151+ {
152+ ChangeWindowMessageFilterEx(tmpNodokaTasktray, message, flag7, 0);
153+ }
154+ else if(ChangeWindowMessageFilter != NULL) // Vista
155+ {
156+ ChangeWindowMessageFilter(message, flag);
157+ }
158+}
152159
153- ChangeWindowMessageFilter(WM_NODOKA_MESSAGE, MSGFLT_ADD); // for Touchpad
160+/// Enable/DisableChangeWindowMessageFilter() for Vista
161+void EnableChangeWindowMessageFilter()
162+{
163+ UINT WM_NODOKA_MESSAGE = RegisterWindowMessage(addSessionId(WM_NODOKA_MESSAGE_NAME).c_str());
154164
155- ChangeWindowMessageFilter(WM_CREATE, MSGFLT_ADD); //
156- ChangeWindowMessageFilter(WM_DESTROY, MSGFLT_ADD); //
157- ChangeWindowMessageFilter(WM_MOVE, MSGFLT_ADD); //
158- ChangeWindowMessageFilter(WM_SIZE, MSGFLT_ADD); //
159- ChangeWindowMessageFilter(WM_ACTIVATE, MSGFLT_ADD); //
160- ChangeWindowMessageFilter(WM_SETFOCUS, MSGFLT_ADD); //
161- ChangeWindowMessageFilter(WM_KILLFOCUS, MSGFLT_ADD); //
162- ChangeWindowMessageFilter(WM_PAINT, MSGFLT_ADD); //
163- ChangeWindowMessageFilter(WM_CLOSE, MSGFLT_ADD); //
164- ChangeWindowMessageFilter(WM_QUERYENDSESSION, MSGFLT_ADD); //
165- ChangeWindowMessageFilter(WM_ACTIVATEAPP, MSGFLT_ADD); //
166- ChangeWindowMessageFilter(WM_MOUSEACTIVATE, MSGFLT_ADD); //
167- ChangeWindowMessageFilter(WM_COPYDATA, MSGFLT_ADD); //
168- ChangeWindowMessageFilter(WM_NOTIFY, MSGFLT_ADD); //
169- ChangeWindowMessageFilter(WM_SETICON, MSGFLT_ADD); //
170- ChangeWindowMessageFilter(WM_NCDESTROY, MSGFLT_ADD); //
171- ChangeWindowMessageFilter(WM_NCHITTEST, MSGFLT_ADD); //
172- ChangeWindowMessageFilter(WM_NCACTIVATE, MSGFLT_ADD); //
173- ChangeWindowMessageFilter(WM_GETDLGCODE, MSGFLT_ADD); //
174- ChangeWindowMessageFilter(WM_INPUT, MSGFLT_ADD); //
175- ChangeWindowMessageFilter(WM_INPUT_DEVICE_CHANGE, MSGFLT_ADD); //
176- ChangeWindowMessageFilter(WM_KEYDOWN, MSGFLT_ADD); //
177- ChangeWindowMessageFilter(WM_KEYUP, MSGFLT_ADD); //
178- ChangeWindowMessageFilter(WM_CHAR, MSGFLT_ADD); //
179- ChangeWindowMessageFilter(WM_DEADCHAR, MSGFLT_ADD); //
180- ChangeWindowMessageFilter(WM_SYSKEYDOWN, MSGFLT_ADD); //
181- ChangeWindowMessageFilter(WM_SYSKEYUP, MSGFLT_ADD); //
182- ChangeWindowMessageFilter(WM_IME_STARTCOMPOSITION , MSGFLT_ADD); //
183- ChangeWindowMessageFilter(WM_IME_ENDCOMPOSITION, MSGFLT_ADD); //
184- ChangeWindowMessageFilter(WM_INITDIALOG, MSGFLT_ADD); //
185- ChangeWindowMessageFilter(WM_COMMAND, MSGFLT_ADD); //
186- ChangeWindowMessageFilter(WM_SYSCOMMAND, MSGFLT_ADD); //
187- ChangeWindowMessageFilter(WM_TIMER, MSGFLT_ADD); //
188- ChangeWindowMessageFilter(WM_MOUSEMOVE, MSGFLT_ADD); //
189- ChangeWindowMessageFilter(WM_LBUTTONDOWN, MSGFLT_ADD); //
190- ChangeWindowMessageFilter(WM_LBUTTONUP, MSGFLT_ADD); //
191- ChangeWindowMessageFilter(WM_ENTERMENULOOP, MSGFLT_ADD); //
192- ChangeWindowMessageFilter(WM_EXITMENULOOP, MSGFLT_ADD); //
193- ChangeWindowMessageFilter(WM_SIZING, MSGFLT_ADD); //
194- ChangeWindowMessageFilter(WM_IME_NOTIFY, MSGFLT_ADD); //
195- ChangeWindowMessageFilter(WM_WTSSESSION_CHANGE, MSGFLT_ADD); //
196- ChangeWindowMessageFilter(WM_LBUTTONDBLCLK, MSGFLT_ADD); //
197- ChangeWindowMessageFilter(WM_MBUTTONDOWN, MSGFLT_ADD); //
198- }
165+ if (!g.m_isMaped)
166+ mapHookData();
167+
168+ myChangeWindowMessageFilter(WM_APP + 101, MSGFLT_ADD); // WM_APP_taskTrayNotify
169+ myChangeWindowMessageFilter(WM_APP + 102, MSGFLT_ADD); // WM_APP_msgStreamNotify
170+ myChangeWindowMessageFilter(WM_APP + 103, MSGFLT_ADD); // WM_APP_notifyFocus
171+ myChangeWindowMessageFilter(WM_APP + 104, MSGFLT_ADD); // WM_APP_notifyVKey
172+ myChangeWindowMessageFilter(WM_APP + 105, MSGFLT_ADD); // WM_APP_targetNotify
173+ myChangeWindowMessageFilter(WM_APP + 110, MSGFLT_ADD); // WM_APP_engineNotify
174+ myChangeWindowMessageFilter(WM_APP + 115, MSGFLT_ADD); // WM_APP_dlglogNotify
175+ myChangeWindowMessageFilter(WM_APP + 116, MSGFLT_ADD); // WM_APP_SendKey
176+ myChangeWindowMessageFilter(WM_APP + 120, MSGFLT_ADD); // WM_APP_NotifyThreadDetach
177+ //ChangeWindowMessageFilter(WM_APP + 121, MSGFLT_ADD); // WM_APP_NotifySync not use.
178+ myChangeWindowMessageFilter(WM_APP + 122, MSGFLT_ADD); // WM_APP_NotifyLockState
179+ myChangeWindowMessageFilter(WM_APP + 123, MSGFLT_ADD); // WM_APP_NotifyTSF
180+ myChangeWindowMessageFilter(WM_APP + 124, MSGFLT_ADD); // WM_APP_escapeNLSKeysFailed
181+ myChangeWindowMessageFilter(WM_APP + 201, MSGFLT_ADD); // for Touchpad
182+ myChangeWindowMessageFilter(WM_APP + 202, MSGFLT_ADD); // for gamepad
183+ myChangeWindowMessageFilter(WM_APP + 203, MSGFLT_ADD); // for mouse
184+ myChangeWindowMessageFilter(WM_NODOKA_MESSAGE, MSGFLT_ADD); // for Touchpad
185+ myChangeWindowMessageFilter(WM_CREATE, MSGFLT_ADD); //
186+ myChangeWindowMessageFilter(WM_DESTROY, MSGFLT_ADD); //
187+ myChangeWindowMessageFilter(WM_MOVE, MSGFLT_ADD); //
188+ myChangeWindowMessageFilter(WM_SIZE, MSGFLT_ADD); //
189+ myChangeWindowMessageFilter(WM_ACTIVATE, MSGFLT_ADD); //
190+ myChangeWindowMessageFilter(WM_SETFOCUS, MSGFLT_ADD); //
191+ myChangeWindowMessageFilter(WM_KILLFOCUS, MSGFLT_ADD); //
192+ myChangeWindowMessageFilter(WM_PAINT, MSGFLT_ADD); //
193+ myChangeWindowMessageFilter(WM_CLOSE, MSGFLT_ADD); //
194+ myChangeWindowMessageFilter(WM_QUERYENDSESSION, MSGFLT_ADD); //
195+ myChangeWindowMessageFilter(WM_ACTIVATEAPP, MSGFLT_ADD); //
196+ myChangeWindowMessageFilter(WM_MOUSEACTIVATE, MSGFLT_ADD); //
197+ myChangeWindowMessageFilter(WM_COPYDATA, MSGFLT_ADD); //
198+ myChangeWindowMessageFilter(WM_NOTIFY, MSGFLT_ADD); //
199+ myChangeWindowMessageFilter(WM_SETICON, MSGFLT_ADD); //
200+ myChangeWindowMessageFilter(WM_NCDESTROY, MSGFLT_ADD); //
201+ myChangeWindowMessageFilter(WM_NCHITTEST, MSGFLT_ADD); //
202+ myChangeWindowMessageFilter(WM_NCACTIVATE, MSGFLT_ADD); //
203+ myChangeWindowMessageFilter(WM_GETDLGCODE, MSGFLT_ADD); //
204+ myChangeWindowMessageFilter(WM_INPUT, MSGFLT_ADD); //
205+ myChangeWindowMessageFilter(WM_INPUT_DEVICE_CHANGE, MSGFLT_ADD); //
206+ myChangeWindowMessageFilter(WM_KEYDOWN, MSGFLT_ADD); //
207+ myChangeWindowMessageFilter(WM_KEYUP, MSGFLT_ADD); //
208+ myChangeWindowMessageFilter(WM_CHAR, MSGFLT_ADD); //
209+ myChangeWindowMessageFilter(WM_DEADCHAR, MSGFLT_ADD); //
210+ myChangeWindowMessageFilter(WM_SYSKEYDOWN, MSGFLT_ADD); //
211+ myChangeWindowMessageFilter(WM_SYSKEYUP, MSGFLT_ADD); //
212+ myChangeWindowMessageFilter(WM_IME_STARTCOMPOSITION , MSGFLT_ADD); //
213+ myChangeWindowMessageFilter(WM_IME_ENDCOMPOSITION, MSGFLT_ADD); //
214+ myChangeWindowMessageFilter(WM_INITDIALOG, MSGFLT_ADD); //
215+ myChangeWindowMessageFilter(WM_COMMAND, MSGFLT_ADD); //
216+ myChangeWindowMessageFilter(WM_SYSCOMMAND, MSGFLT_ADD); //
217+ myChangeWindowMessageFilter(WM_TIMER, MSGFLT_ADD); //
218+ myChangeWindowMessageFilter(WM_MOUSEMOVE, MSGFLT_ADD); //
219+ myChangeWindowMessageFilter(WM_LBUTTONDOWN, MSGFLT_ADD); //
220+ myChangeWindowMessageFilter(WM_LBUTTONUP, MSGFLT_ADD); //
221+ myChangeWindowMessageFilter(WM_ENTERMENULOOP, MSGFLT_ADD); //
222+ myChangeWindowMessageFilter(WM_EXITMENULOOP, MSGFLT_ADD); //
223+ myChangeWindowMessageFilter(WM_SIZING, MSGFLT_ADD); //
224+ myChangeWindowMessageFilter(WM_IME_NOTIFY, MSGFLT_ADD); //
225+ myChangeWindowMessageFilter(WM_WTSSESSION_CHANGE, MSGFLT_ADD); //
226+ myChangeWindowMessageFilter(WM_LBUTTONDBLCLK, MSGFLT_ADD); //
227+ myChangeWindowMessageFilter(WM_MBUTTONDOWN, MSGFLT_ADD); //
199228 }
200229
201230 void DisableChangeWindowMessageFilter()
202231 {
203- //HMODULE dll = LoadLibrary(TEXT("user32.dll"));
204- FUNCTYPE ChangeWindowMessageFilter = (FUNCTYPE)GetProcAddress(LoadLibrary(TEXT("user32.dll")) , "ChangeWindowMessageFilter");
232+ UINT WM_NODOKA_MESSAGE = RegisterWindowMessage(addSessionId(WM_NODOKA_MESSAGE_NAME).c_str());
205233
206- if(ChangeWindowMessageFilter != NULL)
207- {
208- ChangeWindowMessageFilter(WM_APP + 101, MSGFLT_REMOVE); // WM_APP_taskTrayNotify
209- ChangeWindowMessageFilter(WM_APP + 102, MSGFLT_REMOVE); // WM_APP_msgStreamNotify
210- ChangeWindowMessageFilter(WM_APP + 103, MSGFLT_REMOVE); // WM_APP_notifyFocus
211- ChangeWindowMessageFilter(WM_APP + 104, MSGFLT_REMOVE); // WM_APP_notifyVKey
212- ChangeWindowMessageFilter(WM_APP + 105, MSGFLT_REMOVE); // WM_APP_targetNotify
213- ChangeWindowMessageFilter(WM_APP + 110, MSGFLT_REMOVE); // WM_APP_engineNotify
214- ChangeWindowMessageFilter(WM_APP + 115, MSGFLT_REMOVE); // WM_APP_dlglogNotify
215- ChangeWindowMessageFilter(WM_APP + 116, MSGFLT_REMOVE); // WM_APP_SendKey
216- ChangeWindowMessageFilter(WM_APP + 120, MSGFLT_REMOVE); // WM_APP_NotifyThreadDetach
217- //ChangeWindowMessageFilter(WM_APP + 121, MSGFLT_REMOVE); // WM_APP_NotifySync
218- ChangeWindowMessageFilter(WM_APP + 122, MSGFLT_REMOVE); // WM_APP_NotifyLockState
219- ChangeWindowMessageFilter(WM_APP + 123, MSGFLT_REMOVE); // WM_APP_NotifyTSF
220- ChangeWindowMessageFilter(WM_APP + 124, MSGFLT_REMOVE); // WM_APP_escapeNLSKeysFailed
221- ChangeWindowMessageFilter(WM_APP + 201, MSGFLT_REMOVE); // for Touchpad
222- ChangeWindowMessageFilter(WM_APP + 202, MSGFLT_REMOVE); // for gamepad
223- ChangeWindowMessageFilter(WM_APP + 203, MSGFLT_REMOVE); // for mouse
224-
225- UINT WM_NODOKA_MESSAGE = RegisterWindowMessage(addSessionId(WM_NODOKA_MESSAGE_NAME).c_str());
226-
227- ChangeWindowMessageFilter(WM_NODOKA_MESSAGE, MSGFLT_REMOVE); // for Touchpad
228- }
234+ myChangeWindowMessageFilter(WM_APP + 101, MSGFLT_REMOVE); // WM_APP_taskTrayNotify
235+ myChangeWindowMessageFilter(WM_APP + 102, MSGFLT_REMOVE); // WM_APP_msgStreamNotify
236+ myChangeWindowMessageFilter(WM_APP + 103, MSGFLT_REMOVE); // WM_APP_notifyFocus
237+ myChangeWindowMessageFilter(WM_APP + 104, MSGFLT_REMOVE); // WM_APP_notifyVKey
238+ myChangeWindowMessageFilter(WM_APP + 105, MSGFLT_REMOVE); // WM_APP_targetNotify
239+ myChangeWindowMessageFilter(WM_APP + 110, MSGFLT_REMOVE); // WM_APP_engineNotify
240+ myChangeWindowMessageFilter(WM_APP + 115, MSGFLT_REMOVE); // WM_APP_dlglogNotify
241+ myChangeWindowMessageFilter(WM_APP + 116, MSGFLT_REMOVE); // WM_APP_SendKey
242+ myChangeWindowMessageFilter(WM_APP + 120, MSGFLT_REMOVE); // WM_APP_NotifyThreadDetach
243+ //myChangeWindowMessageFilter(WM_APP + 121, MSGFLT_REMOVE); // WM_APP_NotifySync
244+ myChangeWindowMessageFilter(WM_APP + 122, MSGFLT_REMOVE); // WM_APP_NotifyLockState
245+ myChangeWindowMessageFilter(WM_APP + 123, MSGFLT_REMOVE); // WM_APP_NotifyTSF
246+ myChangeWindowMessageFilter(WM_APP + 124, MSGFLT_REMOVE); // WM_APP_escapeNLSKeysFailed
247+ myChangeWindowMessageFilter(WM_APP + 201, MSGFLT_REMOVE); // for Touchpad
248+ myChangeWindowMessageFilter(WM_APP + 202, MSGFLT_REMOVE); // for gamepad
249+ myChangeWindowMessageFilter(WM_APP + 203, MSGFLT_REMOVE); // for mouse
250+ myChangeWindowMessageFilter(WM_NODOKA_MESSAGE, MSGFLT_REMOVE); // for Touchpad
229251 }
230252
231253 // determine processor architecture
@@ -874,6 +896,8 @@
874896 static BYTE lpb[40];
875897 unsigned int result;
876898
899+ HMODULE dll = LoadLibrary(TEXT("user32.dll"));
900+ static FUNCTYPE4 myGetRawInputData = (FUNCTYPE4)GetProcAddress(dll, "GetRawInputData");
877901
878902 if((i_nCode == HC_ACTION) && (i_wParam & PM_REMOVE) && (myGetRawInputData != NULL))
879903 {
@@ -1196,13 +1220,13 @@
11961220 g.m_keyboardDetour = i_keyboardDetour;
11971221 g.m_engine = i_engine;
11981222 m_hHookKeyboardProc = SetWindowsHookEx(WH_GETMESSAGE, (HOOKPROC)getRawInput, g.m_hInstDLL, 0);
1199- DBG_PRINT(_T("install rawinput hook. %d"), m_hHookKeyboardProc);
1223+ //DBG_PRINT(_T("install rawinput hook. %d"), m_hHookKeyboardProc);
12001224 break;
12011225 case 1: // install LL Hook
12021226 g.m_keyboardDetour = i_keyboardDetour;
12031227 g.m_engine = i_engine;
12041228 m_hHookKeyboardProc = SetWindowsHookEx(WH_KEYBOARD_LL, (HOOKPROC)lowLevelKeyboardProc, g.m_hInstDLL, 0);
1205- DBG_PRINT(_T("install LL hook. %d"), m_hHookKeyboardProc);
1229+ //DBG_PRINT(_T("install LL hook. %d"), m_hHookKeyboardProc);
12061230 break;
12071231 case 0: // uninstall LL Hook
12081232 if (m_hHookKeyboardProc)
--- nodoka/trunk/nodoka/nodoka/misc.h (revision 231)
+++ nodoka/trunk/nodoka/nodoka/misc.h (revision 232)
@@ -12,9 +12,9 @@
1212 #ifndef RETAIL
1313 # define SAMPLE_REL
1414 # define SAMPLE_TIME 30 // min.
15-# define VERSION "4.28_sample"
15+# define VERSION "4.29_sample"
1616 #else
17-# define VERSION "4.28"
17+# define VERSION "4.29"
1818 #endif
1919
2020 #define YAMY_SUCCESS 0
--- nodoka/trunk/nodoka/nodoka/nodoka.cpp (revision 231)
+++ nodoka/trunk/nodoka/nodoka/nodoka.cpp (revision 232)
@@ -56,7 +56,7 @@
5656 #endif
5757
5858 void convertRegistry(void);
59-void SetChangeWindowMessageFilter(void);
59+void SetChangeWindowMessageFilter(HWND m_hwndTaskTray);
6060
6161 /// map hook data
6262 bool mapHookData(void);
@@ -82,9 +82,9 @@
8282 class Nodoka
8383 {
8484 HWND m_hwndTaskTray; /// tasktray window
85- HWND m_hwndLog; /// log dialog
86- HWND m_hwndInvestigate; /// investigate dialog
87- HWND m_hwndVersion; /// version dialog
85+ HWND m_hwndLog; /// log dialog
86+ HWND m_hwndInvestigate; /// investigate dialog
87+ HWND m_hwndVersion; /// version dialog
8888
8989 UINT m_WM_TaskbarRestart; /** window message sent when
9090 taskber restarts */
@@ -92,12 +92,11 @@
9292 other applications */
9393 NOTIFYICONDATA m_ni; /// taskbar icon data
9494 HICON m_tasktrayIcon[16]; /// taskbar icon
95- bool m_canUseTasktrayBaloon; ///
95+ bool m_canUseTasktrayBaloon; ///
9696
97- tomsgstream m_log; /** log stream (output to log
98- dialog's edit) */
97+ tomsgstream m_log; /** log stream (output to log dialog's edit) */
9998
100- HMENU m_hMenuTaskTray; /// tasktray menu
99+ HMENU m_hMenuTaskTray; /// tasktray menu
101100
102101 static const DWORD SESSION_LOCKED = 1<<0;
103102 static const DWORD SESSION_DISCONNECTED = 1<<1;
@@ -106,13 +105,13 @@
106105 int m_escapeNlsKeys;
107106 FixScancodeMap m_fixScancodeMap;
108107
109- Setting *m_setting; /// current setting
110- bool m_isSettingDialogOpened; /// is setting dialog opened ?
108+ Setting *m_setting; /// current setting
109+ bool m_isSettingDialogOpened; /// is setting dialog opened ?
111110
112- Engine m_engine; /// engine
111+ Engine m_engine; /// engine
113112
114- bool m_usingSN; /// using WTSRegisterSessionNotification() ?
115- time_t m_startTime; /// nodoka started at ...
113+ bool m_usingSN; /// using WTSRegisterSessionNotification() ?
114+ time_t m_startTime; /// nodoka started at ...
116115
117116 enum {
118117 YAMY_TIMER_ESCAPE_NLS_KEYS = 0, ///
@@ -867,7 +866,7 @@
867866
868867 case WM_TIMER:
869868 {
870-#ifdef SAMPLE_REL
869+#ifdef SAMPLE_REL_428
871870 tstring text = loadString(IDS_nodokaSeeYou);
872871 tstring title = loadString(IDS_nodoka);
873872 PostMessage(i_hwnd, WM_CLOSE, 0, 0);
@@ -1222,8 +1221,52 @@
12221221 NULL, NULL, g_hInst, this);
12231222 CHECK_TRUE( m_hwndTaskTray );
12241223
1224+ HWND tmpNodokaTasktray = m_hwndTaskTray;
1225+ int tmp_count = 0;
1226+
1227+ while(tmpNodokaTasktray != FindWindow(L"nodokaTasktray", NULL))
1228+ {
1229+ Sleep(100);
1230+ tmp_count++;
1231+ DBG_PRINT((L"tmp_count = %d"), tmp_count);
1232+
1233+ if(tmp_count > 50)
1234+ break;
1235+ }
1236+
12251237 g_hookDataExe->m_hwndTaskTray = (DWORD)m_hwndTaskTray;
12261238
1239+ // Set ChangeWindowMessageFilter
1240+ // manifestや署名により のどかよりも高い権限にメッセージを送れるため、フィルタの変更は本来不要だがフィルタの変更は実施する。
1241+ // なお7以降では、SetChangeWindowMessageFilterEx()を使って、送り先のウィンドウハンドルが必要となる。
1242+
1243+ if(m_hwndTaskTray != NULL)
1244+ SetChangeWindowMessageFilter(m_hwndTaskTray);
1245+
1246+ // hook and set window handle of tasktray
1247+ CHECK_FALSE( installHooks() );
1248+
1249+ // load sirius_hook dll
1250+#ifdef _WIN64
1251+ hMsctf = LoadLibraryA("sirius_hook_for_nodoka_x64.dll");
1252+#else
1253+ hMsctf = LoadLibraryA("sirius_hook_for_nodoka_x86.dll");
1254+#endif
1255+ mySiriusSetupHook = (SiriusSetupHookPtr)GetProcAddress(hMsctf, "SiriusSetupHook");
1256+ mySiriusReleaseHook = (SiriusReleaseHookPtr)GetProcAddress(hMsctf, "SiriusReleaseHook");
1257+
1258+ DWORD wm_sirius_control = RegisterWindowMessage(L"WM_SIRIUS_CONTROL");
1259+ g_hookDataExe->pCv = NULL;
1260+ if(mySiriusSetupHook != NULL)
1261+ {
1262+ g_hookDataExe->pCv = mySiriusSetupHook(wm_sirius_control);
1263+ }
1264+
1265+#ifdef _WIN64
1266+ // load x86 heler&dll, installHooks()
1267+ run_nodoka_x86();
1268+#endif
1269+
12271270 // change dir
12281271 HomeDirectories pathes;
12291272 getHomeDirectories(&pathes);
@@ -1320,12 +1363,11 @@
13201363 ASSERT(m_hMenuTaskTray);
13211364
13221365 // set pause mode
1323- HWND tmp_hWnd = FindWindow(L"nodokaTasktray", NULL);
13241366 if (iPause == 1)
1325- PostMessage(tmp_hWnd, WM_COMMAND, MAKELONG(ID_MENUITEM_disable, 0), 0);
1367+ PostMessage(m_hwndTaskTray, WM_COMMAND, MAKELONG(ID_MENUITEM_disable, 0), 0);
13261368 // set log mode
13271369 if (iLog == 1)
1328- PostMessage(tmp_hWnd, WM_COMMAND, MAKELONG(ID_MENUITEM_log, 0), 0);
1370+ PostMessage(m_hwndTaskTray, WM_COMMAND, MAKELONG(ID_MENUITEM_log, 0), 0);
13291371 // set 詳細Log mode
13301372 if (iDLog == 1){
13311373 SendMessage(GetDlgItem(m_hwndLog, IDC_CHECK_detail), BM_SETCHECK, BST_CHECKED, 0);
@@ -1339,19 +1381,28 @@
13391381 }
13401382
13411383 ///
1384+
13421385 ~Nodoka()
13431386 {
13441387 // first, detach log from edit control to avoid deadlock
13451388 m_log.detach();
13461389
1347-//#ifdef _WIN64
1348-// // unload x86 heler&dll, uninstallHoooks()
1349-// exit_nodoka_x86();
1350-//#endif
1351-//
1352-// // stop hook for notify from nodoka.dll
1353-// CHECK_FALSE( uninstallHooks() );
1390+#ifdef _WIN64
1391+ // unload x86 heler&dll, uninstallHoooks()
1392+ exit_nodoka_x86();
1393+#endif
13541394
1395+ // unload Sirius
1396+ if(g_hookDataExe->pCv != NULL)
1397+ g_hookDataExe->pCv = NULL;
1398+ if(mySiriusReleaseHook != NULL)
1399+ mySiriusReleaseHook();
1400+ if(hMsctf != NULL)
1401+ FreeLibrary(hMsctf);
1402+
1403+ // stop hook for notify from nodoka.dll
1404+ CHECK_FALSE( uninstallHooks() );
1405+
13551406 #ifdef SAMPLE_REL
13561407 KillTimer(m_hwndTaskTray, 1);
13571408 #endif
@@ -1535,82 +1586,105 @@
15351586 }
15361587 #endif
15371588
1538-// Set ChangeWindowMessageFilter
1539-void SetChangeWindowMessageFilter()
1589+// ChangeWindowMessageFilter helper
1590+void myChangeWindowMessageFilter(HWND m_hwndTaskTray, UINT message, DWORD flag)
15401591 {
1541- //HMODULE dll = LoadLibrary(TEXT("user32.dll"));
1542- FUNCTYPE ChangeWindowMessageFilter = (FUNCTYPE)GetProcAddress(LoadLibrary(TEXT("user32.dll")) , "ChangeWindowMessageFilter");
1592+ HMODULE dll = LoadLibrary(TEXT("user32.dll"));
1593+ static FUNCTYPE ChangeWindowMessageFilter = (FUNCTYPE)GetProcAddress(dll, "ChangeWindowMessageFilter");
1594+ static FUNCTYPE7 ChangeWindowMessageFilterEx = (FUNCTYPE7)GetProcAddress(dll, "ChangeWindowMessageFilterEx");
15431595
1544- if(ChangeWindowMessageFilter != NULL)
1545- {
1546- BOOL bFlag = ChangeWindowMessageFilter(WM_APP + 101, MSGFLT_ADD); // WM_APP_taskTrayNotify
1596+ DWORD flag7 = MSGFLT_RESET;
15471597
1548- ChangeWindowMessageFilter(WM_APP + 102, MSGFLT_ADD); // WM_APP_msgStreamNotify
1549- ChangeWindowMessageFilter(WM_APP + 103, MSGFLT_ADD); // WM_APP_notifyFocus
1550- ChangeWindowMessageFilter(WM_APP + 104, MSGFLT_ADD); // WM_APP_notifyVKey
1551- ChangeWindowMessageFilter(WM_APP + 105, MSGFLT_ADD); // WM_APP_targetNotify
1552- ChangeWindowMessageFilter(WM_APP + 110, MSGFLT_ADD); // WM_APP_engineNotify
1553- ChangeWindowMessageFilter(WM_APP + 115, MSGFLT_ADD); // WM_APP_dlglogNotify
1554- ChangeWindowMessageFilter(WM_APP + 116, MSGFLT_ADD); // WM_APP_SendKey
1555- ChangeWindowMessageFilter(WM_APP + 120, MSGFLT_ADD); // WM_APP_NotifyThreadDetach
1556- //ChangeWindowMessageFilter(WM_APP + 121, MSGFLT_ADD); // WM_APP_NotifySync
1557- ChangeWindowMessageFilter(WM_APP + 122, MSGFLT_ADD); // WM_APP_NotifyLockState
1558- ChangeWindowMessageFilter(WM_APP + 123, MSGFLT_ADD); // WM_APP_NotifyTSF
1559- ChangeWindowMessageFilter(WM_APP + 124, MSGFLT_ADD); // WM_APP_escapeNLSKeysFailed
1560- ChangeWindowMessageFilter(WM_APP + 201, MSGFLT_ADD); // for Touchpad
1561- ChangeWindowMessageFilter(WM_APP + 202, MSGFLT_ADD); // for gamepad
1562- ChangeWindowMessageFilter(WM_APP + 203, MSGFLT_ADD); // for mouse
1598+ if(flag == MSGFLT_ADD)
1599+ {
1600+ flag7 = MSGFLT_ALLOW;
1601+ }
1602+ else if(flag == MSGFLT_REMOVE)
1603+ {
1604+ flag7 = MSGFLT_RESET;
1605+ }
15631606
1564- UINT WM_NODOKA_MESSAGE = RegisterWindowMessage(addSessionId(WM_NODOKA_MESSAGE_NAME).c_str());
1607+ if(ChangeWindowMessageFilterEx != NULL) // 7 or later
1608+ {
1609+ ChangeWindowMessageFilterEx(m_hwndTaskTray, message, flag7, 0);
1610+ }
1611+ else if(ChangeWindowMessageFilter != NULL) // Vista
1612+ {
1613+ ChangeWindowMessageFilter(message, flag);
1614+ }
1615+}
15651616
1566- ChangeWindowMessageFilter(WM_NODOKA_MESSAGE, MSGFLT_ADD); // for Touchpad
1617+/// SetChangeWindowMessageFilter()
1618+void SetChangeWindowMessageFilter(HWND m_hwndTaskTray)
1619+{
1620+ UINT WM_NODOKA_MESSAGE = RegisterWindowMessage(addSessionId(WM_NODOKA_MESSAGE_NAME).c_str());
15671621
1568- ChangeWindowMessageFilter(WM_CREATE, MSGFLT_ADD); //
1569- ChangeWindowMessageFilter(WM_DESTROY, MSGFLT_ADD); //
1570- ChangeWindowMessageFilter(WM_MOVE, MSGFLT_ADD); //
1571- ChangeWindowMessageFilter(WM_SIZE, MSGFLT_ADD); //
1572- ChangeWindowMessageFilter(WM_ACTIVATE, MSGFLT_ADD); //
1573- ChangeWindowMessageFilter(WM_SETFOCUS, MSGFLT_ADD); //
1574- ChangeWindowMessageFilter(WM_KILLFOCUS, MSGFLT_ADD); //
1575- ChangeWindowMessageFilter(WM_PAINT, MSGFLT_ADD); //
1576- ChangeWindowMessageFilter(WM_CLOSE, MSGFLT_ADD); //
1577- ChangeWindowMessageFilter(WM_QUERYENDSESSION, MSGFLT_ADD); //
1578- ChangeWindowMessageFilter(WM_ACTIVATEAPP, MSGFLT_ADD); //
1579- ChangeWindowMessageFilter(WM_MOUSEACTIVATE, MSGFLT_ADD); //
1580- ChangeWindowMessageFilter(WM_COPYDATA, MSGFLT_ADD); //
1581- ChangeWindowMessageFilter(WM_NOTIFY, MSGFLT_ADD); //
1582- ChangeWindowMessageFilter(WM_SETICON, MSGFLT_ADD); //
1583- ChangeWindowMessageFilter(WM_NCDESTROY, MSGFLT_ADD); //
1584- ChangeWindowMessageFilter(WM_NCHITTEST, MSGFLT_ADD); //
1585- ChangeWindowMessageFilter(WM_NCACTIVATE, MSGFLT_ADD); //
1586- ChangeWindowMessageFilter(WM_GETDLGCODE, MSGFLT_ADD); //
1587- ChangeWindowMessageFilter(WM_INPUT, MSGFLT_ADD); //
1588- ChangeWindowMessageFilter(WM_INPUT_DEVICE_CHANGE, MSGFLT_ADD); //
1589- ChangeWindowMessageFilter(WM_KEYDOWN, MSGFLT_ADD); //
1590- ChangeWindowMessageFilter(WM_KEYUP, MSGFLT_ADD); //
1591- ChangeWindowMessageFilter(WM_CHAR, MSGFLT_ADD); //
1592- ChangeWindowMessageFilter(WM_DEADCHAR, MSGFLT_ADD); //
1593- ChangeWindowMessageFilter(WM_SYSKEYDOWN, MSGFLT_ADD); //
1594- ChangeWindowMessageFilter(WM_SYSKEYUP, MSGFLT_ADD); //
1595- ChangeWindowMessageFilter(WM_IME_STARTCOMPOSITION , MSGFLT_ADD); //
1596- ChangeWindowMessageFilter(WM_IME_ENDCOMPOSITION, MSGFLT_ADD); //
1597- ChangeWindowMessageFilter(WM_INITDIALOG, MSGFLT_ADD); //
1598- ChangeWindowMessageFilter(WM_COMMAND, MSGFLT_ADD); //
1599- ChangeWindowMessageFilter(WM_SYSCOMMAND, MSGFLT_ADD); //
1600- ChangeWindowMessageFilter(WM_TIMER, MSGFLT_ADD); //
1601- ChangeWindowMessageFilter(WM_MOUSEMOVE, MSGFLT_ADD); //
1602- ChangeWindowMessageFilter(WM_LBUTTONDOWN, MSGFLT_ADD); //
1603- ChangeWindowMessageFilter(WM_LBUTTONUP, MSGFLT_ADD); //
1604- ChangeWindowMessageFilter(WM_ENTERMENULOOP, MSGFLT_ADD); //
1605- ChangeWindowMessageFilter(WM_EXITMENULOOP, MSGFLT_ADD); //
1606- ChangeWindowMessageFilter(WM_SIZING, MSGFLT_ADD); //
1607- ChangeWindowMessageFilter(WM_IME_NOTIFY, MSGFLT_ADD); //
1608- ChangeWindowMessageFilter(WM_WTSSESSION_CHANGE, MSGFLT_ADD); //
1609- ChangeWindowMessageFilter(WM_LBUTTONDBLCLK, MSGFLT_ADD); //
1610- ChangeWindowMessageFilter(WM_MBUTTONDOWN, MSGFLT_ADD); //
1611- }
1622+ if(m_hwndTaskTray != NULL)
1623+ {
1624+ myChangeWindowMessageFilter(m_hwndTaskTray, WM_APP + 101, MSGFLT_ADD); // WM_APP_taskTrayNotify
1625+ myChangeWindowMessageFilter(m_hwndTaskTray, WM_APP + 102, MSGFLT_ADD); // WM_APP_msgStreamNotify
1626+ myChangeWindowMessageFilter(m_hwndTaskTray, WM_APP + 103, MSGFLT_ADD); // WM_APP_notifyFocus
1627+ myChangeWindowMessageFilter(m_hwndTaskTray, WM_APP + 104, MSGFLT_ADD); // WM_APP_notifyVKey
1628+ myChangeWindowMessageFilter(m_hwndTaskTray, WM_APP + 105, MSGFLT_ADD); // WM_APP_targetNotify
1629+ myChangeWindowMessageFilter(m_hwndTaskTray, WM_APP + 110, MSGFLT_ADD); // WM_APP_engineNotify
1630+ myChangeWindowMessageFilter(m_hwndTaskTray, WM_APP + 115, MSGFLT_ADD); // WM_APP_dlglogNotify
1631+ myChangeWindowMessageFilter(m_hwndTaskTray, WM_APP + 116, MSGFLT_ADD); // WM_APP_SendKey
1632+ myChangeWindowMessageFilter(m_hwndTaskTray, WM_APP + 120, MSGFLT_ADD); // WM_APP_NotifyThreadDetach
1633+ //ChangeWindowMessageFilter(m_hwndTaskTray, WM_APP + 121, MSGFLT_ADD); // WM_APP_NotifySync not use.
1634+ myChangeWindowMessageFilter(m_hwndTaskTray, WM_APP + 122, MSGFLT_ADD); // WM_APP_NotifyLockState
1635+ myChangeWindowMessageFilter(m_hwndTaskTray, WM_APP + 123, MSGFLT_ADD); // WM_APP_NotifyTSF
1636+ myChangeWindowMessageFilter(m_hwndTaskTray, WM_APP + 124, MSGFLT_ADD); // WM_APP_escapeNLSKeysFailed
1637+ myChangeWindowMessageFilter(m_hwndTaskTray, WM_APP + 201, MSGFLT_ADD); // for Touchpad
1638+ myChangeWindowMessageFilter(m_hwndTaskTray, WM_APP + 202, MSGFLT_ADD); // for gamepad
1639+ myChangeWindowMessageFilter(m_hwndTaskTray, WM_APP + 203, MSGFLT_ADD); // for mouse
1640+ myChangeWindowMessageFilter(m_hwndTaskTray, WM_NODOKA_MESSAGE, MSGFLT_ADD); // for Touchpad
1641+ myChangeWindowMessageFilter(m_hwndTaskTray, WM_CREATE, MSGFLT_ADD); //
1642+ myChangeWindowMessageFilter(m_hwndTaskTray, WM_DESTROY, MSGFLT_ADD); //
1643+ myChangeWindowMessageFilter(m_hwndTaskTray, WM_MOVE, MSGFLT_ADD); //
1644+ myChangeWindowMessageFilter(m_hwndTaskTray, WM_SIZE, MSGFLT_ADD); //
1645+ myChangeWindowMessageFilter(m_hwndTaskTray, WM_ACTIVATE, MSGFLT_ADD); //
1646+ myChangeWindowMessageFilter(m_hwndTaskTray, WM_SETFOCUS, MSGFLT_ADD); //
1647+ myChangeWindowMessageFilter(m_hwndTaskTray, WM_KILLFOCUS, MSGFLT_ADD); //
1648+ myChangeWindowMessageFilter(m_hwndTaskTray, WM_PAINT, MSGFLT_ADD); //
1649+ myChangeWindowMessageFilter(m_hwndTaskTray, WM_CLOSE, MSGFLT_ADD); //
1650+ myChangeWindowMessageFilter(m_hwndTaskTray, WM_QUERYENDSESSION, MSGFLT_ADD); //
1651+ myChangeWindowMessageFilter(m_hwndTaskTray, WM_ACTIVATEAPP, MSGFLT_ADD); //
1652+ myChangeWindowMessageFilter(m_hwndTaskTray, WM_MOUSEACTIVATE, MSGFLT_ADD); //
1653+ myChangeWindowMessageFilter(m_hwndTaskTray, WM_COPYDATA, MSGFLT_ADD); //
1654+ myChangeWindowMessageFilter(m_hwndTaskTray, WM_NOTIFY, MSGFLT_ADD); //
1655+ myChangeWindowMessageFilter(m_hwndTaskTray, WM_SETICON, MSGFLT_ADD); //
1656+ myChangeWindowMessageFilter(m_hwndTaskTray, WM_NCDESTROY, MSGFLT_ADD); //
1657+ myChangeWindowMessageFilter(m_hwndTaskTray, WM_NCHITTEST, MSGFLT_ADD); //
1658+ myChangeWindowMessageFilter(m_hwndTaskTray, WM_NCACTIVATE, MSGFLT_ADD); //
1659+ myChangeWindowMessageFilter(m_hwndTaskTray, WM_GETDLGCODE, MSGFLT_ADD); //
1660+ myChangeWindowMessageFilter(m_hwndTaskTray, WM_INPUT, MSGFLT_ADD); //
1661+ myChangeWindowMessageFilter(m_hwndTaskTray, WM_INPUT_DEVICE_CHANGE, MSGFLT_ADD); //
1662+ myChangeWindowMessageFilter(m_hwndTaskTray, WM_KEYDOWN, MSGFLT_ADD); //
1663+ myChangeWindowMessageFilter(m_hwndTaskTray, WM_KEYUP, MSGFLT_ADD); //
1664+ myChangeWindowMessageFilter(m_hwndTaskTray, WM_CHAR, MSGFLT_ADD); //
1665+ myChangeWindowMessageFilter(m_hwndTaskTray, WM_DEADCHAR, MSGFLT_ADD); //
1666+ myChangeWindowMessageFilter(m_hwndTaskTray, WM_SYSKEYDOWN, MSGFLT_ADD); //
1667+ myChangeWindowMessageFilter(m_hwndTaskTray, WM_SYSKEYUP, MSGFLT_ADD); //
1668+ myChangeWindowMessageFilter(m_hwndTaskTray, WM_IME_STARTCOMPOSITION , MSGFLT_ADD); //
1669+ myChangeWindowMessageFilter(m_hwndTaskTray, WM_IME_ENDCOMPOSITION, MSGFLT_ADD); //
1670+ myChangeWindowMessageFilter(m_hwndTaskTray, WM_INITDIALOG, MSGFLT_ADD); //
1671+ myChangeWindowMessageFilter(m_hwndTaskTray, WM_COMMAND, MSGFLT_ADD); //
1672+ myChangeWindowMessageFilter(m_hwndTaskTray, WM_SYSCOMMAND, MSGFLT_ADD); //
1673+ myChangeWindowMessageFilter(m_hwndTaskTray, WM_TIMER, MSGFLT_ADD); //
1674+ myChangeWindowMessageFilter(m_hwndTaskTray, WM_MOUSEMOVE, MSGFLT_ADD); //
1675+ myChangeWindowMessageFilter(m_hwndTaskTray, WM_LBUTTONDOWN, MSGFLT_ADD); //
1676+ myChangeWindowMessageFilter(m_hwndTaskTray, WM_LBUTTONUP, MSGFLT_ADD); //
1677+ myChangeWindowMessageFilter(m_hwndTaskTray, WM_ENTERMENULOOP, MSGFLT_ADD); //
1678+ myChangeWindowMessageFilter(m_hwndTaskTray, WM_EXITMENULOOP, MSGFLT_ADD); //
1679+ myChangeWindowMessageFilter(m_hwndTaskTray, WM_SIZING, MSGFLT_ADD); //
1680+ myChangeWindowMessageFilter(m_hwndTaskTray, WM_IME_NOTIFY, MSGFLT_ADD); //
1681+ myChangeWindowMessageFilter(m_hwndTaskTray, WM_WTSSESSION_CHANGE, MSGFLT_ADD); //
1682+ myChangeWindowMessageFilter(m_hwndTaskTray, WM_LBUTTONDBLCLK, MSGFLT_ADD); //
1683+ myChangeWindowMessageFilter(m_hwndTaskTray, WM_MBUTTONDOWN, MSGFLT_ADD); //
1684+ }
16121685 }
16131686
1687+
16141688 // 整合性レベルを設定する
16151689 bool SetIntgritylevel(int i_intGritylevel)
16161690 {
@@ -1985,41 +2059,12 @@
19852059 SetIntgritylevel(i_intGritylevel);
19862060 }
19872061
1988-
1989- // Set ChangeWindowMessageFilter
1990- SetChangeWindowMessageFilter();
1991-
1992- //
19932062 if(!mapHookData())
19942063 MessageBox((HWND)NULL, L"Can not mapHookData!", L"Nodoka", MB_OK | MB_ICONSTOP);
19952064
1996- // hook and set window handle of tasktray
1997- CHECK_FALSE( installHooks() );
1998-
1999- // load sirius_hook dll
2000-#ifdef _WIN64
2001- hMsctf = LoadLibraryA("sirius_hook_for_nodoka_x64.dll");
2002-#else
2003- hMsctf = LoadLibraryA("sirius_hook_for_nodoka_x86.dll");
2004-#endif
2005- mySiriusSetupHook = (SiriusSetupHookPtr)GetProcAddress(hMsctf, "SiriusSetupHook");
2006- mySiriusReleaseHook = (SiriusReleaseHookPtr)GetProcAddress(hMsctf, "SiriusReleaseHook");
2007-
2008- DWORD wm_sirius_control = RegisterWindowMessage(L"WM_SIRIUS_CONTROL");
2009- g_hookDataExe->pCv = NULL;
2010- if(mySiriusSetupHook != NULL)
2011- {
2012- g_hookDataExe->pCv = mySiriusSetupHook(wm_sirius_control);
2013- }
2014-
20152065 // set RDP flag
20162066 g_hookDataExe->m_RDP = m_RDP;
20172067
2018-#ifdef _WIN64
2019- // load x86 heler&dll, installHooks()
2020- run_nodoka_x86();
2021-#endif
2022-
20232068 try
20242069 {
20252070 Nodoka(icon_color, keyboard_hook, mouse_hook, iPause, iLog, iDLog, i_escapeNlsKeys, i_win8wa).messageLoop();
@@ -2030,23 +2075,6 @@
20302075 MessageBox((HWND)NULL, i_e.getMessage().c_str(), title.c_str(), MB_OK | MB_ICONSTOP);
20312076 }
20322077
2033-#ifdef _WIN64
2034- // unload x86 heler&dll, uninstallHoooks()
2035- exit_nodoka_x86();
2036-#endif
2037-
2038- // unload Sirius
2039- if(g_hookDataExe->pCv != NULL)
2040- g_hookDataExe->pCv = NULL;
2041- if(mySiriusReleaseHook != NULL)
2042- mySiriusReleaseHook();
2043- if(hMsctf != NULL)
2044- FreeLibrary(hMsctf);
2045-
2046- // stop hook for notify from nodoka.dll
2047- CHECK_FALSE( uninstallHooks() );
2048-
2049-
20502078 DWORD_PTR dwResult;
20512079 SendMessageTimeout(HWND_BROADCAST, WM_NULL, 0, 0, SMTO_ABORTIFHUNG, 5000, &dwResult);
20522080
--- nodoka/trunk/nodoka/nodoka/nodoka.manifest (revision 231)
+++ nodoka/trunk/nodoka/nodoka/nodoka.manifest (revision 232)
@@ -3,7 +3,7 @@
33 <assemblyIdentity
44 type="win32"
55 name="nodoka"
6- version="4.2.8.0"
6+ version="4.2.9.0"
77 processorArchitecture="X86"
88 />
99 <description>nodoka</description>
@@ -24,9 +24,23 @@
2424 <requestedPrivileges>
2525 <requestedExecutionLevel
2626 level="asInvoker"
27- uiAccess="true">
27+ uiAccess="false">
2828 </requestedExecutionLevel>
2929 </requestedPrivileges>
3030 </security>
3131 </trustInfo>
32+ <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
33+ <application>
34+ <!-- Windows 10 -->
35+ <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
36+ <!-- Windows 8.1 -->
37+ <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
38+ <!-- Windows Vista -->
39+ <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
40+ <!-- Windows 7 -->
41+ <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
42+ <!-- Windows 8 -->
43+ <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
44+ </application>
45+ </compatibility>
3246 </assembly>
--- nodoka/trunk/nodoka/nodoka/engine.cpp (revision 231)
+++ nodoka/trunk/nodoka/nodoka/engine.cpp (revision 232)
@@ -372,6 +372,7 @@
372372 {
373373 if (i_key->getScanCodes()[i].m_flags & ScanCode::E0) m_log << _T("E0-");
374374 if (i_key->getScanCodes()[i].m_flags & ScanCode::E1) m_log << _T("E1-");
375+ if (i_key->getScanCodes()[i].m_flags & ScanCode::E0E1) m_log << _T("E0E1-");
375376 if (!(i_key->getScanCodes()[i].m_flags & ScanCode::E0E1)) m_log << _T(" ");
376377 m_log << _T("0x") << std::hex << std::setw(2) << std::setfill(_T('0'))
377378 << static_cast<int>(i_key->getScanCodes()[i].m_scan)
@@ -2258,7 +2259,7 @@
22582259 // キーコードがチェック対象の場合
22592260 if(current_data.kid.MakeCode == checkkey[loop_i])
22602261 {
2261- DBG_PRINT(_T(" get #%d as %d key"), loop_i, checkkey[loop_i]);
2262+ //DBG_PRINT(_T(" get #%d as %d key"), loop_i, checkkey[loop_i]);
22622263 // 初めてDown(make)されたら、フラグを立てる。
22632264 // checkkey_state as 0: none, 1: 1回down, 2: up: state 1のときに、upが来た場合
22642265
@@ -2266,7 +2267,7 @@
22662267 {
22672268 // 初めてキーダウンが来た
22682269 checkkey_state[loop_i] = 1;
2269- DBG_PRINT(_T(" down\n"));
2270+ //DBG_PRINT(_T(" down\n"));
22702271 }
22712272 else
22722273 {
@@ -2274,7 +2275,7 @@
22742275 {
22752276 // キーダウンした後で、キーアップした。
22762277 checkkey_state[loop_i] = 2;
2277- DBG_PRINT(_T(" up\n"));
2278+ //DBG_PRINT(_T(" up\n"));
22782279 }
22792280 }
22802281 }
@@ -2315,7 +2316,7 @@
23152316 }
23162317
23172318 // 0か2の状態のキーしか存在しない。
2318- DBG_PRINT(_T(" detect all key up\n" ));
2319+ //DBG_PRINT(_T(" detect all key up\n" ));
23192320
23202321 // stateの初期化
23212322 loop_i = 0;
@@ -2326,13 +2327,13 @@
23262327 }
23272328
23282329 // dummy key down
2329- DBG_PRINT(_T(" send dummy key down\n" ));
2330+ //DBG_PRINT(_T(" send dummy key down\n" ));
23302331 kid.MakeCode = 0x50; // dummy keyは E1-0x50
23312332 kid.Flags = KEYBOARD_INPUT_DATA::E1;
23322333 SendtoKeyboardHandler(1, kid.Flags, kid.MakeCode);
23332334
23342335 // dummy key up
2335- DBG_PRINT(_T(" send dummy key up\n" ));
2336+ //DBG_PRINT(_T(" send dummy key up\n" ));
23362337 kid.MakeCode = 0x50; // dummy keyは E1-0x50
23372338 kid.Flags |= KEYBOARD_INPUT_DATA::BREAK;
23382339 SendtoKeyboardHandler(1, kid.Flags, kid.MakeCode);
@@ -2531,11 +2532,12 @@
25312532 CloseServiceHandle(hscm);
25322533 }
25332534
2535+ /*
25342536 // open nodoka m_device
25352537 m_device = CreateFile(NODOKA_DEVICE_FILE_NAME, GENERIC_READ | GENERIC_WRITE,
25362538 0, NULL, OPEN_EXISTING,
25372539 FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, NULL);
2538-
2540+ */
25392541 return (m_device != INVALID_HANDLE_VALUE);
25402542 }
25412543
--- nodoka/trunk/nodoka/nodoka/hook.h (revision 231)
+++ nodoka/trunk/nodoka/nodoka/hook.h (revision 232)
@@ -42,13 +42,19 @@
4242 }
4343
4444 // for ChangeWindowMessageFilter
45-// Vistaオンリーにするなら vc.mak の APPVER 5.0から 6.0に変更して、下記を外して
46-// GetProcAddress(LoadLibrary(TEXT("user32.dll")を使わないことが出来る。
47-
4845 typedef BOOL (__stdcall *FUNCTYPE)(UINT, DWORD);
4946 #define MSGFLT_ADD 1
5047 #define MSGFLT_REMOVE 2
5148
49+typedef BOOL (__stdcall *FUNCTYPE7)(HWND, UINT, DWORD, int);
50+#define MSGFLT_RESET 0
51+#define MSGFLT_ALLOW 1
52+
53+
54+// for myGetRawInputData
55+typedef UINT (CALLBACK *FUNCTYPE4)(HANDLE, UINT, LPVOID, PUINT, UINT);
56+
57+// for Remote Desktop or change user
5258 #ifndef WM_WTSSESSION_CHANGE // WinUser.h
5359 # define WM_WTSSESSION_CHANGE 0x02B1
5460 #endif
--- nodoka/trunk/nodoka/exe.x64.hil/nodoka64_hil.manifest (revision 231)
+++ nodoka/trunk/nodoka/exe.x64.hil/nodoka64_hil.manifest (revision 232)
@@ -3,7 +3,7 @@
33 <assemblyIdentity
44 type="win32"
55 name="nodoka"
6- version="4.2.8.0"
6+ version="4.2.9.0"
77 processorArchitecture="amd64"
88 />
99 <description>nodoka</description>
@@ -29,4 +29,18 @@
2929 </requestedPrivileges>
3030 </security>
3131 </trustInfo>
32+ <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
33+ <application>
34+ <!-- Windows 10 -->
35+ <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
36+ <!-- Windows 8.1 -->
37+ <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
38+ <!-- Windows Vista -->
39+ <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
40+ <!-- Windows 7 -->
41+ <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
42+ <!-- Windows 8 -->
43+ <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
44+ </application>
45+ </compatibility>
3246 </assembly>
Show on old repository browser