マウスカーソルへIMEモードの表示
Révision | 302021f8d609c0e82e511ba72cb05e635fd4e901 (tree) |
---|---|
l'heure | 2023-08-24 14:20:26 |
Auteur | JeffyTS <jeffyts@outl...> |
Commiter | JeffyTS |
1.1.7.24
@@ -1,6 +1,6 @@ | ||
1 | 1 | // |
2 | 2 | // FlushMouse.cpp |
3 | -// for Windows10/11 Win32 API msi Packaage App. | |
3 | +// for Windows10/11 Win32 API msi Package App. | |
4 | 4 | // Copyright (C) 1993 JeffyTS |
5 | 5 | // |
6 | 6 | // FlushMouse.exe |
@@ -8,8 +8,8 @@ | ||
8 | 8 | // |
9 | 9 | // No. Date Name Reason & Document |
10 | 10 | // -------+-----------+-----------+-------------------------------------------- - |
11 | -// #0000 1993/11/17 JeffyTS New edit. | |
12 | -// #0001 2022/02/04 JeffyTS Visual Studio 2022 (C++)へ移植 | |
11 | +// #0000 1993/11/17 JeffyTS New edit. | |
12 | +// #0001 2022/02/04 JeffyTS Visual Studio 2022 (C++)へ移植 | |
13 | 13 | // |
14 | 14 | |
15 | 15 | // |
@@ -115,7 +115,8 @@ int APIENTRY wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance | ||
115 | 115 | if (Resource->hLoad() == NULL) { |
116 | 116 | return (-1); |
117 | 117 | } |
118 | - if (!bWinMain(hInstance, hPrevInstance)) return (-1); | |
118 | + | |
119 | + if (!bWinMain(hInstance, hPrevInstance, nCmdShow)) return (-1); | |
119 | 120 | |
120 | 121 | MSG msg{}; |
121 | 122 | while (GetMessage(&msg, NULL, 0, 0)) { |
@@ -153,7 +154,7 @@ BOOL bSetHeapInformation() | ||
153 | 154 | // |
154 | 155 | void vMessageBox(HWND hWnd, UINT uID, UINT uType) |
155 | 156 | { |
156 | - TCHAR lpText[MAX_LOADSTRING]; | |
157 | + TCHAR lpText[MAX_LOADSTRING]; | |
157 | 158 | try { |
158 | 159 | throw LoadString(Resource->hLoad(), uID, lpText, MAX_LOADSTRING); |
159 | 160 | } |
@@ -1,15 +1,15 @@ | ||
1 | 1 | <?xml version="1.0" encoding="UTF-8" standalone="yes"?> |
2 | 2 | <assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3"> |
3 | - <assemblyIdentity | |
4 | - type="win32" | |
5 | - name="FlushMouse.exe" | |
6 | - version="0.9.4.8" | |
7 | - processorArchitecture="amd64" | |
8 | - /> | |
9 | - <description>FlushMouse Application</description> | |
10 | - <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> | |
11 | - <application> | |
12 | - <!-- Windows 10 and Windows 11 --> | |
3 | + <assemblyIdentity | |
4 | + type="win32" | |
5 | + name="FlushMouse.exe" | |
6 | + version="0.9.4.8" | |
7 | + processorArchitecture="amd64" | |
8 | + /> | |
9 | + <description>FlushMouse Application</description> | |
10 | + <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> | |
11 | + <application> | |
12 | + <!-- Windows 10 and Windows 11 --> | |
13 | 13 | <maxversiontested Id="10.0.19041.0"/> |
14 | 14 | <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/> |
15 | 15 | <!-- DPI Awareness --> |
@@ -17,25 +17,18 @@ | ||
17 | 17 | <dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings"> |
18 | 18 | PerMonitorV2, PerMonitor |
19 | 19 | </dpiAwareness> |
20 | - <!-- GDI Scaling --> | |
20 | + <!-- GDI Scaling --> | |
21 | 21 | <gdiScaling>true</gdiScaling> |
22 | 22 | </application> |
23 | - </compatibility> | |
23 | + </compatibility> | |
24 | 24 | <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> |
25 | - <security> | |
25 | + <security> | |
26 | 26 | <requestedPrivileges> |
27 | 27 | <!-- UAC settings --> |
28 | 28 | <!--requestedExecutionLevel level="requireAdministrator" uiAccess="false"/--> |
29 | - <!--requestedExecutionLevel level="highestAvailable" uiAccess="false"/--> | |
29 | + <!--requestedExecutionLevel level="highestAvailable" uiAccess="true"/--> | |
30 | 30 | <requestedExecutionLevel level="asInvoker" uiAccess="false"/> |
31 | 31 | </requestedPrivileges> |
32 | - </security> | |
33 | - </trustInfo> | |
34 | - <!--file name="FlushMouseUI3.dll"> | |
35 | - <activatableClass | |
36 | - name="FlushMouseUI3.Class" | |
37 | - threadingModel="both" | |
38 | - xmlns="urn:schemas-microsoft-com:winrt.v1" /> | |
39 | - </file--> | |
40 | - | |
32 | + </security> | |
33 | + </trustInfo> | |
41 | 34 | </assembly> |
\ No newline at end of file |
@@ -24,8 +24,8 @@ | ||
24 | 24 | // |
25 | 25 | // Global Data |
26 | 26 | // |
27 | -extern TCHAR szFlushMouseDLL[]; | |
28 | -extern TCHAR szFlushMouse32[]; | |
27 | +extern TCHAR szFlushMouseDLL[]; | |
28 | +extern TCHAR szFlushMouse32[]; | |
29 | 29 | |
30 | 30 | |
31 | 31 | /* = EOF = */ |
\ No newline at end of file |
@@ -234,9 +234,6 @@ | ||
234 | 234 | </ProjectReference> |
235 | 235 | </ItemGroup> |
236 | 236 | <ItemGroup> |
237 | - <Manifest Include="FlushMouse.exe.manifest" /> | |
238 | - </ItemGroup> | |
239 | - <ItemGroup> | |
240 | 237 | <ResourceCompile Include="..\FlushMouseLIB\FlushMouse.rc" /> |
241 | 238 | </ItemGroup> |
242 | 239 | <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> |
@@ -45,9 +45,6 @@ | ||
45 | 45 | </Image> |
46 | 46 | </ItemGroup> |
47 | 47 | <ItemGroup> |
48 | - <Manifest Include="FlushMouse.exe.manifest" /> | |
49 | - </ItemGroup> | |
50 | - <ItemGroup> | |
51 | 48 | <ResourceCompile Include="..\FlushMouseLIB\FlushMouse.rc"> |
52 | 49 | <Filter>リソース ファイル</Filter> |
53 | 50 | </ResourceCompile> |
@@ -14,8 +14,8 @@ | ||
14 | 14 | #include "pch.h" |
15 | 15 | #include "FlushMouse32.h" |
16 | 16 | #include "Resource.h" |
17 | +#include "..\FlushMouseDLL32\MouseHookDLL32.h" | |
17 | 18 | #include "..\FlushMouseLIB\CommonDef.h" |
18 | -#include "..\FlushMouseDLL32\MouseHookDll32.h" | |
19 | 19 | #include "..\FlushMouseDLL\EventlogData.h" |
20 | 20 | |
21 | 21 | #ifdef _DEBUG |
@@ -111,7 +111,7 @@ int APIENTRY wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance | ||
111 | 111 | } |
112 | 112 | } |
113 | 113 | |
114 | - HWND hWnd = NULL; | |
114 | + HWND hWnd = NULL; | |
115 | 115 | if ((hWnd = FindWindow(CLASS_FLUSHMOUSE32, NULL)) != NULL) { |
116 | 116 | SetFocus(GetLastActivePopup(hWnd)); |
117 | 117 | PostMessage(hWnd, WM_DESTROY, NULL, NULL); |
@@ -149,22 +149,22 @@ int APIENTRY wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance | ||
149 | 149 | // |
150 | 150 | static ATOM MyRegisterClass(HINSTANCE hInstance) |
151 | 151 | { |
152 | -#define CLASSSTYLE CS_HREDRAW | CS_VREDRAW // クラススタイル | |
152 | +#define CLASSSTYLE CS_HREDRAW | CS_VREDRAW | |
153 | 153 | |
154 | 154 | WNDCLASSEX wcex{}; |
155 | 155 | |
156 | 156 | wcex.cbSize = sizeof(WNDCLASSEX); |
157 | - wcex.style = CLASSSTYLE; // クラススタイル | |
157 | + wcex.style = CLASSSTYLE; | |
158 | 158 | wcex.lpfnWndProc = WndProc; |
159 | - wcex.cbClsExtra = 0; // クラスの補足データなし | |
160 | - wcex.cbWndExtra = 0; // ウィンドウの補足データなし | |
161 | - wcex.hInstance = hInstance; // クラスのウィンドウハンドル | |
162 | - wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_FLUSHMOUSE32)); // アイコンハンドル | |
163 | - wcex.hCursor = LoadCursor(NULL, IDC_ARROW); // マウスカーソルハンドル | |
164 | - wcex.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); // ウィンドウ背景色 | |
165 | - wcex.lpszMenuName = MAKEINTRESOURCE(IDC_FLUSHMOUSE32); // デフォルトメニュー名 | |
166 | - wcex.lpszClassName = CLASS_FLUSHMOUSE32; // このウインドウクラスにつける名前 | |
167 | - wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL)); // 16×16の小さいサイズのアイコン | |
159 | + wcex.cbClsExtra = 0; | |
160 | + wcex.cbWndExtra = 0; | |
161 | + wcex.hInstance = hInstance; | |
162 | + wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_FLUSHMOUSE32)); | |
163 | + wcex.hCursor = LoadCursor(NULL, IDC_ARROW); | |
164 | + wcex.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); | |
165 | + wcex.lpszMenuName = MAKEINTRESOURCE(IDC_FLUSHMOUSE32); | |
166 | + wcex.lpszClassName = CLASS_FLUSHMOUSE32; | |
167 | + wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL)); | |
168 | 168 | |
169 | 169 | return RegisterClassEx(&wcex); |
170 | 170 | } |
@@ -175,22 +175,22 @@ static ATOM MyRegisterClass(HINSTANCE hInstance) | ||
175 | 175 | static BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) |
176 | 176 | { |
177 | 177 | UNREFERENCED_PARAMETER(nCmdShow); |
178 | -#define WINDOWSTYLE WS_OVERLAPPEDWINDOW | WS_HSCROLL | WS_VSCROLL // | WS_VISIBLE // WS_MINIMIZE | WS_SYSMENU | |
179 | - hInst = hInstance; // グローバル変数にインスタンス ハンドルを格納する | |
180 | - HWND hWnd = NULL; // メインウィンドウのハンドル | |
178 | +#define WINDOWSTYLE WS_OVERLAPPEDWINDOW | WS_HSCROLL | WS_VSCROLL | |
179 | + hInst = hInstance; | |
180 | + HWND hWnd = NULL; | |
181 | 181 | hWnd = CreateWindowEx( |
182 | - WS_DISABLED, // Disabled Window | |
183 | - CLASS_FLUSHMOUSE32, // RegisterClass()呼び出しを参照 | |
184 | - szTitle, // Title barのテキスト | |
185 | - WINDOWSTYLE, // Window style | |
186 | - 0, 0, // 水平・垂直位置 | |
187 | - 0, 0, // 幅・高さ | |
188 | - NULL, // 親オーバーラップウィンドウ | |
189 | - NULL, // ウィンドウクラスのメニューを使う | |
190 | - hInstance, // 所有インスタンス | |
191 | - NULL); // ポインタは不要 | |
182 | + WS_DISABLED, | |
183 | + CLASS_FLUSHMOUSE32, | |
184 | + szTitle, | |
185 | + WINDOWSTYLE, | |
186 | + 0, 0, | |
187 | + 0, 0, | |
188 | + NULL, | |
189 | + NULL, | |
190 | + hInstance, | |
191 | + NULL); | |
192 | 192 | if (!hWnd) { |
193 | - return FALSE; // ウィンドウを作成できなかったときはFALSEを返す | |
193 | + return FALSE; | |
194 | 194 | } |
195 | 195 | return TRUE; |
196 | 196 | } |
@@ -223,9 +223,9 @@ static BOOL Cls_OnCreate(HWND hWnd, LPCREATESTRUCT lpCreateStruct) | ||
223 | 223 | PostMessage(hWnd, WM_DESTROY, (WPARAM)NULL, (LPARAM)NULL); |
224 | 224 | return FALSE; |
225 | 225 | } |
226 | - BOOL bBool = FALSE; | |
226 | + | |
227 | + BOOL bBool = FALSE; | |
227 | 228 | if (SetUserObjectInformation(GetCurrentProcess(), UOI_TIMERPROC_EXCEPTION_SUPPRESSION, &bBool, sizeof(BOOL)) != FALSE) { |
228 | - // Set Timer for Proc | |
229 | 229 | if (uCheckProcTimer == NULL) { |
230 | 230 | if ((uCheckProcTimer = SetTimer(hWnd, nCheckProcTimerID, nCheckProcTimerTickValue, (TIMERPROC)&vCheckProcTimerProc)) == 0) { |
231 | 231 | vMessageBox(hWnd, IDS_NOTREGISTEHOOK, MessageBoxTYPE); |
@@ -249,13 +249,14 @@ static BOOL Cls_OnCreate(HWND hWnd, LPCREATESTRUCT lpCreateStruct) | ||
249 | 249 | // |
250 | 250 | static void Cls_OnDestroy(HWND hWnd) |
251 | 251 | { |
252 | - bMouseHookUnset32(); | |
253 | - | |
254 | 252 | if (uCheckProcTimer != NULL) { |
255 | 253 | if (KillTimer(hWnd, nCheckProcTimerID)) { |
256 | 254 | uCheckProcTimer = NULL; |
257 | 255 | } |
258 | 256 | } |
257 | + | |
258 | + bMouseHookUnset32(); | |
259 | + | |
259 | 260 | PostQuitMessage(0); |
260 | 261 | } |
261 | 262 |
@@ -299,7 +300,7 @@ static VOID CALLBACK vCheckProcTimerProc(HWND hWnd, UINT uMsg, UINT uTimerID, DW | ||
299 | 300 | // |
300 | 301 | static BOOL bReportEvent(DWORD dwEventID, WORD wCategory) |
301 | 302 | { |
302 | - BOOL bRet = FALSE; | |
303 | + BOOL bRet = FALSE; | |
303 | 304 | HANDLE hEvent = RegisterEventSource(NULL, _T("FlushMouse")); |
304 | 305 | if (hEvent != NULL) { |
305 | 306 | if (ReportEvent(hEvent, (0x0000000c & (dwEventID >> 28)), wCategory, dwEventID, NULL, 0, 0, NULL, NULL) != 0) { |
@@ -333,7 +334,7 @@ static BOOL bCreateProcess(LPCTSTR lpszExecName) | ||
333 | 334 | CloseHandle(ProcessInfomation.hThread); |
334 | 335 | bRet = TRUE; |
335 | 336 | } |
336 | - delete[] lpszBuffer; | |
337 | + delete[] lpszBuffer; | |
337 | 338 | } |
338 | 339 | return bRet; |
339 | 340 | } |
@@ -1,15 +1,15 @@ | ||
1 | 1 | <?xml version="1.0" encoding="UTF-8" standalone="yes"?> |
2 | 2 | <assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3"> |
3 | - <assemblyIdentity | |
4 | - type="win32" | |
5 | - name="FlushMouse32.exe" | |
6 | - version="0.2.0.1" | |
7 | - processorArchitecture="x86" | |
8 | - /> | |
9 | - <description>FlushMouse Application</description> | |
10 | - <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> | |
11 | - <application> | |
12 | - <!-- Windows 10 and Windows 11 --> | |
3 | + <assemblyIdentity | |
4 | + type="win32" | |
5 | + name="FlushMouse32.exe" | |
6 | + version="0.2.0.1" | |
7 | + processorArchitecture="x86" | |
8 | + /> | |
9 | + <description>FlushMouse Application</description> | |
10 | + <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> | |
11 | + <application> | |
12 | + <!-- Windows 10 and Windows 11 --> | |
13 | 13 | <maxversiontested Id="10.0.19041.0"/> |
14 | 14 | <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/> |
15 | 15 | <!-- DPI Awareness --> |
@@ -17,18 +17,18 @@ | ||
17 | 17 | <dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings"> |
18 | 18 | PerMonitorV2, PerMonitor |
19 | 19 | </dpiAwareness> |
20 | - <!-- GDI Scaling --> | |
20 | + <!-- GDI Scaling --> | |
21 | 21 | <gdiScaling>true</gdiScaling> |
22 | 22 | </application> |
23 | - </compatibility> | |
23 | + </compatibility> | |
24 | 24 | <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> |
25 | - <security> | |
25 | + <security> | |
26 | 26 | <requestedPrivileges> |
27 | 27 | <!-- UAC settings --> |
28 | 28 | <!--requestedExecutionLevel level="requireAdministrator" uiAccess="false"/--> |
29 | - <!--requestedExecutionLevel level="highestAvailable" uiAccess="false"/--> | |
29 | + <!--requestedExecutionLevel level="highestAvailable" uiAccess="true"/--> | |
30 | 30 | <requestedExecutionLevel level="asInvoker" uiAccess="false"/> |
31 | 31 | </requestedPrivileges> |
32 | - </security> | |
33 | - </trustInfo> | |
32 | + </security> | |
33 | + </trustInfo> | |
34 | 34 | </assembly> |
@@ -4,7 +4,7 @@ | ||
4 | 4 | // |
5 | 5 | // No. Date Name Reason & Document |
6 | 6 | // -------+-----------+-----------+-------------------------------------------- - |
7 | -// #0000 2022/04/06 JeffyTS New edit. | |
7 | +// #0000 2022/04/06 JeffyTS New edit. | |
8 | 8 | // |
9 | 9 | |
10 | 10 | // |
@@ -115,6 +115,7 @@ | ||
115 | 115 | <GenerateDebugInformation>true</GenerateDebugInformation> |
116 | 116 | <AdditionalDependencies>..\$(Platform)\$(Configuration)\FlushMouseDLL32.lib;..\$(Platform)\$(Configuration)\MiscLIB32.lib;%(AdditionalDependencies)</AdditionalDependencies> |
117 | 117 | <EnableUAC>false</EnableUAC> |
118 | + <UACUIAccess>false</UACUIAccess> | |
118 | 119 | </Link> |
119 | 120 | <PostBuildEvent> |
120 | 121 | <Command>copy ..\$(Platform)\$(Configuration)\FlushMouse32.exe ..\x64\$(Configuration)\</Command> |
@@ -143,6 +144,7 @@ | ||
143 | 144 | <GenerateDebugInformation>false</GenerateDebugInformation> |
144 | 145 | <AdditionalDependencies>..\$(Platform)\$(Configuration)\FlushMouseDLL32.lib;..\$(Platform)\$(Configuration)\MiscLIB32.lib;%(AdditionalDependencies)</AdditionalDependencies> |
145 | 146 | <EnableUAC>false</EnableUAC> |
147 | + <UACUIAccess>false</UACUIAccess> | |
146 | 148 | </Link> |
147 | 149 | <PostBuildEvent> |
148 | 150 | <Command>copy ..\$(Platform)\$(Configuration)\FlushMouse32.exe ..\x64\$(Configuration)\</Command> |
@@ -165,6 +167,7 @@ | ||
165 | 167 | <GenerateDebugInformation>true</GenerateDebugInformation> |
166 | 168 | <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies> |
167 | 169 | <EnableUAC>false</EnableUAC> |
170 | + <UACUIAccess>false</UACUIAccess> | |
168 | 171 | </Link> |
169 | 172 | <Manifest> |
170 | 173 | <InputResourceManifests>FlushMouse32.exe.manifest</InputResourceManifests> |
@@ -188,6 +191,7 @@ | ||
188 | 191 | <GenerateDebugInformation>false</GenerateDebugInformation> |
189 | 192 | <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies> |
190 | 193 | <EnableUAC>false</EnableUAC> |
194 | + <UACUIAccess>false</UACUIAccess> | |
191 | 195 | </Link> |
192 | 196 | <Manifest> |
193 | 197 | <InputResourceManifests>FlushMouse32.exe.manifest</InputResourceManifests> |
@@ -223,9 +227,6 @@ | ||
223 | 227 | <Project>{3d3f632c-75bb-4830-aa8e-0871c6aa1a72}</Project> |
224 | 228 | </ProjectReference> |
225 | 229 | </ItemGroup> |
226 | - <ItemGroup> | |
227 | - <Manifest Include="FlushMouse32.exe.manifest" /> | |
228 | - </ItemGroup> | |
229 | 230 | <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> |
230 | 231 | <ImportGroup Label="ExtensionTargets"> |
231 | 232 | </ImportGroup> |
@@ -55,7 +55,4 @@ | ||
55 | 55 | <Filter>リソース ファイル</Filter> |
56 | 56 | </Image> |
57 | 57 | </ItemGroup> |
58 | - <ItemGroup> | |
59 | - <Manifest Include="FlushMouse32.exe.manifest" /> | |
60 | - </ItemGroup> | |
61 | 58 | </Project> |
\ No newline at end of file |
@@ -4,7 +4,7 @@ | ||
4 | 4 | // |
5 | 5 | // No. Date Name Reason & Document |
6 | 6 | // -------+-----------+-----------+-------------------------------------------- - |
7 | -// #0000 2022/03/17 JeffyTS New edit. | |
7 | +// #0000 2022/03/17 JeffyTS New edit. | |
8 | 8 | // |
9 | 9 | |
10 | 10 | // |
@@ -4,7 +4,7 @@ | ||
4 | 4 | // |
5 | 5 | // No. Date Name Reason & Document |
6 | 6 | // -------+-----------+-----------+-------------------------------------------- - |
7 | -// #0000 2022/03/17 JeffyTS New edit. | |
7 | +// #0000 2022/03/17 JeffyTS New edit. | |
8 | 8 | // |
9 | 9 | |
10 | 10 | // |
@@ -117,6 +117,7 @@ | ||
117 | 117 | <SubSystem>Windows</SubSystem> |
118 | 118 | <GenerateDebugInformation>true</GenerateDebugInformation> |
119 | 119 | <EnableUAC>false</EnableUAC> |
120 | + <UACUIAccess>false</UACUIAccess> | |
120 | 121 | </Link> |
121 | 122 | <PostBuildEvent> |
122 | 123 | <Command> |
@@ -142,6 +143,7 @@ | ||
142 | 143 | <OptimizeReferences>true</OptimizeReferences> |
143 | 144 | <GenerateDebugInformation>false</GenerateDebugInformation> |
144 | 145 | <EnableUAC>false</EnableUAC> |
146 | + <UACUIAccess>false</UACUIAccess> | |
145 | 147 | </Link> |
146 | 148 | <PostBuildEvent> |
147 | 149 | <Command> |
@@ -162,6 +164,7 @@ | ||
162 | 164 | <SubSystem>Windows</SubSystem> |
163 | 165 | <GenerateDebugInformation>true</GenerateDebugInformation> |
164 | 166 | <EnableUAC>false</EnableUAC> |
167 | + <UACUIAccess>false</UACUIAccess> | |
165 | 168 | </Link> |
166 | 169 | <PostBuildEvent> |
167 | 170 | <Command>copy $(OutDir)FlushMouseCursor.dll $(OutDir)FlushMouseCursor.dat |
@@ -188,6 +191,7 @@ | ||
188 | 191 | <OptimizeReferences>true</OptimizeReferences> |
189 | 192 | <GenerateDebugInformation>true</GenerateDebugInformation> |
190 | 193 | <EnableUAC>false</EnableUAC> |
194 | + <UACUIAccess>false</UACUIAccess> | |
191 | 195 | </Link> |
192 | 196 | <PostBuildEvent> |
193 | 197 | <Command>copy $(OutDir)FlushMouseCursor.dll $(OutDir)FlushMouseCursor.dat |
@@ -18,7 +18,7 @@ | ||
18 | 18 | // |
19 | 19 | DLLEXPORT BOOL __stdcall bReportEvent(DWORD dwEventID, WORD wCategory) |
20 | 20 | { |
21 | - BOOL bRet = FALSE; | |
21 | + BOOL bRet = FALSE; | |
22 | 22 | HANDLE hEvent = RegisterEventSource(NULL, _T("FlushMouse")); |
23 | 23 | if (hEvent != NULL) { |
24 | 24 | if (ReportEvent(hEvent, (0x0000000c & (dwEventID >> 28)), wCategory, dwEventID, NULL, 0, 0, NULL, NULL) != 0) { |
@@ -108,6 +108,7 @@ | ||
108 | 108 | <SubSystem>Windows</SubSystem> |
109 | 109 | <GenerateDebugInformation>true</GenerateDebugInformation> |
110 | 110 | <EnableUAC>false</EnableUAC> |
111 | + <UACUIAccess>false</UACUIAccess> | |
111 | 112 | </Link> |
112 | 113 | </ItemDefinitionGroup> |
113 | 114 | <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> |
@@ -129,6 +130,7 @@ | ||
129 | 130 | <OptimizeReferences>true</OptimizeReferences> |
130 | 131 | <GenerateDebugInformation>false</GenerateDebugInformation> |
131 | 132 | <EnableUAC>false</EnableUAC> |
133 | + <UACUIAccess>false</UACUIAccess> | |
132 | 134 | </Link> |
133 | 135 | </ItemDefinitionGroup> |
134 | 136 | <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> |
@@ -147,6 +149,7 @@ | ||
147 | 149 | <GenerateDebugInformation>true</GenerateDebugInformation> |
148 | 150 | <EnableUAC>false</EnableUAC> |
149 | 151 | <AdditionalDependencies>..\$(Platform)\$(Configuration)\MiscLIB.lib;%(AdditionalDependencies)</AdditionalDependencies> |
152 | + <UACUIAccess>false</UACUIAccess> | |
150 | 153 | </Link> |
151 | 154 | <PreBuildEvent> |
152 | 155 | <Command> |
@@ -179,6 +182,7 @@ | ||
179 | 182 | <GenerateDebugInformation>true</GenerateDebugInformation> |
180 | 183 | <EnableUAC>false</EnableUAC> |
181 | 184 | <AdditionalDependencies>..\$(Platform)\$(Configuration)\MiscLIB.lib;%(AdditionalDependencies)</AdditionalDependencies> |
185 | + <UACUIAccess>false</UACUIAccess> | |
182 | 186 | </Link> |
183 | 187 | <PreBuildEvent> |
184 | 188 | <Command> |
@@ -197,6 +201,7 @@ | ||
197 | 201 | <ClInclude Include="framework.h" /> |
198 | 202 | <ClInclude Include="GlobalHookDll.h" /> |
199 | 203 | <ClInclude Include="KeyboardHookDll.h" /> |
204 | + <ClInclude Include="MouseHookDll.h" /> | |
200 | 205 | <ClInclude Include="pch.h" /> |
201 | 206 | <ClInclude Include="Resource.h" /> |
202 | 207 | <ClInclude Include="ShellHookDll.h" /> |
@@ -207,6 +212,7 @@ | ||
207 | 212 | <ClCompile Include="FlushMouseDll.cpp" /> |
208 | 213 | <ClCompile Include="GlobalHookDll.cpp" /> |
209 | 214 | <ClCompile Include="KeyboardHookDll.cpp" /> |
215 | + <ClCompile Include="MouseHookDll.cpp" /> | |
210 | 216 | <ClCompile Include="pch.cpp"> |
211 | 217 | <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader> |
212 | 218 | <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader> |
@@ -48,6 +48,9 @@ | ||
48 | 48 | <ClInclude Include="ShellHookDll.h"> |
49 | 49 | <Filter>ヘッダー ファイル</Filter> |
50 | 50 | </ClInclude> |
51 | + <ClInclude Include="MouseHookDll.h"> | |
52 | + <Filter>ヘッダー ファイル</Filter> | |
53 | + </ClInclude> | |
51 | 54 | </ItemGroup> |
52 | 55 | <ItemGroup> |
53 | 56 | <ClCompile Include="FlushMouseDll.cpp"> |
@@ -68,6 +71,9 @@ | ||
68 | 71 | <ClCompile Include="ShellHookDll.cpp"> |
69 | 72 | <Filter>ソース ファイル</Filter> |
70 | 73 | </ClCompile> |
74 | + <ClCompile Include="MouseHookDll.cpp"> | |
75 | + <Filter>ソース ファイル</Filter> | |
76 | + </ClCompile> | |
71 | 77 | </ItemGroup> |
72 | 78 | <ItemGroup> |
73 | 79 | <ResourceCompile Include="FlushMouseDLL.rc"> |
@@ -4,7 +4,7 @@ | ||
4 | 4 | // |
5 | 5 | // No. Date Name Reason & Document |
6 | 6 | // -------+-----------+-----------+-------------------------------------------- - |
7 | -// #0000 2022/02/12 JeffyTS New edit. | |
7 | +// #0000 2022/02/12 JeffyTS New edit. | |
8 | 8 | // |
9 | 9 | |
10 | 10 | // |
@@ -4,7 +4,7 @@ | ||
4 | 4 | // |
5 | 5 | // No. Date Name Reason & Document |
6 | 6 | // -------+-----------+-----------+-------------------------------------------- - |
7 | -// #0000 2022/03/04 JeffyTS New edit. | |
7 | +// #0000 2022/03/04 JeffyTS New edit. | |
8 | 8 | // |
9 | 9 | |
10 | 10 | // |
@@ -23,8 +23,6 @@ | ||
23 | 23 | // Local Prototype Define |
24 | 24 | // |
25 | 25 | static LRESULT CALLBACK lpGlobalHookProc(int, WPARAM, LPARAM); |
26 | -static BOOL bGlobalHookProcSub() | |
27 | -; | |
28 | 26 | |
29 | 27 | // |
30 | 28 | // Local Data |
@@ -106,6 +104,9 @@ DLLEXPORT BOOL __stdcall bGlobalHookUnset() | ||
106 | 104 | // |
107 | 105 | //フックの処理 |
108 | 106 | // |
107 | +template<typename T1, typename T2> | |
108 | +constexpr DWORD WORD2DWORD(T1 h, T2 l) { return (DWORD)(((((DWORD)(l)) << 16) & 0xffff0000) | ((DWORD)(h) & 0xffff)); } | |
109 | + | |
109 | 110 | static LRESULT CALLBACK lpGlobalHookProc(int nCode, WPARAM wParam, LPARAM lParam) |
110 | 111 | { |
111 | 112 | if (nCode < 0) { |
@@ -116,37 +117,31 @@ static LRESULT CALLBACK lpGlobalHookProc(int nCode, WPARAM wParam, LPARAM lParam | ||
116 | 117 | switch (lpCW->message) { |
117 | 118 | case WM_IME_STARTCOMPOSITION: // 0x010D |
118 | 119 | if (lpCW->lResult != 0) { |
119 | - if (bGlobalHookProcSub()) { | |
120 | - PostMessage(hWndGLParent, WM_CHECKIMESTARTCONVEX, (WPARAM)TRUE, (LPARAM)0); | |
121 | - } | |
120 | + PostMessage(hWndGLParent, WM_CHECKIMESTARTCONVEX, (WPARAM)TRUE, (LPARAM)0); | |
122 | 121 | } |
123 | 122 | return CallNextHookEx(NULL, nCode, wParam, lParam); |
124 | 123 | case WM_IME_ENDCOMPOSITION: // 0x010E |
125 | 124 | if (lpCW->lResult != 0) { |
126 | - if (bGlobalHookProcSub()) { | |
127 | - PostMessage(hWndGLParent, WM_CHECKIMESTARTCONVEX, (WPARAM)FALSE, (LPARAM)0); | |
128 | - } | |
125 | + PostMessage(hWndGLParent, WM_CHECKIMESTARTCONVEX, (WPARAM)FALSE, (LPARAM)0); | |
129 | 126 | } |
130 | 127 | return CallNextHookEx(NULL, nCode, wParam, lParam); |
131 | 128 | default: |
132 | 129 | if (lpCW->message == WM_HOOKEX) { |
133 | - if (bGlobalHookProcSub()) { | |
134 | - if (lpCW->lParam) { | |
135 | - if (!bSubclassed) { | |
136 | - if (hHookGL == NULL) break; | |
137 | - if (UnhookWindowsHookEx(hHookGL) != FALSE) { | |
138 | - if (LoadLibraryEx(FLUSHMOUSE_DLL, NULL, 0)) { | |
139 | - bSubclassed = TRUE; | |
140 | - } | |
141 | - hHookGL = NULL; | |
130 | + if (lpCW->lParam) { | |
131 | + if (!bSubclassed) { | |
132 | + if (hHookGL == NULL) break; | |
133 | + if (UnhookWindowsHookEx(hHookGL) != FALSE) { | |
134 | + if (LoadLibraryEx(FLUSHMOUSE_DLL, NULL, 0)) { | |
135 | + bSubclassed = TRUE; | |
142 | 136 | } |
137 | + hHookGL = NULL; | |
143 | 138 | } |
144 | 139 | } |
145 | - else { | |
146 | - if (bSubclassed) { | |
147 | - if (hHookGL == NULL) break; | |
148 | - bSubclassed = FALSE; | |
149 | - } | |
140 | + } | |
141 | + else { | |
142 | + if (bSubclassed) { | |
143 | + if (hHookGL == NULL) break; | |
144 | + bSubclassed = FALSE; | |
150 | 145 | } |
151 | 146 | } |
152 | 147 | } |
@@ -156,19 +151,5 @@ static LRESULT CALLBACK lpGlobalHookProc(int nCode, WPARAM wParam, LPARAM lParam | ||
156 | 151 | return CallNextHookEx(NULL, nCode, wParam, lParam); |
157 | 152 | } |
158 | 153 | |
159 | -// | |
160 | -// bGlobalHookProcSub | |
161 | -// | |
162 | -static BOOL bGlobalHookProcSub() | |
163 | -{ | |
164 | - if (lpDatGlobal == NULL) { | |
165 | - if ((lpDatGlobal = (LPGLOBAL_SHAREDMEM)CSharedMem->lpvSharedMemoryRead()) == NULL) { | |
166 | - return FALSE; | |
167 | - } | |
168 | - } | |
169 | - hWndGLParent = lpDatGlobal->hWnd; | |
170 | - hHookGL = lpDatGlobal->hHook; | |
171 | - return TRUE; | |
172 | -} | |
173 | 154 | |
174 | 155 | /* = EOF = */ |
\ No newline at end of file |
@@ -4,7 +4,7 @@ | ||
4 | 4 | // |
5 | 5 | // No. Date Name Reason & Document |
6 | 6 | // -------+-----------+-----------+-------------------------------------------- - |
7 | -// #0000 2022/02/12 JeffyTS New edit. | |
7 | +// #0000 2022/02/12 JeffyTS New edit. | |
8 | 8 | // |
9 | 9 | |
10 | 10 | // |
@@ -27,19 +27,18 @@ | ||
27 | 27 | #pragma comment(linker, "/SECTION:FLUSHMOUSEDLL_SEG,RWS") |
28 | 28 | #pragma data_seg("FLUSHMOUSEDLL_SEG") |
29 | 29 | static BOOL bOnlyCtrlLL = FALSE; |
30 | -static DWORD dwPreviousVKLL = 0; | |
30 | +static DWORD dwPreviousVKLL = 0; | |
31 | 31 | static HWND hWndKBParentLL = NULL; |
32 | 32 | static LPKEYBOARDLL_SHAREDMEM lpDatKeyboardLL = NULL; |
33 | 33 | static BOOL bEnableEPHelperLL = FALSE; |
34 | 34 | static BOOL bStartConvertingLL = FALSE; |
35 | -static CSharedMemory *CSharedMemLL = NULL; | |
35 | +static CSharedMemory *CSharedMemLL = NULL; | |
36 | 36 | #pragma data_seg() |
37 | 37 | |
38 | 38 | // |
39 | 39 | // Local Prototype Define |
40 | 40 | // |
41 | 41 | static LRESULT CALLBACK lpKeyboardHookLLProc(int nCode, WPARAM wParam, LPARAM lParam); |
42 | -static BOOL bKeyboardHookLLProcSub(); | |
43 | 42 | static BOOL bKBisEP(); |
44 | 43 | |
45 | 44 | // |
@@ -128,28 +127,24 @@ static LRESULT CALLBACK lpKeyboardHookLLProc(int nCode, WPARAM wParam, LPARAM lP | ||
128 | 127 | if (nCode == HC_ACTION) { |
129 | 128 | LPKBDLLHOOKSTRUCT lpstKBH = (LPKBDLLHOOKSTRUCT)lParam; |
130 | 129 | if ((lpstKBH->flags & LLKHF_UP)) { // Key up |
131 | - dwPreviousVKLL = 0; // Reset vkCode | |
130 | + dwPreviousVKLL = 0; | |
132 | 131 | switch (lpstKBH->vkCode) { |
133 | 132 | case VK_CONTROL: // Ctrl (0x11) |
134 | 133 | case VK_LCONTROL: // Ctrl L (0xa2) |
135 | 134 | case VK_RCONTROL: // Ctrl R (0xa3) |
136 | 135 | if (bOnlyCtrlLL) { |
137 | - if (bKeyboardHookLLProcSub()) { | |
138 | - PostMessage(hWndKBParentLL, WM_SYSKEYDOWNUPEX, KEY_ONLY_CTRLUP, (0x80000000 | (0xff000000 & (static_cast<LPARAM>(lpstKBH->flags) << 24)))); | |
139 | - } | |
136 | + PostMessage(hWndKBParentLL, WM_SYSKEYDOWNUPEX, KEY_ONLY_CTRLUP, (0x80000000 | (0xff000000 & (static_cast<LPARAM>(lpstKBH->flags) << 24)))); | |
140 | 137 | } |
141 | 138 | bOnlyCtrlLL = FALSE; |
142 | 139 | break; |
143 | 140 | case VK_RETURN: // Enter (0x0d) |
144 | 141 | bOnlyCtrlLL = FALSE; |
145 | - if (bKeyboardHookLLProcSub()) { | |
146 | - if (bStartConvertingLL) { | |
147 | - bStartConvertingLL = FALSE; | |
148 | - PostMessage(hWndKBParentLL, WM_CHECKIMESTARTCONVEX, (WPARAM)bStartConvertingLL, (LPARAM)(DWORD)(WM_USER + lpstKBH->vkCode)); | |
149 | - } | |
150 | - else { | |
151 | - PostMessage(hWndKBParentLL, WM_SYSKEYDOWNUPEX, KEY_RETURN, (0x80000000 | (0xff000000 & (static_cast<LPARAM>(lpstKBH->flags) << 24)))); | |
152 | - } | |
142 | + if (bStartConvertingLL) { | |
143 | + bStartConvertingLL = FALSE; | |
144 | + PostMessage(hWndKBParentLL, WM_CHECKIMESTARTCONVEX, (WPARAM)bStartConvertingLL, (LPARAM)(DWORD)(WM_USER + lpstKBH->vkCode)); | |
145 | + } | |
146 | + else { | |
147 | + PostMessage(hWndKBParentLL, WM_SYSKEYDOWNUPEX, KEY_RETURN, (0x80000000 | (0xff000000 & (static_cast<LPARAM>(lpstKBH->flags) << 24)))); | |
153 | 148 | } |
154 | 149 | break; |
155 | 150 | case VK_TAB: // Tab (0x09) |
@@ -183,48 +178,32 @@ static LRESULT CALLBACK lpKeyboardHookLLProc(int nCode, WPARAM wParam, LPARAM lP | ||
183 | 178 | case VK_F9: // (0x78) |
184 | 179 | case VK_F10: // (0x79) |
185 | 180 | //case VK_NUMLOCK: // Num Lock (0x90) |
186 | - case VK_OEM_ATTN: // OEM 英数/CapsLock (0xf0) | |
187 | - case VK_OEM_COPY: // OEM ひらがな (0xf2) | |
188 | 181 | //case VK_OEM_AUTO: // OEM 半角/全角 (0xf3 = VK_OEM_IME_OFF) |
189 | 182 | case VK_OEM_IME_OFF: // OEM IME OFF (0xf3) |
190 | 183 | case VK_OEM_IME_ON: // OEM IME ON (0xf4) |
191 | 184 | case VK_OEM_BACKTAB: // OEM Alt+カタカナ/ひらがな (0xf5) |
192 | 185 | case VK_OEM_PA1: // US(ENG) Non Convert (0xeb) |
193 | 186 | bOnlyCtrlLL = FALSE; |
194 | - if (bKeyboardHookLLProcSub()) { | |
187 | + if (!bStartConvertingLL) { | |
195 | 188 | PostMessage(hWndKBParentLL, WM_SYSKEYDOWNUPEX, (WM_USER + lpstKBH->vkCode), ((0x80000000 | 0xff000000 & (static_cast<LPARAM>(lpstKBH->flags)) << 24))); |
196 | 189 | } |
197 | 190 | break; |
191 | + case VK_OEM_ATTN: // OEM 英数/CapsLock (0xf0) | |
198 | 192 | case VK_OEM_FINISH: // OEM カタカナ (0xf1) |
193 | + case VK_OEM_COPY: // OEM ひらがな (0xf2) | |
199 | 194 | bOnlyCtrlLL = FALSE; |
200 | - if (GetAsyncKeyState(VK_SHIFT) & 0x8000) { | |
201 | - if (bKeyboardHookLLProcSub()) { | |
202 | - //if (!bEnableEPHelperLL) break; | |
203 | - PostMessage(hWndKBParentLL, WM_SYSKEYDOWNUPEX, (WM_USER + lpstKBH->vkCode), ((0x80000000 | 0xff000000 & (static_cast<LPARAM>(lpstKBH->flags)) << 24))); | |
204 | - return 1; | |
205 | - } | |
206 | - } | |
207 | 195 | break; |
208 | 196 | case VK_FF: // US(ENG) Convert |
209 | 197 | bOnlyCtrlLL = FALSE; |
198 | + if (!bEnableEPHelperLL) break; | |
210 | 199 | if (GetAsyncKeyState(VK_SHIFT) & 0x8000) { |
211 | - if (bKeyboardHookLLProcSub()) { | |
212 | - if (!bEnableEPHelperLL) break; | |
213 | - PostMessage(hWndKBParentLL, WM_SYSKEYDOWNUPEX, (KEY_OEM_FINISH), ((0x80000000 | 0xff000000 & (static_cast<LPARAM>(lpstKBH->flags)) << 24))); | |
214 | - return 1; | |
215 | - } | |
200 | + PostMessage(hWndKBParentLL, WM_SYSKEYDOWNUPEX, (KEY_OEM_FINISH), ((0x80000000 | 0xff000000 & (static_cast<LPARAM>(lpstKBH->flags)) << 24))); | |
216 | 201 | } |
217 | 202 | else if (lpstKBH->scanCode == 0x70) { |
218 | - if (bKeyboardHookLLProcSub()) { | |
219 | - if (!bEnableEPHelperLL) break; | |
220 | - PostMessage(hWndKBParentLL, WM_SYSKEYDOWNUPEX, KEY_OEM_COPY, ((0x80000000 | 0xff000000 & (static_cast<LPARAM>(lpstKBH->flags)) << 24))); | |
221 | - } | |
203 | + PostMessage(hWndKBParentLL, WM_SYSKEYDOWNUPEX, KEY_OEM_COPY, ((0x80000000 | 0xff000000 & (static_cast<LPARAM>(lpstKBH->flags)) << 24))); | |
222 | 204 | } |
223 | 205 | else if (lpstKBH->scanCode == 0x79) { |
224 | - if (bKeyboardHookLLProcSub()) { | |
225 | - if (!bEnableEPHelperLL) break; | |
226 | - PostMessage(hWndKBParentLL, WM_SYSKEYDOWNUPEX, KEY_CONVERT, ((0x80000000 | 0xff000000 & (static_cast<LPARAM>(lpstKBH->flags)) << 24))); | |
227 | - } | |
206 | + PostMessage(hWndKBParentLL, WM_SYSKEYDOWNUPEX, KEY_CONVERT, ((0x80000000 | 0xff000000 & (static_cast<LPARAM>(lpstKBH->flags)) << 24))); | |
228 | 207 | } |
229 | 208 | break; |
230 | 209 | default: |
@@ -253,55 +232,58 @@ static LRESULT CALLBACK lpKeyboardHookLLProc(int nCode, WPARAM wParam, LPARAM lP | ||
253 | 232 | case VK_CAPITAL: // 英数/CapsLock (0x14) |
254 | 233 | bOnlyCtrlLL = FALSE; |
255 | 234 | bStartConvertingLL = FALSE; |
235 | + dwPreviousVKLL = 0; | |
236 | + if (!bEnableEPHelperLL) break; | |
256 | 237 | if (bKBisEP()) { |
257 | - dwPreviousVKLL = VK_OEM_ATTN; | |
258 | - if (bKeyboardHookLLProcSub()) { | |
259 | - if (!bEnableEPHelperLL) break; | |
260 | - PostMessage(hWndKBParentLL, WM_SYSKEYDOWNUPEX, KEY_OEM_ATTN, (0x7f000000 & (static_cast<LPARAM>(lpstKBH->flags) << 24))); | |
261 | - } | |
238 | + PostMessage(hWndKBParentLL, WM_SYSKEYDOWNUPEX, KEY_OEM_ATTN, (0x7f000000 & (static_cast<LPARAM>(lpstKBH->flags) << 24))); | |
262 | 239 | return 1; |
263 | 240 | } |
264 | 241 | break; |
265 | 242 | case VK_KANJI: // JP(IME/ENG) Alt + 漢字 (0x19) |
266 | 243 | bOnlyCtrlLL = FALSE; |
267 | 244 | bStartConvertingLL = FALSE; |
268 | - dwPreviousVKLL = VK_KANJI; | |
245 | + dwPreviousVKLL = 0; | |
269 | 246 | if (GetAsyncKeyState(VK_MENU) & 0x8000) { |
270 | - if (bKeyboardHookLLProcSub()) { | |
271 | - PostMessage(hWndKBParentLL, WM_SYSKEYDOWNUPEX, KEY_KANJI, (0x7f000000 & (static_cast<LPARAM>(lpstKBH->flags) << 24))); | |
272 | - } | |
273 | - return 1; | |
247 | + PostMessage(hWndKBParentLL, WM_SYSKEYDOWNUPEX, KEY_KANJI, (0x7f000000 & (static_cast<LPARAM>(lpstKBH->flags) << 24))); | |
274 | 248 | } |
275 | 249 | break; |
276 | 250 | case VK_OEM_3: // JP(IME/ENG) [@] / US(ENG) IME ON (0xc0) = ['] ALT + 半角/全角 or 漢字 |
277 | 251 | case VK_OEM_8: // JP(IME/ENG) [`] / British(ENG) IME ON (0xdf) = ['] ALT + 半角/全角 or 漢字 |
278 | 252 | bOnlyCtrlLL = FALSE; |
279 | 253 | bStartConvertingLL = FALSE; |
254 | + if (!bEnableEPHelperLL) break; | |
280 | 255 | if (bKBisEP()) { |
281 | - if (bKeyboardHookLLProcSub()) { | |
282 | - PostMessage(hWndKBParentLL, WM_CHECKIMESTARTCONVEX, (WPARAM)bStartConvertingLL, (WM_USER + lpstKBH->vkCode)); | |
283 | - PostMessage(hWndKBParentLL, WM_SYSKEYDOWNUPEX, (WM_USER + lpstKBH->vkCode), (0x7f000000 & (static_cast<LPARAM>(lpstKBH->flags) << 24))); | |
284 | - } | |
256 | + PostMessage(hWndKBParentLL, WM_CHECKIMESTARTCONVEX, (WPARAM)bStartConvertingLL, (WM_USER + lpstKBH->vkCode)); | |
257 | + PostMessage(hWndKBParentLL, WM_SYSKEYDOWNUPEX, (WM_USER + lpstKBH->vkCode), (0x7f000000 & (static_cast<LPARAM>(lpstKBH->flags) << 24))); | |
285 | 258 | return 1; |
286 | 259 | } |
287 | 260 | break; |
288 | 261 | case VK_OEM_ATTN: // OEM 英数/CapsLock (0xf0) |
262 | + bOnlyCtrlLL = FALSE; | |
263 | + bStartConvertingLL = FALSE; | |
264 | + dwPreviousVKLL = 0; | |
265 | + if (!bStartConvertingLL) { | |
266 | + PostMessage(hWndKBParentLL, WM_SYSKEYDOWNUPEX, (WM_USER + lpstKBH->vkCode), (0x7f000000 & (static_cast<LPARAM>(lpstKBH->flags) << 24))); | |
267 | + } | |
268 | + break; | |
289 | 269 | case VK_OEM_FINISH: // OEM カタカナ (0xf1) |
290 | 270 | case VK_OEM_COPY: // OEM ひらがな (0xf2) |
291 | 271 | bOnlyCtrlLL = FALSE; |
292 | 272 | bStartConvertingLL = FALSE; |
293 | - if (bKeyboardHookLLProcSub()) { | |
294 | - PostMessage(hWndKBParentLL, WM_SYSKEYDOWNUPEX, (WM_USER + lpstKBH->vkCode), (0x7f000000 & (static_cast<LPARAM>(lpstKBH->flags) << 24))); | |
273 | + dwPreviousVKLL = 0; | |
274 | + if (GetAsyncKeyState(VK_SHIFT) & 0x8000) { | |
275 | + PostMessage(hWndKBParentLL, WM_SYSKEYDOWNUPEX, (KEY_OEM_FINISH), (0x7f000000 & (static_cast<LPARAM>(lpstKBH->flags) << 24))); | |
276 | + } | |
277 | + else { | |
278 | + PostMessage(hWndKBParentLL, WM_SYSKEYDOWNUPEX, (KEY_OEM_COPY), (0x7f000000 & (static_cast<LPARAM>(lpstKBH->flags) << 24))); | |
295 | 279 | } |
296 | 280 | break; |
281 | + case VK_RETURN: // RETURN (0x0d) | |
297 | 282 | case VK_ESCAPE: // ESC (0x1b) |
298 | - case VK_NONCONVERT: // 無変換 (0x1d) | |
299 | 283 | case VK_INSERT: // INSERT (0x2d) |
300 | 284 | bOnlyCtrlLL = FALSE; |
301 | 285 | bStartConvertingLL = FALSE; |
302 | - if (bKeyboardHookLLProcSub()) { | |
303 | - PostMessage(hWndKBParentLL, WM_CHECKIMESTARTCONVEX, (WPARAM)bStartConvertingLL, (LPARAM)(DWORD)(WM_USER + lpstKBH->vkCode)); | |
304 | - } | |
286 | + PostMessage(hWndKBParentLL, WM_CHECKIMESTARTCONVEX, (WPARAM)bStartConvertingLL, (LPARAM)(DWORD)(WM_USER + lpstKBH->vkCode)); | |
305 | 287 | break; |
306 | 288 | default: |
307 | 289 | bOnlyCtrlLL = FALSE; |
@@ -313,9 +295,7 @@ static LRESULT CALLBACK lpKeyboardHookLLProc(int nCode, WPARAM wParam, LPARAM lP | ||
313 | 295 | || ((0xdb <= lpstKBH->vkCode) && (lpstKBH->vkCode <= 0xde)) // 「[ {」「\ |」「- =」「^ ~」 |
314 | 296 | || ((lpstKBH->vkCode == 0xe2))) { // 「\ _」 |
315 | 297 | bStartConvertingLL = TRUE; |
316 | - if (bKeyboardHookLLProcSub()) { | |
317 | - PostMessage(hWndKBParentLL, WM_CHECKIMESTARTCONVEX, (WPARAM)bStartConvertingLL, (WM_USER + lpstKBH->vkCode)); | |
318 | - } | |
298 | + PostMessage(hWndKBParentLL, WM_CHECKIMESTARTCONVEX, (WPARAM)bStartConvertingLL, (WM_USER + lpstKBH->vkCode)); | |
319 | 299 | } |
320 | 300 | else bStartConvertingLL = FALSE; |
321 | 301 | } |
@@ -364,19 +344,5 @@ static BOOL bKBisEP() | ||
364 | 344 | #undef VALUE |
365 | 345 | } |
366 | 346 | |
367 | -// | |
368 | -// bKeyboardHookProcSub | |
369 | -// | |
370 | -static BOOL bKeyboardHookLLProcSub() | |
371 | -{ | |
372 | - if (lpDatKeyboardLL == NULL) { | |
373 | - if ((lpDatKeyboardLL = (LPKEYBOARDLL_SHAREDMEM)CSharedMemLL->lpvSharedMemoryRead()) == NULL) { | |
374 | - return FALSE; | |
375 | - } | |
376 | - } | |
377 | - hWndKBParentLL = lpDatKeyboardLL->hWnd; | |
378 | - bEnableEPHelperLL = lpDatKeyboardLL->bEnableEPHelper; | |
379 | - return TRUE; | |
380 | -} | |
381 | 347 | |
382 | 348 | /* = EOF = */ |
\ No newline at end of file |
@@ -0,0 +1,122 @@ | ||
1 | +// MouseHookDll.cpp | |
2 | +// Copyright (C) 2022 JeffyTS | |
3 | +// | |
4 | +// No. Date Name Reason & Document | |
5 | +// -------+-----------+-----------+-------------------------------------------- - | |
6 | +// #0000 2022/02/12 JeffyTS New edit. | |
7 | +// | |
8 | + | |
9 | +// | |
10 | +// Include | |
11 | +// | |
12 | +#pragma once | |
13 | +#include "pch.h" | |
14 | +#include "MouseHookDll.h" | |
15 | +#include "..\FlushMouseLIB\CommonDef.h" | |
16 | + | |
17 | +// | |
18 | +// Define | |
19 | +// | |
20 | + | |
21 | +// | |
22 | +// Local Prototype Define | |
23 | +// | |
24 | +static LRESULT CALLBACK lpMouseHookProc(int nCode, WPARAM wParam, LPARAM lParam); | |
25 | + | |
26 | +// | |
27 | +// Local Data | |
28 | +// | |
29 | +#pragma comment( linker, "/SECTION:FLUSHMOUSEDLL_SEG,RWS" ) | |
30 | +#pragma data_seg("FLUSHMOUSEDLL_SEG") | |
31 | +static HWND hWndMSParent = NULL; | |
32 | +static LPMOUSE_SHAREDMEM lpDatMouse = NULL; | |
33 | +static CSharedMemory* CSharedMem = NULL; | |
34 | +#pragma data_seg() | |
35 | + | |
36 | +// | |
37 | +// bMouseHookSet() | |
38 | +// | |
39 | +DLLEXPORT BOOL __stdcall bMouseHookSet(HWND hWnd) | |
40 | +{ | |
41 | + hWndMSParent = hWnd; | |
42 | + if ((CSharedMem = new CSharedMemory(MOUSEHOOKMEM, sizeof(MOUSE_SHAREDMEM))) != NULL) { | |
43 | + if ((lpDatMouse = (LPMOUSE_SHAREDMEM)CSharedMem->lpvSharedMemoryRead()) != NULL) { | |
44 | + lpDatMouse->hWnd = hWnd; | |
45 | + if (CSharedMem->bSharedMemoryWrite(lpDatMouse)) { | |
46 | + HHOOK hHook = SetWindowsHookEx(WH_MOUSE, (HOOKPROC)lpMouseHookProc, hGetInstance(), 0); | |
47 | + if (hHook) { | |
48 | + lpDatMouse->hHook = hHook; | |
49 | + if (CSharedMem->bSharedMemoryWrite(lpDatMouse)) { | |
50 | + return TRUE; | |
51 | + } | |
52 | + UnhookWindowsHookEx(hHook); | |
53 | + } | |
54 | + } | |
55 | + } | |
56 | + delete CSharedMem; | |
57 | + CSharedMem = NULL; | |
58 | + hWndMSParent = NULL; | |
59 | + lpDatMouse = NULL; | |
60 | + } | |
61 | + return FALSE; | |
62 | +} | |
63 | + | |
64 | +// | |
65 | +// bMouseHookUnset() | |
66 | +// | |
67 | +DLLEXPORT BOOL __stdcall bMouseHookUnset() | |
68 | +{ | |
69 | + BOOL bRet = FALSE; | |
70 | + if (CSharedMem != NULL) { | |
71 | + if ((lpDatMouse = (LPMOUSE_SHAREDMEM)CSharedMem->lpvSharedMemoryRead()) != NULL) { | |
72 | + if (lpDatMouse->hHook) { | |
73 | + if (UnhookWindowsHookEx(lpDatMouse->hHook)) { | |
74 | + bRet = TRUE; | |
75 | + } | |
76 | + } | |
77 | + } | |
78 | + delete CSharedMem; | |
79 | + CSharedMem = NULL; | |
80 | + hWndMSParent = NULL; | |
81 | + lpDatMouse = NULL; | |
82 | + } | |
83 | + return bRet; | |
84 | +} | |
85 | + | |
86 | +// | |
87 | +// lpMouseHookProc() | |
88 | +// | |
89 | +template<typename T1, typename T2> | |
90 | +constexpr DWORD WORD2DWORD(T1 h, T2 l) { return (DWORD)(((((DWORD)(l)) << 16) & 0xffff0000) | ((DWORD)(h) & 0xffff)); } | |
91 | + | |
92 | +static LRESULT CALLBACK lpMouseHookProc(int nCode, WPARAM wParam, LPARAM lParam) | |
93 | +{ | |
94 | + if (nCode < 0) { | |
95 | + return CallNextHookEx(NULL, nCode, wParam, lParam); | |
96 | + } | |
97 | + | |
98 | + if ((nCode == HC_ACTION) || (nCode == HC_NOREMOVE)) { | |
99 | + switch (wParam) { | |
100 | + case WM_LBUTTONDOWN: | |
101 | + case WM_RBUTTONDOWN: | |
102 | + case WM_LBUTTONUP: | |
103 | + case WM_RBUTTONUP: | |
104 | + case WM_NCLBUTTONDOWN: | |
105 | + case WM_NCRBUTTONDOWN: | |
106 | + case WM_NCLBUTTONUP: | |
107 | + case WM_NCRBUTTONUP: | |
108 | + { | |
109 | + MOUSEHOOKSTRUCT* mh = (MOUSEHOOKSTRUCT*)lParam; | |
110 | + DWORD pt = WORD2DWORD(mh->pt.x, mh->pt.y); | |
111 | + PostMessage(hWndMSParent, (UINT)(WM_USER + wParam), (WPARAM)mh->hwnd, (LPARAM)pt); | |
112 | + } | |
113 | + break; | |
114 | + default: | |
115 | + break; | |
116 | + } | |
117 | + } | |
118 | + return CallNextHookEx(NULL, nCode, wParam, lParam); | |
119 | +} | |
120 | + | |
121 | + | |
122 | +/* = EOF = */ | |
\ No newline at end of file |
@@ -0,0 +1,31 @@ | ||
1 | +// MouseHookDll.h | |
2 | +// Copyright (C) 2022 JeffyTS | |
3 | +// | |
4 | +// No. Date Name Reason & Document | |
5 | +// -------+-----------+-----------+-------------------------------------------- - | |
6 | +// #0000 2022/02/12 JeffyTS New edit. | |
7 | +// | |
8 | + | |
9 | +// | |
10 | +// Include | |
11 | +// | |
12 | +#pragma once | |
13 | +#include "FlushMouseDll.h" | |
14 | +#include "..\MiscLIB\CSharedMemory.h" | |
15 | + | |
16 | +// | |
17 | +// Define | |
18 | +// | |
19 | +#define MOUSEHOOKMEM _T("MouseHookSharedMem") | |
20 | +typedef struct tagMOUSE_SHAREDMEM { | |
21 | + HWND hWnd; | |
22 | + HHOOK hHook; | |
23 | +} MOUSE_SHAREDMEM, * PMOUSE_SHAREDMEM, * LPMOUSE_SHAREDMEM; | |
24 | + | |
25 | +// | |
26 | +// Global Prototype Define | |
27 | +// | |
28 | +DLLEXPORT BOOL __stdcall bMouseHookSet(HWND hWnd); | |
29 | +DLLEXPORT BOOL __stdcall bMouseHookUnset(void); | |
30 | + | |
31 | +/* = EOF = */ |
@@ -108,10 +108,10 @@ static LRESULT CALLBACK lpShellHookProc(int nCode, WPARAM wParam, LPARAM lParam) | ||
108 | 108 | } |
109 | 109 | switch (nCode) { |
110 | 110 | case HSHELL_LANGUAGE: |
111 | - PostMessage(FindWindow(CLASS_FLUSHMOUSE, NULL), WM_INPUTLANGCHANGEEX, wParam, lParam); | |
111 | + PostMessage(hWndShellParent, WM_INPUTLANGCHANGEEX, wParam, lParam); | |
112 | 112 | break; |
113 | 113 | } |
114 | - return (LRESULT)0; | |
114 | + return CallNextHookEx(NULL, nCode, wParam, lParam); | |
115 | 115 | } |
116 | 116 | |
117 | 117 |
@@ -109,6 +109,7 @@ | ||
109 | 109 | <GenerateDebugInformation>true</GenerateDebugInformation> |
110 | 110 | <EnableUAC>false</EnableUAC> |
111 | 111 | <AdditionalDependencies>..\$(Platform)\$(Configuration)\MiscLIB32.lib;%(AdditionalDependencies)</AdditionalDependencies> |
112 | + <UACUIAccess>false</UACUIAccess> | |
112 | 113 | </Link> |
113 | 114 | <PostBuildEvent> |
114 | 115 | <Command>copy ..\$(Platform)\$(Configuration)\FlushMouseDLL32.dll ..\x64\$(Configuration)\</Command> |
@@ -135,6 +136,7 @@ | ||
135 | 136 | <GenerateDebugInformation>true</GenerateDebugInformation> |
136 | 137 | <EnableUAC>false</EnableUAC> |
137 | 138 | <AdditionalDependencies>..\$(Platform)\$(Configuration)\MiscLIB32.lib;%(AdditionalDependencies)</AdditionalDependencies> |
139 | + <UACUIAccess>false</UACUIAccess> | |
138 | 140 | </Link> |
139 | 141 | <PostBuildEvent> |
140 | 142 | <Command>copy ..\$(Platform)\$(Configuration)\FlushMouseDLL32.dll ..\x64\$(Configuration)\</Command> |
@@ -154,6 +156,7 @@ | ||
154 | 156 | <SubSystem>Windows</SubSystem> |
155 | 157 | <GenerateDebugInformation>true</GenerateDebugInformation> |
156 | 158 | <EnableUAC>false</EnableUAC> |
159 | + <UACUIAccess>false</UACUIAccess> | |
157 | 160 | </Link> |
158 | 161 | </ItemDefinitionGroup> |
159 | 162 | <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> |
@@ -175,6 +178,7 @@ | ||
175 | 178 | <OptimizeReferences>true</OptimizeReferences> |
176 | 179 | <GenerateDebugInformation>false</GenerateDebugInformation> |
177 | 180 | <EnableUAC>false</EnableUAC> |
181 | + <UACUIAccess>false</UACUIAccess> | |
178 | 182 | </Link> |
179 | 183 | </ItemDefinitionGroup> |
180 | 184 | <ItemGroup> |
@@ -27,10 +27,10 @@ | ||
27 | 27 | <ClInclude Include="resource.h"> |
28 | 28 | <Filter>ヘッダー ファイル</Filter> |
29 | 29 | </ClInclude> |
30 | - <ClInclude Include="MouseHookDll32.h"> | |
30 | + <ClInclude Include="..\FlushMouse\CommonDef.h"> | |
31 | 31 | <Filter>ヘッダー ファイル</Filter> |
32 | 32 | </ClInclude> |
33 | - <ClInclude Include="..\FlushMouse\CommonDef.h"> | |
33 | + <ClInclude Include="MouseHookDll32.h"> | |
34 | 34 | <Filter>ヘッダー ファイル</Filter> |
35 | 35 | </ClInclude> |
36 | 36 | </ItemGroup> |
@@ -12,6 +12,7 @@ | ||
12 | 12 | #pragma once |
13 | 13 | #include "pch.h" |
14 | 14 | #include "MouseHookDll32.h" |
15 | +#include "..\FlushMouseLIB\CommonDef.h" | |
15 | 16 | |
16 | 17 | // |
17 | 18 | // Define |
@@ -21,7 +22,6 @@ | ||
21 | 22 | // Local Prototype Define |
22 | 23 | // |
23 | 24 | static LRESULT CALLBACK lpMouseHookProc(int nCode, WPARAM wParam, LPARAM lParam); |
24 | -static BOOL bMouseHookProcSub(); | |
25 | 25 | |
26 | 26 | // |
27 | 27 | // Local Data |
@@ -91,47 +91,32 @@ constexpr DWORD WORD2DWORD(T1 h, T2 l) { return (DWORD)(((((DWORD)(l)) << 16) & | ||
91 | 91 | |
92 | 92 | static LRESULT CALLBACK lpMouseHookProc(int nCode, WPARAM wParam, LPARAM lParam) |
93 | 93 | { |
94 | - if (nCode < 0) { // nCodeが0より小さい場合は関係ないので次に渡す | |
94 | + if (nCode < 0) { | |
95 | 95 | return CallNextHookEx(NULL, nCode, wParam, lParam); |
96 | 96 | } |
97 | 97 | |
98 | 98 | if (nCode == HC_ACTION) { |
99 | - if (lParam) { | |
100 | - switch (wParam) { | |
101 | - case WM_LBUTTONDOWN: | |
102 | - case WM_RBUTTONDOWN: | |
103 | - case WM_LBUTTONUP: | |
104 | - case WM_RBUTTONUP: | |
105 | - case WM_NCLBUTTONDOWN: | |
106 | - case WM_NCRBUTTONDOWN: | |
107 | - case WM_NCLBUTTONUP: | |
108 | - case WM_NCRBUTTONUP: | |
109 | - if (bMouseHookProcSub()) { | |
110 | - MOUSEHOOKSTRUCT* mh = (MOUSEHOOKSTRUCT*)lParam; | |
111 | - DWORD pt = WORD2DWORD(mh->pt.x, mh->pt.y); | |
112 | - PostMessage(hWndMSParent, (UINT)(WM_USER + wParam), (WPARAM)mh->hwnd, (LPARAM)pt); | |
113 | - } | |
114 | - break; | |
115 | - default: | |
116 | - break; | |
117 | - } | |
99 | + switch (wParam) { | |
100 | + case WM_LBUTTONDOWN: | |
101 | + case WM_RBUTTONDOWN: | |
102 | + case WM_LBUTTONUP: | |
103 | + case WM_RBUTTONUP: | |
104 | + case WM_NCLBUTTONDOWN: | |
105 | + case WM_NCRBUTTONDOWN: | |
106 | + case WM_NCLBUTTONUP: | |
107 | + case WM_NCRBUTTONUP: | |
108 | + { | |
109 | + MOUSEHOOKSTRUCT* mh = (MOUSEHOOKSTRUCT*)lParam; | |
110 | + DWORD pt = WORD2DWORD(mh->pt.x, mh->pt.y); | |
111 | + PostMessage(hWndMSParent, (UINT)(WM_USER + wParam), (WPARAM)mh->hwnd, (LPARAM)pt); | |
112 | + } | |
113 | + break; | |
114 | + default: | |
115 | + break; | |
118 | 116 | } |
119 | 117 | } |
120 | 118 | return CallNextHookEx(NULL, nCode, wParam, lParam); |
121 | 119 | } |
122 | 120 | |
123 | -// | |
124 | -// bMouseHookProcSub | |
125 | -// | |
126 | -static BOOL bMouseHookProcSub() | |
127 | -{ | |
128 | - if (lpDatMouse == NULL) { | |
129 | - if ((lpDatMouse = (LPMOUSE_SHAREDMEM32)CSharedMem->lpvSharedMemoryRead()) == NULL) { | |
130 | - return FALSE; | |
131 | - } | |
132 | - } | |
133 | - hWndMSParent = lpDatMouse->hWnd; | |
134 | - return TRUE; | |
135 | -} | |
136 | 121 | |
137 | 122 | /* = EOF = */ |
\ No newline at end of file |
@@ -103,7 +103,7 @@ typedef struct tagSIZED | ||
103 | 103 | #define WM_CHECKEXISTINGJPIMEEX (WM_USER + 0x0003) |
104 | 104 | #define HANDLE_WM_CHECKEXISTINGJPIMEEX(hWnd, wParam, lParam, fn) ((fn)((hWnd), (BOOL)(wParam)), 0L) |
105 | 105 | |
106 | -// void Cls_OnCheckIMEStartConversioningEx(HWND hWnd, BOOL bStartConversioning, DWORD vkCode); | |
106 | +// void Cls_OnCheckIMEStartConvertingEx(HWND hWnd, BOOL bStartConverting, DWORD vkCode); | |
107 | 107 | #define WM_CHECKIMESTARTCONVEX (WM_USER + 0x0004) |
108 | 108 | #define HANDLE_WM_CHECKIMESTARTCONVEX(hWnd, wParam, lParam, fn) ((fn)((hWnd), (BOOL)(wParam), (DWORD)(lParam)), 0L) |
109 | 109 |
@@ -638,13 +638,13 @@ BOOL CCursor::_bAdjustCaretByMonitorDPI(int iModeSizeX, int iModeSizeY, LPRECT | ||
638 | 638 | // |
639 | 639 | BOOL CCursor::bDrawIMEModeOnDisplaySub(LPIMECURSORDATA lpstCursorData) |
640 | 640 | { |
641 | - Sleep(50); | |
641 | + Sleep(300); | |
642 | 642 | |
643 | - BOOL bFoundCaret = FALSE; | |
644 | - RECT rcCursor{}, rcCaret{}; | |
643 | + BOOL bFoundCaret = FALSE; | |
644 | + RECT rcCursor{}, rcCaret{}; | |
645 | 645 | int iCursorSizeX = 0, iCursorSizeY = 0, iCaretSizeX = 0, iCaretSizeY = 0; |
646 | 646 | DWORD dwIMEModeCursor = IMEOFF, dwIMEModeCaret = IMEOFF; |
647 | - HWND hCaretWnd = NULL; | |
647 | + HWND hCaretWnd = NULL; | |
648 | 648 | if (lpstCursorData->bDrawNearCaret != FALSE) { |
649 | 649 | if (lpstCursorData->hWnd != NULL) { |
650 | 650 | rcCaret.left = lpstCursorData->rcCaret.left; rcCaret.top = lpstCursorData->rcCaret.top; |
@@ -1044,7 +1044,6 @@ void CCursorWindow::Cls_OnPaint(HWND hWnd) | ||
1044 | 1044 | if ((hFontPrev = (HFONT)SelectObject(hDC, hFont)) != NULL) { |
1045 | 1045 | if (DrawTextEx(hDC, lpszMode, -1, &rc, DT_RIGHT | DT_SINGLELINE | DT_VCENTER, NULL) == 0) { |
1046 | 1046 | } |
1047 | - SelectObject(hDC, hFontPrev); | |
1048 | 1047 | } |
1049 | 1048 | DeleteObject(hFont); |
1050 | 1049 | } |
@@ -110,7 +110,7 @@ static void Cls_OnLButtonDownEx(HWND hWnd, int x, int y, HWND hForeground); | ||
110 | 110 | static void Cls_OnLButtonUpEx(HWND hWnd, int x, int y, HWND hForeground); |
111 | 111 | static void Cls_OnSysKeyDownUpEx(HWND hWnd, UINT vk, BOOL fDown, int cRepeat, UINT flags); |
112 | 112 | static void Cls_OnEventForegroundEx(HWND hWnd, DWORD dwEvent, HWND hForeWnd); |
113 | -static void Cls_OnCheckIMEStartConvertingEx(HWND hWnd, BOOL bStartConversioning, DWORD vkCode); | |
113 | +static void Cls_OnCheckIMEStartConvertingEx(HWND hWnd, BOOL bStartConverting, DWORD vkCode); | |
114 | 114 | static void Cls_OnCheckExistingJPIMEEx(HWND hWnd, BOOL bEPHelper); |
115 | 115 | static void Cls_OnInputLangChangeEx(HWND hWnd, UINT CodePage, HKL hkl); |
116 | 116 |
@@ -125,7 +125,7 @@ static BOOL CALLBACK bEnumChildProcChangeHKL(HWND hWnd, LPARAM lParam); | ||
125 | 125 | // |
126 | 126 | // bWinMain() |
127 | 127 | // |
128 | -BOOL bWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance) | |
128 | +BOOL bWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, int nCmdShow) | |
129 | 129 | { |
130 | 130 | if (LoadString(Resource->hLoad(), IDS_APP_TITLE, szTitle, MAX_LOADSTRING) == 0) return FALSE; |
131 | 131 |
@@ -139,7 +139,7 @@ BOOL bWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance) | ||
139 | 139 | } |
140 | 140 | |
141 | 141 | #define MessageBoxTYPE (MB_ICONSTOP | MB_OK) |
142 | - HWND hWnd = NULL; | |
142 | + HWND hWnd = NULL; | |
143 | 143 | if ((hWnd = FindWindow(CLASS_FLUSHMOUSE, NULL)) != NULL) { |
144 | 144 | SetFocus(GetLastActivePopup(hWnd)); |
145 | 145 | PostMessage(hWnd, WM_DESTROY, NULL, NULL); |
@@ -162,9 +162,11 @@ BOOL bWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance) | ||
162 | 162 | } |
163 | 163 | } |
164 | 164 | |
165 | - if ((hWnd = InitInstance(hInstance, SW_HIDE)) == NULL) { | |
165 | + if ((hWnd = InitInstance(hInstance, nCmdShow)) == NULL) { | |
166 | 166 | return FALSE; |
167 | 167 | } |
168 | + ShowWindow(hWnd, SW_HIDE); | |
169 | + UpdateWindow(hWnd); | |
168 | 170 | hMainWnd = hWnd; |
169 | 171 | return TRUE; |
170 | 172 | } |
@@ -226,7 +228,7 @@ static HWND InitInstance(HINSTANCE hInstance, int nCmdShow) | ||
226 | 228 | static LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) |
227 | 229 | { |
228 | 230 | #define HANDLE_WM_POWERBROADCAST(hWnd, wParam, lParam, fn) (LRESULT)(DWORD)(BOOL)((fn)((hWnd), (ULONG)(wParam), (POWERBROADCAST_SETTING *)(lParam))) |
229 | -#define HANDLE_WM_INPUTLANGCHANGE(hWnd, wParam, lParam, fn) ((fn)((hWnd), (UINT)(wParam), (HKL)(lParam)), 0L) | |
231 | +//#define HANDLE_WM_INPUTLANGCHANGE(hWnd, wParam, lParam, fn) ((fn)((hWnd), (UINT)(wParam), (HKL)(lParam)), 0L) | |
230 | 232 | |
231 | 233 | switch (message) { |
232 | 234 | HANDLE_MSG(hWnd, WM_CREATE, Cls_OnCreate); |
@@ -310,8 +312,8 @@ static BOOL Cls_OnCreate(HWND hWnd, LPCREATESTRUCT lpCreateStruct) | ||
310 | 312 | return FALSE; |
311 | 313 | } |
312 | 314 | |
313 | - if ((bCheckExistingJPIME() && bEnableEPHelper) || bIMEModeForced) { | |
314 | - bForExplorerPatcherSWS(GetForegroundWindow(), TRUE, bIMEModeForced, NULL, NULL); | |
315 | + if ((bCheckExistingJPIME() && bEnableEPHelper)) { | |
316 | + bForExplorerPatcherSWS(GetForegroundWindow(), TRUE, TRUE, NULL, NULL); | |
315 | 317 | } |
316 | 318 | |
317 | 319 | bReportEvent(MSG_START_SUCCEED, APPLICATION_CATEGORY); |
@@ -418,8 +420,6 @@ static void Cls_OnDisplayChange(HWND hWnd, UINT bitsPerPixel, UINT cxScreen, UIN | ||
418 | 420 | UNREFERENCED_PARAMETER(bitsPerPixel); |
419 | 421 | UNREFERENCED_PARAMETER(cxScreen); |
420 | 422 | UNREFERENCED_PARAMETER(cyScreen); |
421 | - if (!Cime->bGetVirtualDesktopSize()) { | |
422 | - } | |
423 | 423 | } |
424 | 424 | |
425 | 425 | // |
@@ -430,13 +430,13 @@ static void Cls_OnInputLangChangeEx(HWND hWnd, UINT CodePage, HKL hkl) | ||
430 | 430 | { |
431 | 431 | UNREFERENCED_PARAMETER(hWnd); |
432 | 432 | UNREFERENCED_PARAMETER(CodePage); |
433 | - if ((bCheckExistingJPIME() && bEnableEPHelper) || bIMEModeForced) { | |
433 | + if ((bCheckExistingJPIME() && bEnableEPHelper)) { | |
434 | 434 | if (hkl == US_ENG) { |
435 | 435 | HWND hForeWnd = GetForegroundWindow(); |
436 | 436 | if (hForeWnd != NULL) { |
437 | 437 | HKL hNewHKL = NULL; |
438 | 438 | HKL hPreviousHKL = NULL; |
439 | - bForExplorerPatcherSWS(hForeWnd, TRUE, bIMEModeForced, &hNewHKL, &hPreviousHKL); // @@@ for Explorer Patcher Simple Window Switcher | |
439 | + bForExplorerPatcherSWS(hForeWnd, TRUE, TRUE, &hNewHKL, &hPreviousHKL); | |
440 | 440 | } |
441 | 441 | } |
442 | 442 | } |
@@ -452,7 +452,7 @@ static void Cls_OnLButtonDownEx(HWND hWnd, int x, int y, HWND hForeground) | ||
452 | 452 | UNREFERENCED_PARAMETER(x); |
453 | 453 | UNREFERENCED_PARAMETER(y); |
454 | 454 | UNREFERENCED_PARAMETER(hForeground); |
455 | - if ((bCheckExistingJPIME() && bEnableEPHelper) || bIMEModeForced) { | |
455 | + if ((bCheckExistingJPIME() && bEnableEPHelper)) { | |
456 | 456 | bForExplorerPatcherSWS(hForeground, FALSE, FALSE, NULL, NULL); |
457 | 457 | } |
458 | 458 | return; |
@@ -472,8 +472,8 @@ static void Cls_OnLButtonUpEx(HWND hWnd, int x, int y, HWND hForeground) | ||
472 | 472 | HWND hWndObserved = NULL; |
473 | 473 | POINT pt{}; |
474 | 474 | if (GetCursorPos(&pt)) { |
475 | - RECT rc{}; | |
476 | - if ((hWndObserved = WindowFromPoint(pt)) == NULL) return; | |
475 | + RECT rc{}; | |
476 | + if ((hWndObserved = WindowFromPoint(pt)) == NULL) return; | |
477 | 477 | if (FindWindow(L"Shell_TrayWnd", NULL) == GetForegroundWindow()) { |
478 | 478 | if (bGetTaskTrayWindowRect(hWnd, &rc) == FALSE) return; |
479 | 479 | if (((pt.x >= rc.left) && (pt.x <= rc.right)) || ((pt.y <= rc.top) && (pt.y >= rc.bottom))) return; |
@@ -541,15 +541,7 @@ static void Cls_OnCheckIMEStartConvertingEx(HWND hWnd, BOOL bStartConverting, D | ||
541 | 541 | UNREFERENCED_PARAMETER(hWnd); |
542 | 542 | UNREFERENCED_PARAMETER(vkCode); |
543 | 543 | |
544 | - HWND hWndObserved = GetForegroundWindow(); | |
545 | - POINT pt{}; | |
546 | - if (Cursor->bGetCaretPos(hWndObserved, &pt)) { | |
547 | - if ((pt.x != 0) && (pt.y != 0)) { | |
548 | - hWndObserved = WindowFromPoint(pt); | |
549 | - } | |
550 | - } | |
551 | - if (Cime->dwIMEMode(hWndObserved, FALSE) != IMEOFF) bIMEInConverting = bStartConverting; | |
552 | - else bIMEInConverting = FALSE; | |
544 | + bIMEInConverting = bStartConverting; | |
553 | 545 | } |
554 | 546 | |
555 | 547 | // |
@@ -566,13 +558,36 @@ static void Cls_OnSysKeyDownUpEx(HWND hWnd, UINT vk, BOOL fDown, int cRepeat, UI | ||
566 | 558 | } |
567 | 559 | HKL hNewHKL = NULL; |
568 | 560 | HKL hPreviousHKL = NULL; |
569 | - HWND hForeWnd = GetForegroundWindow(); | |
561 | + HWND hForeWnd = NULL; | |
570 | 562 | if ((fDown == FALSE)) { // Key up |
571 | 563 | switch (vk) { |
572 | 564 | case KEY_TAB: |
573 | 565 | case KEY_RETURN: |
574 | - break; | |
566 | + if (!bIMEInConverting) { | |
567 | + HWND hWndObserved = NULL; | |
568 | + if (bDisplayFocusWindowIME) { | |
569 | + if ((hWndObserved = GetForegroundWindow()) == NULL) return; | |
570 | + } | |
571 | + else { | |
572 | + POINT pt{}; | |
573 | + if (GetCursorPos(&pt)) { | |
574 | + if ((hWndObserved = WindowFromPoint(pt)) == NULL) return; | |
575 | + } | |
576 | + else return; // error | |
577 | + } | |
578 | + if (Cursor->bStartIMECursorChangeThread(hWndObserved)) { | |
579 | + if (bDoModeDispByIMEKeyDown) { | |
580 | + if (!bIMEInConverting) { | |
581 | + if (!Cursor->bStartDrawIMEModeThreadWait(hWndObserved)) return; | |
582 | + } | |
583 | + } | |
584 | + } | |
585 | + return; | |
586 | + } | |
587 | + bIMEInConverting = FALSE; | |
588 | + return; | |
575 | 589 | case KEY_ONLY_CTRLUP: |
590 | + if ((hForeWnd = GetForegroundWindow()) == NULL) return; | |
576 | 591 | if (bEnableEPHelper) bForExplorerPatcherSWS(hForeWnd, FALSE, FALSE, NULL, NULL); |
577 | 592 | if (bDoModeDispByCtrlUp) { |
578 | 593 | POINT pt{}; |
@@ -594,46 +609,56 @@ static void Cls_OnSysKeyDownUpEx(HWND hWnd, UINT vk, BOOL fDown, int cRepeat, UI | ||
594 | 609 | case KEY_F9: // F9 (0x78) |
595 | 610 | case KEY_F10: // F10 (0x79) |
596 | 611 | break; |
597 | - case KEY_IME_ON: // IME ON (0x16) | |
598 | - bIMEInConverting = FALSE; | |
612 | + case KEY_IME_ON: // IME ON (0x16) | |
613 | + if (bIMEInConverting) { | |
614 | + return; | |
615 | + } | |
599 | 616 | if (bEnableEPHelper || bIMEModeForced) { |
617 | + if ((hForeWnd = GetForegroundWindow()) == NULL) return; | |
600 | 618 | Cime->vIMEConvertModeChangeForced(hForeWnd, ZENHIRA_IMEON); |
601 | 619 | } |
602 | 620 | break; |
603 | 621 | case KEY_KANJI: // JP(IME/ENG) Alt + 漢字 (0x19) |
604 | - bIMEInConverting = FALSE; | |
622 | + if (bIMEInConverting) { | |
623 | + return; | |
624 | + } | |
605 | 625 | if (bEnableEPHelper || bIMEModeForced) { |
626 | + if ((hForeWnd = GetForegroundWindow()) == NULL) return; | |
606 | 627 | DWORD dwBeforeIMEMode = Cime->dwIMEMode(hForeWnd, FALSE); |
607 | - if (bForExplorerPatcherSWS(hForeWnd, TRUE, bIMEModeForced, &hNewHKL, &hPreviousHKL)) { | |
608 | - if ((bIMEModeForced != FALSE) && (!Cime->bIsNewIME())) { | |
609 | - if (dwBeforeIMEMode != IMEOFF) { | |
610 | - Cime->vIMEOpenCloseForced(hForeWnd, IMECLOSE); | |
611 | - } | |
612 | - else { | |
613 | - Cime->vIMEOpenCloseForced(hForeWnd, IMEOPEN); | |
614 | - } | |
628 | + if (bForExplorerPatcherSWS(hForeWnd, TRUE, TRUE, &hNewHKL, &hPreviousHKL)) { | |
629 | + if (dwBeforeIMEMode != IMEOFF) { | |
630 | + Cime->vIMEOpenCloseForced(hForeWnd, IMECLOSE); | |
631 | + } | |
632 | + else { | |
633 | + Cime->vIMEOpenCloseForced(hForeWnd, IMEOPEN); | |
615 | 634 | } |
616 | 635 | } |
617 | 636 | } |
618 | 637 | break; |
619 | 638 | case KEY_IME_OFF: // IME OFF (0x1a) |
620 | - bIMEInConverting = FALSE; | |
639 | + if (bIMEInConverting) { | |
640 | + return; | |
641 | + } | |
621 | 642 | if (bEnableEPHelper || bIMEModeForced) { |
622 | - if ((bIMEModeForced != FALSE) && (!Cime->bIsNewIME())) { | |
623 | - Cime->vIMEOpenCloseForced(hForeWnd, IMECLOSE); | |
624 | - } | |
643 | + if ((hForeWnd = GetForegroundWindow()) == NULL) return; | |
644 | + Cime->vIMEOpenCloseForced(hForeWnd, IMECLOSE); | |
625 | 645 | } |
626 | 646 | break; |
627 | 647 | case KEY_CONVERT: // JP(IME/ENG) 変換 (0x1c) |
628 | - if (bIMEInConverting) return; | |
629 | - if (bEnableEPHelper || bIMEModeForced) { | |
630 | - SetFocus(hForeWnd); | |
631 | - if (bForExplorerPatcherSWS(hForeWnd, TRUE, bIMEModeForced, &hNewHKL, &hPreviousHKL)) { | |
632 | - if ((hPreviousHKL != JP_IME) && (hNewHKL == JP_IME)) { | |
633 | - Cime->vIMEOpenCloseForced(hForeWnd, IMEOPEN); | |
634 | - } | |
635 | - else { | |
636 | - if ((bIMEModeForced != FALSE) && (!Cime->bIsNewIME())) { | |
648 | + if (bIMEInConverting) { | |
649 | + return; | |
650 | + } | |
651 | + if ((bEnableEPHelper || bIMEModeForced)) { | |
652 | + if ((hForeWnd = GetForegroundWindow()) == NULL) return; | |
653 | + DWORD dwBeforeIMEMode = Cime->dwIMEMode(hForeWnd, FALSE); | |
654 | + if (dwBeforeIMEMode == IMEOFF) { | |
655 | + if (bForExplorerPatcherSWS(hForeWnd, TRUE, TRUE, &hNewHKL, &hPreviousHKL)) { | |
656 | + if ((hPreviousHKL != JP_IME) && (hNewHKL == JP_IME)) { | |
657 | + Cime->vIMEOpenCloseForced(hForeWnd, IMECLOSE); | |
658 | + Sleep(50); | |
659 | + Cime->vIMEOpenCloseForced(hForeWnd, IMEOPEN); | |
660 | + } | |
661 | + else { | |
637 | 662 | Cime->vIMEOpenCloseForced(hForeWnd, IMEOPEN); |
638 | 663 | } |
639 | 664 | } |
@@ -641,19 +666,22 @@ static void Cls_OnSysKeyDownUpEx(HWND hWnd, UINT vk, BOOL fDown, int cRepeat, UI | ||
641 | 666 | } |
642 | 667 | break; |
643 | 668 | case KEY_NONCONVERT: // JP(IME/ENG) 無変換 (0x1d) |
644 | - bIMEInConverting = FALSE; | |
669 | + if (bIMEInConverting) { | |
670 | + return; | |
671 | + } | |
645 | 672 | if (bEnableEPHelper || bIMEModeForced) { |
646 | - if (bForExplorerPatcherSWS(hForeWnd, TRUE, bIMEModeForced, &hNewHKL, &hPreviousHKL)) { | |
647 | - if ((hPreviousHKL != JP_IME) && (hNewHKL == JP_IME)) { | |
648 | - if (((UINT64)hPreviousHKL & LANG_MASK) != LANG_IME) { | |
649 | - PostMessage(hWnd, WM_SYSKEYDOWNUPEX, KEY_OEM_PA1, (0x80000000)); | |
650 | - } | |
651 | - else { | |
652 | - Cime->vIMEOpenCloseForced(hForeWnd, IMECLOSE); | |
673 | + if ((hForeWnd = GetForegroundWindow()) == NULL) return; | |
674 | + DWORD dwBeforeIMEMode = Cime->dwIMEMode(hForeWnd, FALSE); | |
675 | + if (dwBeforeIMEMode != IMEOFF) { | |
676 | + if (bForExplorerPatcherSWS(hForeWnd, TRUE, FALSE, &hNewHKL, &hPreviousHKL)) { | |
677 | + if ((hPreviousHKL != JP_IME) && (hNewHKL == JP_IME)) { | |
678 | + if (((UINT64)hPreviousHKL & LANG_MASK) != LANG_IME) { | |
679 | + PostMessage(hWnd, WM_SYSKEYDOWNUPEX, KEY_OEM_PA1, (0x80000000)); | |
680 | + } | |
653 | 681 | } |
654 | 682 | } |
655 | 683 | else { |
656 | - if ((bIMEModeForced != FALSE) && (!Cime->bIsNewIME())) { | |
684 | + if ((dwBeforeIMEMode != IMEOFF)) { | |
657 | 685 | Cime->vIMEOpenCloseForced(hForeWnd, IMECLOSE); |
658 | 686 | } |
659 | 687 | } |
@@ -663,9 +691,12 @@ static void Cls_OnSysKeyDownUpEx(HWND hWnd, UINT vk, BOOL fDown, int cRepeat, UI | ||
663 | 691 | case KEY_OEM_3: // JP(IME/ENG) [@] / US(ENG) IME ON (0xc0) = ['] ALT + 半角/全角 or 漢字 |
664 | 692 | case KEY_OEM_8: // JP(IME/ENG) [`] / UK(ENG) IME ON (0xdf) = ['] ALT + 半角/全角 or 漢字 |
665 | 693 | if (!bKBisEP()) return; |
666 | - if (bIMEInConverting) return; | |
694 | + if (bIMEInConverting) { | |
695 | + return; | |
696 | + } | |
667 | 697 | if (bEnableEPHelper || bIMEModeForced) { |
668 | - if (bForExplorerPatcherSWS(hForeWnd, TRUE, bIMEModeForced, &hNewHKL, &hPreviousHKL)) { | |
698 | + if ((hForeWnd = GetForegroundWindow()) == NULL) return; | |
699 | + if (bForExplorerPatcherSWS(hForeWnd, TRUE, TRUE, &hNewHKL, &hPreviousHKL)) { | |
669 | 700 | if ((hPreviousHKL != JP_IME) && (hNewHKL == JP_IME)) { |
670 | 701 | Cime->vIMEOpenCloseForced(hForeWnd, IMEOPEN); |
671 | 702 | } |
@@ -675,24 +706,33 @@ static void Cls_OnSysKeyDownUpEx(HWND hWnd, UINT vk, BOOL fDown, int cRepeat, UI | ||
675 | 706 | } |
676 | 707 | } |
677 | 708 | break; |
678 | - return; | |
679 | 709 | case KEY_OEM_PA1: // US(ENG) 無変換 (0xeb) |
680 | - bIMEInConverting = FALSE; | |
710 | + if (bIMEInConverting) { | |
711 | + return; | |
712 | + } | |
681 | 713 | if (bEnableEPHelper || bIMEModeForced) { |
682 | - if (bForExplorerPatcherSWS(hForeWnd, TRUE, bIMEModeForced, &hNewHKL, &hPreviousHKL)) { | |
683 | - Cime->vIMEOpenCloseForced(hForeWnd, IMECLOSE); | |
714 | + if ((hForeWnd = GetForegroundWindow()) == NULL) return; | |
715 | + DWORD dwBeforeIMEMode = Cime->dwIMEMode(hForeWnd, FALSE); | |
716 | + if (dwBeforeIMEMode != IMEOFF) { | |
717 | + if (bForExplorerPatcherSWS(hForeWnd, TRUE, TRUE, &hNewHKL, &hPreviousHKL)) { | |
718 | + Cime->vIMEOpenCloseForced(hForeWnd, IMECLOSE); | |
719 | + } | |
684 | 720 | } |
685 | 721 | } |
686 | 722 | break; |
687 | 723 | case KEY_OEM_ATTN: // JP(IME/ENG) 英数/CapsLock(0xf0) |
688 | - if (bIMEInConverting) return; | |
724 | + if (bIMEInConverting) { | |
725 | + return; | |
726 | + } | |
689 | 727 | if (bEnableEPHelper || bIMEModeForced) { |
690 | - if (bForExplorerPatcherSWS(hForeWnd, TRUE, bIMEModeForced, &hNewHKL, &hPreviousHKL)) { | |
691 | - if ((hPreviousHKL != JP_IME) && (hNewHKL == JP_IME)) { | |
692 | - Cime->vIMEOpenCloseForced(hForeWnd, IMECLOSE); | |
693 | - } | |
694 | - else { | |
695 | - if ((bIMEModeForced != FALSE) && (!Cime->bIsNewIME())) { | |
728 | + if ((hForeWnd = GetForegroundWindow()) == NULL) return; | |
729 | + DWORD dwBeforeIMEMode = Cime->dwIMEMode(hForeWnd, FALSE); | |
730 | + if (dwBeforeIMEMode != IMEOFF) { | |
731 | + if (bForExplorerPatcherSWS(hForeWnd, TRUE, TRUE, &hNewHKL, &hPreviousHKL)) { | |
732 | + if ((hPreviousHKL != JP_IME) && (hNewHKL == JP_IME)) { | |
733 | + Cime->vIMEOpenCloseForced(hForeWnd, IMECLOSE); | |
734 | + } | |
735 | + else { | |
696 | 736 | Cime->vIMEOpenCloseForced(hForeWnd, IMECLOSE); |
697 | 737 | } |
698 | 738 | } |
@@ -700,72 +740,90 @@ static void Cls_OnSysKeyDownUpEx(HWND hWnd, UINT vk, BOOL fDown, int cRepeat, UI | ||
700 | 740 | } |
701 | 741 | break; |
702 | 742 | case KEY_OEM_FINISH: // JP(IME/ENG) OEM カタカナ (0xf1) |
703 | - if (bIMEInConverting) return; | |
743 | + if (bIMEInConverting) { | |
744 | + return; | |
745 | + } | |
704 | 746 | if (bEnableEPHelper || bIMEModeForced) { |
705 | - if (bForExplorerPatcherSWS(hForeWnd, bIMEModeForced, TRUE, &hNewHKL, &hPreviousHKL)) { | |
747 | + if ((hForeWnd = GetForegroundWindow()) == NULL) return; | |
748 | + if (bForExplorerPatcherSWS(hForeWnd, TRUE, TRUE, &hNewHKL, &hPreviousHKL)) { | |
706 | 749 | if ((hPreviousHKL != JP_IME) && (hNewHKL == JP_IME)) { |
750 | + Cime->vIMEOpenCloseForced(hForeWnd, IMECLOSE); | |
751 | + Sleep(50); | |
707 | 752 | Cime->vIMEConvertModeChangeForced(hForeWnd, ZENKANA_IMEON); |
708 | 753 | } |
709 | 754 | else { |
710 | - if ((bIMEModeForced != FALSE) && (!Cime->bIsNewIME())) { | |
711 | - Cime->vIMEConvertModeChangeForced(hForeWnd, ZENKANA_IMEON); | |
712 | - } | |
755 | + Cime->vIMEConvertModeChangeForced(hForeWnd, ZENKANA_IMEON); | |
713 | 756 | } |
714 | 757 | } |
715 | 758 | } |
716 | 759 | break; |
717 | 760 | case KEY_OEM_COPY: // JP(IME/ENG) OEM ひらがな (0xf2) |
718 | - if (bIMEInConverting) return; | |
761 | + if (bIMEInConverting) { | |
762 | + return; | |
763 | + } | |
719 | 764 | if (bEnableEPHelper || bIMEModeForced) { |
720 | - if (bForExplorerPatcherSWS(hForeWnd, bIMEModeForced, TRUE, &hNewHKL, &hPreviousHKL)) { | |
765 | + if ((hForeWnd = GetForegroundWindow()) == NULL) return; | |
766 | + if (bForExplorerPatcherSWS(hForeWnd, TRUE, TRUE, &hNewHKL, &hPreviousHKL)) { | |
721 | 767 | if ((hPreviousHKL != JP_IME) && (hNewHKL == JP_IME)) { |
768 | + Cime->vIMEOpenCloseForced(hForeWnd, IMECLOSE); | |
769 | + Sleep(50); | |
722 | 770 | Cime->vIMEConvertModeChangeForced(hForeWnd, ZENHIRA_IMEON); |
723 | 771 | } |
724 | 772 | else { |
725 | - if ((bIMEModeForced != FALSE) && (!Cime->bIsNewIME())) { | |
726 | - Cime->vIMEConvertModeChangeForced(hForeWnd, ZENHIRA_IMEON); | |
727 | - } | |
773 | + Cime->vIMEConvertModeChangeForced(hForeWnd, ZENHIRA_IMEON); | |
728 | 774 | } |
729 | 775 | } |
730 | 776 | } |
731 | 777 | break; |
732 | - case KEY_OEM_IME_OFF: // JP(IME/ENG) IME OFF | |
733 | - bIMEInConverting = FALSE; | |
778 | + case KEY_OEM_IME_OFF: // JP(IME/ENG) IME OFF (0xf3) | |
779 | + if (bIMEInConverting) { | |
780 | + return; | |
781 | + } | |
734 | 782 | if (bEnableEPHelper || bIMEModeForced) { |
783 | + if ((hForeWnd = GetForegroundWindow()) == NULL) return; | |
735 | 784 | DWORD dwBeforeIMEMode = Cime->dwIMEMode(hForeWnd, FALSE); |
736 | - if (bForExplorerPatcherSWS(hForeWnd, bIMEModeForced, TRUE, &hNewHKL, &hPreviousHKL)) { | |
785 | + if (bForExplorerPatcherSWS(hForeWnd, TRUE, TRUE, &hNewHKL, &hPreviousHKL)) { | |
737 | 786 | if ((hPreviousHKL != JP_IME) && (hNewHKL == JP_IME)) { |
738 | 787 | if (dwBeforeIMEMode == IMEOFF) { |
739 | 788 | Cime->vIMEOpenCloseForced(hForeWnd, IMEOPEN); |
740 | 789 | } |
790 | + else { | |
791 | + Cime->vIMEOpenCloseForced(hForeWnd, IMECLOSE); | |
792 | + } | |
741 | 793 | } |
742 | 794 | else { |
743 | - if ((bIMEModeForced != FALSE) && (!Cime->bIsNewIME())) { | |
744 | - if (dwBeforeIMEMode != IMEOFF) { | |
745 | - Cime->vIMEOpenCloseForced(hForeWnd, IMECLOSE); | |
746 | - } | |
795 | + if (dwBeforeIMEMode != IMEOFF) { | |
796 | + Cime->vIMEOpenCloseForced(hForeWnd, IMECLOSE); | |
797 | + } | |
798 | + else { | |
799 | + Cime->vIMEOpenCloseForced(hForeWnd, IMEOPEN); | |
747 | 800 | } |
748 | 801 | } |
749 | 802 | } |
750 | 803 | } |
751 | 804 | break; |
752 | - case KEY_OEM_IME_ON: // JP(IME/ENG) IME ON | |
753 | - bIMEInConverting = FALSE; | |
805 | + case KEY_OEM_IME_ON: // JP(IME/ENG) IME ON (0xf4) | |
806 | + if (bIMEInConverting) { | |
807 | + return; | |
808 | + } | |
754 | 809 | if (bEnableEPHelper || bIMEModeForced) { |
810 | + if ((hForeWnd = GetForegroundWindow()) == NULL) return; | |
755 | 811 | DWORD dwBeforeIMEMode = Cime->dwIMEMode(hForeWnd, FALSE); |
756 | - if (bForExplorerPatcherSWS(GetForegroundWindow(), bIMEModeForced, TRUE, &hNewHKL, &hPreviousHKL)) { | |
812 | + if (bForExplorerPatcherSWS(hForeWnd, TRUE, TRUE, &hNewHKL, &hPreviousHKL)) { | |
757 | 813 | if ((hPreviousHKL != JP_IME) && (hNewHKL == JP_IME)) { |
758 | - if ((bIMEModeForced != FALSE) && (!Cime->bIsNewIME())) { | |
759 | - if (dwBeforeIMEMode == IMEOFF) { | |
760 | - Cime->vIMEOpenCloseForced(hForeWnd, IMEOPEN); | |
761 | - } | |
814 | + if (dwBeforeIMEMode == IMEOFF) { | |
815 | + Cime->vIMEOpenCloseForced(hForeWnd, IMEOPEN); | |
816 | + } | |
817 | + else { | |
818 | + Cime->vIMEOpenCloseForced(hForeWnd, IMECLOSE); | |
762 | 819 | } |
763 | 820 | } |
764 | 821 | else { |
765 | - if ((bIMEModeForced != FALSE) && (!Cime->bIsNewIME())) { | |
766 | - if (dwBeforeIMEMode != IMEOFF) { | |
767 | - Cime->vIMEOpenCloseForced(hForeWnd, IMECLOSE); | |
768 | - } | |
822 | + if (dwBeforeIMEMode != IMEOFF) { | |
823 | + Cime->vIMEOpenCloseForced(hForeWnd, IMECLOSE); | |
824 | + } | |
825 | + else { | |
826 | + Cime->vIMEOpenCloseForced(hForeWnd, IMEOPEN); | |
769 | 827 | } |
770 | 828 | } |
771 | 829 | } |
@@ -773,10 +831,13 @@ static void Cls_OnSysKeyDownUpEx(HWND hWnd, UINT vk, BOOL fDown, int cRepeat, UI | ||
773 | 831 | break; |
774 | 832 | case KEY_OEM_BACKTAB: // OEM Alt+カタカナ/ひらがな (0xf5) |
775 | 833 | case KEY_FF: // US(ENG) 変換/ひら/カタ (0xff) |
776 | - bIMEInConverting = FALSE; | |
834 | + if (bIMEInConverting) { | |
835 | + return; | |
836 | + } | |
777 | 837 | if (bEnableEPHelper || bIMEModeForced) { |
838 | + if ((hForeWnd = GetForegroundWindow()) == NULL) return; | |
778 | 839 | SetFocus(hForeWnd); |
779 | - if (bForExplorerPatcherSWS(hForeWnd, TRUE, bIMEModeForced, &hNewHKL, &hPreviousHKL)) { | |
840 | + if (bForExplorerPatcherSWS(hForeWnd, TRUE, TRUE, &hNewHKL, &hPreviousHKL)) { | |
780 | 841 | if ((hPreviousHKL != JP_IME) && (hNewHKL == JP_IME)) { |
781 | 842 | Cime->vIMEOpenCloseForced(hForeWnd, IMEOPEN); |
782 | 843 | } |
@@ -806,7 +867,7 @@ static void Cls_OnSysKeyDownUpEx(HWND hWnd, UINT vk, BOOL fDown, int cRepeat, UI | ||
806 | 867 | } |
807 | 868 | HWND hWndObserved = NULL; |
808 | 869 | if (bDisplayFocusWindowIME) { |
809 | - hWndObserved = hForeWnd; | |
870 | + if ((hWndObserved = GetForegroundWindow()) == NULL) return; | |
810 | 871 | } |
811 | 872 | else { |
812 | 873 | POINT pt{}; |
@@ -898,8 +959,6 @@ BOOL bForExplorerPatcherSWS(HWND hForeWnd, BOOL bChangeToIME, BOOL bIMEModeForc | ||
898 | 959 | if ((bChangeToIME && (hkl != JP_IME)) || (hkl == US_ENG) || bIMEModeForcedChange) { |
899 | 960 | hkl = JP_IME; |
900 | 961 | if (ActivateKeyboardLayout(hkl, (KLF_SETFORPROCESS | KLF_REORDER)) != 0) { |
901 | - //EnumChildWindows(hForeWnd, &bEnumChildProcChangeHKL, (LPARAM)hkl); | |
902 | - //Cime->vActivateIME(hForeWnd); | |
903 | 962 | if ((hkl = GetKeyboardLayout(dwThreadID)) != NULL) { // Re Check |
904 | 963 | if (hkl != JP_IME) { |
905 | 964 | if (bChangeHKLbySendInput(JP_IME, hkl)) { |
@@ -942,10 +1001,8 @@ BOOL bChangeHKLbySendInput(HKL hNewHKL, HKL hPreviousHKL) | ||
942 | 1001 | if (lpHKL[i] == hPreviousHKL) iPreviousKB = i; |
943 | 1002 | if (lpHKL[i] == hNewHKL) iNewKB = i; |
944 | 1003 | } |
945 | - while (GetAsyncKeyState(VK_SHIFT) & 0x8000) { | |
946 | - Sleep(1); | |
947 | - } | |
948 | 1004 | int iKB = iKBList - iPreviousKB + iNewKB; |
1005 | + if ((GetAsyncKeyState(VK_SHIFT) & 0x8000)) iKB = iKBList - iKB; | |
949 | 1006 | if (iNewKB != iPreviousKB) { |
950 | 1007 | LPINPUT lpInputs = NULL; |
951 | 1008 | if ((lpInputs = new INPUT[sizeof(INPUT) * (iKB * 2 + 2)]) != NULL) { |
@@ -32,7 +32,7 @@ private: | ||
32 | 32 | |
33 | 33 | public: |
34 | 34 | HMODULE hLoad(); |
35 | - BOOL bUnload(); | |
35 | + BOOL bUnload(); | |
36 | 36 | |
37 | 37 | private: |
38 | 38 | LPTSTR szResFile; |
@@ -44,7 +44,7 @@ private: | ||
44 | 44 | // |
45 | 45 | // Global Prototype Define |
46 | 46 | // |
47 | -extern BOOL bWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance); | |
47 | +extern BOOL bWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, int nCmdShow); | |
48 | 48 | extern VOID vDestroyWindow(HWND hWnd); |
49 | 49 | extern BOOL bStartThreadHookTimer(HWND hWnd); |
50 | 50 | extern VOID vStopThreadHookTimer(HWND hWnd); |
@@ -55,10 +55,10 @@ extern BOOL bCheckExistingJPIME(); | ||
55 | 55 | // |
56 | 56 | // Global Data |
57 | 57 | // |
58 | -extern TCHAR szFlushMouseDLL[]; | |
59 | -extern TCHAR szFlushMouse32[]; | |
58 | +extern TCHAR szFlushMouseDLL[]; | |
59 | +extern TCHAR szFlushMouse32[]; | |
60 | 60 | |
61 | -extern TCHAR szTitle[]; | |
61 | +extern TCHAR szTitle[]; | |
62 | 62 | extern HWND hMainWnd; |
63 | 63 | |
64 | 64 | extern BOOL bOffChangedFocus; |
@@ -74,7 +74,7 @@ extern BOOL bIMEModeForced; | ||
74 | 74 | |
75 | 75 | extern CProfile *Profile; |
76 | 76 | extern CCursor *Cursor; |
77 | -extern CResource *Resource; | |
77 | +extern CResource *Resource; | |
78 | 78 | extern CIME *Cime; |
79 | 79 | |
80 | 80 | /* = EOF = */ |
\ No newline at end of file |
@@ -17,6 +17,7 @@ | ||
17 | 17 | #include "CommonDef.h" |
18 | 18 | #include "..\FlushMouseDLL\ShellHookDll.h" |
19 | 19 | #include "..\FlushMouseDLL\GlobalHookDll.h" |
20 | +#include "..\FlushMouseDLL\MouseHookDll.h" | |
20 | 21 | #include "..\FlushMouseDLL\KeyboardHookDll.h" |
21 | 22 | #include "..\FlushMouseDLL\EventlogDll.h" |
22 | 23 | #include "..\FlushMouseDLL32\FlushMouseDll32.h" |
@@ -44,6 +45,7 @@ | ||
44 | 45 | // |
45 | 46 | CPowerNotification::CPowerNotification(HWND hWnd) |
46 | 47 | { |
48 | + guidPowerSettingNotification = GUID_NULL; | |
47 | 49 | if ((hSuspendResumeNotification = RegisterSuspendResumeNotification(hWnd, DEVICE_NOTIFY_WINDOW_HANDLE)) == NULL) { |
48 | 50 | } |
49 | 51 | if ((hPowerSettingNotification = RegisterPowerSettingNotification(hWnd, &guidPowerSettingNotification, DEVICE_NOTIFY_WINDOW_HANDLE)) == NULL) { |
@@ -83,7 +85,9 @@ BOOL CPowerNotification::PowerBroadcast(HWND hWnd, ULONG Type, POWERBROADCAST_S | ||
83 | 85 | bReportEvent(MSG_PBT_APMRESUMEAUTOMATIC, POWERNOTIFICATION_CATEGORY); |
84 | 86 | break; |
85 | 87 | case PBT_APMRESUMESUSPEND: |
88 | + bDestroyTaskTrayWindow(hWnd); | |
86 | 89 | bReportEvent(MSG_PBT_APMRESUMESUSPEND, POWERNOTIFICATION_CATEGORY); |
90 | + PostMessage(hWnd, WM_DESTROY, (WPARAM)NULL, (LPARAM)NULL); | |
87 | 91 | break; |
88 | 92 | case PBT_POWERSETTINGCHANGE: |
89 | 93 | bReportEvent(MSG_PBT_POWERSETTINGCHANGE, POWERNOTIFICATION_CATEGORY); |
@@ -298,7 +302,7 @@ BOOL CFlushMouseHook::bHookUnset() | ||
298 | 302 | BOOL CFlushMouseHook::bHook32DllStart(HWND hWnd, LPCTSTR lpszExec32Name) |
299 | 303 | { |
300 | 304 | #define COMAMANDLINESIZE (sizeof(_T(" ")) * (sizeof(unsigned long long) + 1)) |
301 | - BOOL bRet = FALSE; | |
305 | + BOOL bRet = FALSE; | |
302 | 306 | DWORD dwSize = 0; |
303 | 307 | dwSize = ExpandEnvironmentStrings(lpszExec32Name, NULL, 0); |
304 | 308 | LPTSTR lpszBuffer = new TCHAR[dwSize]; |
@@ -42,8 +42,6 @@ CIME::CIME() | ||
42 | 42 | { |
43 | 43 | lpstVirtualDesktop = new VIRTUALDESKTOP[sizeof(VIRTUALDESKTOP)]; |
44 | 44 | if (lpstVirtualDesktop != NULL) { |
45 | - ZeroMemory(lpstVirtualDesktop, sizeof(VIRTUALDESKTOP)); | |
46 | - bGetVirtualDesktopSize(); | |
47 | 45 | } |
48 | 46 | } |
49 | 47 | CIME::~CIME() |
@@ -3,8 +3,8 @@ | ||
3 | 3 | // |
4 | 4 | // No. Date Name Reason & Document |
5 | 5 | // -------+-----------+-----------+-------------------------------------------- - |
6 | -// #0000 2022/03/12 JeffyTS New edit. | |
7 | -// #0001 2023/06/30 JeffyTS Divided from cursor.h | |
6 | +// #0000 2022/03/12 JeffyTS New edit. | |
7 | +// #0001 2023/06/30 JeffyTS Divided from cursor.h | |
8 | 8 | |
9 | 9 | // |
10 | 10 | // Include |
@@ -18,22 +18,22 @@ | ||
18 | 18 | #define IMEMODECHAR 3 |
19 | 19 | |
20 | 20 | // IME mode |
21 | -#define IMECLOSE 0x0000 | |
21 | +#define IMECLOSE 0x0000 | |
22 | 22 | #define IMEOPEN 0x0001 |
23 | -#define IMEOFF (IME_CMODE_ALPHANUMERIC) // 0x00 : A 英数(直接入力) | |
23 | +#define IMEOFF (IME_CMODE_ALPHANUMERIC) // 0x00 : A 英数(直接入力) | |
24 | 24 | #define HANEISU_IMEON (IME_CMODE_ROMAN | IME_CMODE_ALPHANUMERIC) // 0x10 :_A 半角英数 0001 0000 |
25 | 25 | #define HANKANA_IMEON (IME_CMODE_ROMAN | IME_CMODE_KATAKANA | IME_CMODE_NATIVE) // 0x13 :_カ 半角カナ 0001 0011 |
26 | 26 | #define ZENEISU_IMEON (IME_CMODE_ROMAN | IME_CMODE_FULLSHAPE) // 0x18 :A 全角英数 0001 1000 |
27 | 27 | #define ZENHIRA_IMEON (IME_CMODE_ROMAN | IME_CMODE_FULLSHAPE | IME_CMODE_NATIVE) // 0x19 :あ 全角ひら 0001 1001(漢字変換モード) |
28 | 28 | #define ZENKANA_IMEON (IME_CMODE_ROMAN | IME_CMODE_FULLSHAPE | IME_CMODE_KATAKANA | IME_CMODE_NATIVE) // 0x1B :カ 全角カナ 0001 1011 |
29 | -#define IMEHIDE (0x88) // 0x88 :■ Hide 1001 1000 | |
29 | +#define IMEHIDE (0x88) // 0x88 :■ Hide 1000 1000 | |
30 | 30 | |
31 | 31 | // |
32 | 32 | // Struct Define |
33 | 33 | // |
34 | 34 | typedef struct tagVirtualDesktop |
35 | 35 | { |
36 | - RECT rcMonitorSize; | |
36 | + RECT rcMonitorSize; | |
37 | 37 | int iNumOfMonitors; |
38 | 38 | } VIRTUALDESKTOP, * PVIRTUALDESKTOP, * LPVIRTUALDESKTOP; |
39 | 39 |
@@ -47,18 +47,18 @@ public: | ||
47 | 47 | ~CIME(); |
48 | 48 | |
49 | 49 | public: |
50 | - BOOL bIsIMEOpen(HWND hWndObserved); | |
51 | - VOID vIMEOpenCloseForced(HWND hWndObserved, DWORD dwIMEOpenClose); | |
52 | - VOID vIMEConvertModeChangeForced(HWND hWndObserved, DWORD dwConvertMode); | |
50 | + BOOL bIsIMEOpen(HWND hWndObserved); | |
51 | + VOID vIMEOpenCloseForced(HWND hWndObserved, DWORD dwIMEOpenClose); | |
52 | + VOID vIMEConvertModeChangeForced(HWND hWndObserved, DWORD dwConvertMode); | |
53 | 53 | DWORD dwIMEMode(HWND hWndObserved, BOOL bForceHiragana); |
54 | - VOID vActivateIME(HWND hWndObserved); | |
55 | - BOOL bGetVirtualDesktopSize(); | |
56 | - BOOL bIsNewIME(); | |
54 | + VOID vActivateIME(HWND hWndObserved); | |
55 | + BOOL bGetVirtualDesktopSize(); | |
56 | + BOOL bIsNewIME(); | |
57 | 57 | DWORD dwGetInputLocale(); |
58 | 58 | HKL hklGetInputLocale(HWND hWndObserved); |
59 | 59 | |
60 | 60 | private: |
61 | - static BOOL bGetVirtualDesktopSizeEnumProc(HMONITOR hMonitor, HDC hDC, LPCRECT lprcClip, LPARAM lParam); | |
61 | + static BOOL bGetVirtualDesktopSizeEnumProc(HMONITOR hMonitor, HDC hDC, LPCRECT lprcClip, LPARAM lParam); | |
62 | 62 | |
63 | 63 | static BOOL CALLBACK bEnumChildProcIMEOpenClose(HWND hWnd, LPARAM lParam); |
64 | 64 | static BOOL CALLBACK bEnumChildProcIMEConvertMode(HWND hWnd, LPARAM lParam); |
@@ -4,8 +4,8 @@ | ||
4 | 4 | // |
5 | 5 | // No. Date Name Reason & Document |
6 | 6 | // -------+-----------+-----------+-------------------------------------------- - |
7 | -// #0000 2022/03/03 JeffyTS New edit. | |
8 | -// #0001 2023/06/30 JeffyTS Divided from FlushMouseSub.cpp | |
7 | +// #0000 2022/03/03 JeffyTS New edit. | |
8 | +// #0001 2023/06/30 JeffyTS Divided from FlushMouseSub.cpp | |
9 | 9 | // |
10 | 10 | |
11 | 11 | // Include |
@@ -51,7 +51,7 @@ static BOOL bInitDlgCenter(HWND hDlg, HICON hIcon, DWORD dwICC); | ||
51 | 51 | static BOOL bSetCheckDlgButton(HWND hDlg, int iIDButton, BOOL bCheck); |
52 | 52 | static VOID vSetTrackbar(HWND hDlg, int iIDTrackbar, int iRangeMin, int iRangeMax, int iTickFreq, int iPos, int iPageSize); |
53 | 53 | static BOOL bGetDlgButtonChecked(HWND hDlg, int iIDButton); |
54 | -static DWORD dwGetTrackbarPos(HWND hDlg, int iIDTrackbar); | |
54 | +static DWORD dwGetTrackbarPos(HWND hDlg, int iIDTrackbar); | |
55 | 55 | |
56 | 56 | // |
57 | 57 | // bCreateTaskTrayWindow() |
@@ -69,9 +69,6 @@ BOOL bCreateTaskTrayWindow(HWND hWnd, HICON hIcon, LPCTSTR lpszTitle) | ||
69 | 69 | nIco.dwInfoFlags = NIIF_USER | NIIF_LARGE_ICON | NIIF_NOSOUND; |
70 | 70 | nIco.uVersion = NOTIFYICON_VERSION_4; |
71 | 71 | nIco.hIcon = hIcon; |
72 | - if ((nIco.hIcon = LoadIcon(Resource->hLoad(), MAKEINTRESOURCE(IDI_FLUSHMOUSE))) == NULL) { | |
73 | - return FALSE; | |
74 | - } | |
75 | 72 | _tcsncpy_s(nIco.szTip, ARRAYSIZE(nIco.szTip), lpszTitle, _TRUNCATE); |
76 | 73 | try { |
77 | 74 | throw Shell_NotifyIcon(NIM_ADD, &nIco); |
@@ -231,7 +228,6 @@ void Cls_OnTaskTrayEx(HWND hWnd, UINT id, UINT uMsg) | ||
231 | 228 | Cime->vIMEOpenCloseForced(hWnd, IMECLOSE); |
232 | 229 | } |
233 | 230 | [[fallthrough]]; |
234 | - //break; | |
235 | 231 | case WM_RBUTTONDOWN: |
236 | 232 | bDisplayIMEModeOnCursor = FALSE; |
237 | 233 | bDoModeDispByMouseBttnUp = FALSE; |
@@ -246,7 +242,7 @@ void Cls_OnTaskTrayEx(HWND hWnd, UINT id, UINT uMsg) | ||
246 | 242 | stAppBarData.cbSize = sizeof(APPBARDATA); |
247 | 243 | stAppBarData.hWnd = hWnd; |
248 | 244 | SHAppBarMessage(ABM_GETTASKBARPOS, &stAppBarData); |
249 | - UINT uFlags = 0; | |
245 | + UINT uFlags = 0; | |
250 | 246 | switch (stAppBarData.uEdge) { |
251 | 247 | case ABE_TOP: |
252 | 248 | uFlags = TPM_RIGHTALIGN | TPM_TOPALIGN; |
@@ -268,6 +264,7 @@ void Cls_OnTaskTrayEx(HWND hWnd, UINT id, UINT uMsg) | ||
268 | 264 | TrackPopupMenu(hSubMenu, uFlags, pt.x, pt.y, 0, hWnd, NULL); |
269 | 265 | break; |
270 | 266 | } |
267 | + return; | |
271 | 268 | } |
272 | 269 | |
273 | 270 | // |
@@ -296,7 +293,7 @@ static INT_PTR CALLBACK SettingDlg(HWND hDlg, UINT message, WPARAM wParam, LPARA | ||
296 | 293 | bInitDlgCenter(hDlg, hIcon, (ICC_BAR_CLASSES | ICC_HOTKEY_CLASS)); |
297 | 294 | } |
298 | 295 | { |
299 | - TCHAR lpText[MAX_LOADSTRING]; | |
296 | + TCHAR lpText[MAX_LOADSTRING]; | |
300 | 297 | if (LoadString(Resource->hLoad(), IDS_CMBX_LIST01, lpText, MAX_LOADSTRING) == 0) return (INT_PTR)FALSE; |
301 | 298 | SendDlgItemMessage(hDlg, IDC_COMBO1, CB_ADDSTRING, 0, (LPARAM)lpText); |
302 | 299 | if (LoadString(Resource->hLoad(), IDS_CMBX_LIST02, lpText, MAX_LOADSTRING) == 0) return (INT_PTR)FALSE; |
@@ -4,8 +4,8 @@ | ||
4 | 4 | // |
5 | 5 | // No. Date Name Reason & Document |
6 | 6 | // -------+-----------+-----------+-------------------------------------------- - |
7 | -// #0000 2022/03/03 JeffyTS New edit. | |
8 | -// #0001 2023/06/30 JeffyTS Divided from FlushMouseSub.h | |
7 | +// #0000 2022/03/03 JeffyTS New edit. | |
8 | +// #0001 2023/06/30 JeffyTS Divided from FlushMouseSub.h | |
9 | 9 | |
10 | 10 | // |
11 | 11 | // Include |
@@ -23,7 +23,7 @@ extern BOOL bIMEInConverting; | ||
23 | 23 | // |
24 | 24 | // Global Prototype Define |
25 | 25 | // |
26 | -extern BOOL bCreateTaskTrayWindow(HWND hWnd, HICON hIcon, LPCTSTR lpszTitile); | |
26 | +extern BOOL bCreateTaskTrayWindow(HWND hWnd, HICON hIcon, LPCTSTR lpszTitile); | |
27 | 27 | extern BOOL bReCreateTaskTrayWindow(HWND hWnd, UINT message); |
28 | 28 | extern BOOL bDestroyTaskTrayWindow(HWND hWnd); |
29 | 29 | extern BOOL bGetTaskTrayWindowRect(HWND hWnd, LPRECT lpRect); |
@@ -2,7 +2,7 @@ | ||
2 | 2 | |
3 | 3 | [[RepositoryInfo]] |
4 | 4 | |
5 | -||[[Thumb(FlushMouse.png, size=48x48)]]||'''[[ProjectDescription]](タスクトレイに常駐して、マウスカーソルへIMEモードの表示をするユーティリティです)[[BR]]FlushMouse is a software developed by JeffyTS . It is a mouse gesture tool that allows you to perform various operations by drawing gestures with your mouse . (by Bing)'''|| | |
5 | +||[[Thumb(FlushMouse.png, size=48x48)]]||'''[[ProjectDescription]](システムトレイ(タスクトレイ)に常駐して、マウスカーソルへIMEモードの表示をするユーティリティです)[[BR]]FlushMouse is a software developed by JeffyTS . It is a mouse gesture tool that allows you to perform various operations by drawing gestures with your mouse . (by Bing)'''|| | |
6 | 6 | |
7 | 7 | [[BR]] |
8 | 8 |
@@ -5,10 +5,11 @@ | ||
5 | 5 | |
6 | 6 | #### リリース情報 |
7 | 7 | |
8 | -* **2023/08/06 Version 1.1.6.5 をリリースしました** | |
8 | +* **2023/08/24 Version 1.1.7.24 をリリースしました** | |
9 | 9 | |
10 | 10 | * **(主な変更点)** |
11 | - * TABキーやEnterキーでもIMEモードを表示するようにしました | |
11 | + * マウスクリックでIMEモードを表示しないことがあるバグを修正しました | |
12 | + * 漢字(半角 / 全角)キーを押したときの処理を見直しました | |
12 | 13 | * その他、軽微なバグを修正しました |
13 | 14 | |
14 | 15 | * 最近(2023/07以降)、[OSDN/FlushMouse](https://osdn.net/users/jeffyts/pf/FlushMouse/wiki/FrontPage) が、不安定なようですので、 [GitHub/FlushMouse](https://github.com/JeffyTS-JP/FlushMouse)の方をチェックしていただいたほうが良いかもしれません(どちらにも同じソースとバイナリを置くようにします) |
@@ -93,16 +94,17 @@ | ||
93 | 94 | * IME関連キーの動作は下記のようになります(IMEの設定でキーマップを変更している場合は異なることがあります) |
94 | 95 | * FlushMouse 動作時 (ExplorerPatcher Simple Window Switcher HelperをONにした場合) |
95 | 96 | * JA / IME の時は、英数、ひらがな、カタカナ(Shift + ひらがな)のみコントロールしています。その他は,Windowsのデフォルトの動作です (以前のバージョンの IMEを使用してキーマップを変更すると使いやすくなると思います) |
97 | + * JA / ENG の時、キーボードロケールを返さないアプリがあります。この場合は、前のIMEの状態に戻すことができません(これは制限事項となります) | |
96 | 98 | |
97 | 99 | |↓押下キー IMEの状態→| JA / IME | JA / ENG | US / ENG | |
98 | 100 | | :---: | :---: | :---: | :---: | |
99 | 101 | |半角 / 全角 (漢字) | あ / A |(前のIME ON状態) |(前のIME ON状態) | |
100 | -|無変換 | IME OFF | IME OFF | IME OFF | | |
102 | +|無変換 | IME OFF | - | IME OFF | | |
101 | 103 | |無変換(IME ONの状態から) | あ / ア / _ア |(前のIME ON状態) |(前のIME ON状態) | |
102 | 104 | |変換 |(前のIME ON状態) |(前のIME ON状態) |(前のIME ON状態) | |
103 | 105 | |ひらがな | あ |(前のIME ON状態) |(前のIME ON状態) | |
104 | 106 | |カタカナ (Shift + ひらがな)| カ |(前のIME ON状態) |(前のIME ON状態) | |
105 | -|英数 | A |(前のIME ON状態) |(前のIME ON状態) | | |
107 | +|英数 | A | - |(前のIME ON状態) | | |
106 | 108 | |
107 | 109 | * Windowsのデフォルト(参考) |
108 | 110 |
@@ -146,7 +148,8 @@ | ||
146 | 148 | 3. 次に、WiXを使用するために、Windowsの設定 -> アプリ -> オプション機能 -> Windowsのその他の機能 -> Windowsの機能の有効化または無効化 -> .NET Framework 3.5.1(.NET 2.0及び3.0を含む)にチェックを入れてOKを押して、インストール、再起動します |
147 | 149 | 4. [https://github.com/wixtoolset/wix3](https://github.com/wixtoolset/wix3) から、Wix311.exeをダウンロードしてインストールします |
148 | 150 | 5. Visual Studioを起動して 右下の「コードなし」で起動します |
149 | - 6. 拡張機能 -> 検索で WiXと入力し「 WiX v3 - Visual Studio 2022 Extension」を選択して、Visual Studioを終了するとインストールが始まります | |
151 | + 6. Tools -> Options -> Environment -> International Settings をクリックして、Languageを日本語にします | |
152 | + 7. 拡張機能 -> 検索で WiXと入力し「 WiX v3 - Visual Studio 2022 Extension」を選択して、Visual Studioを終了するとインストールが始まります | |
150 | 153 | |
151 | 154 | * ビルド方法です |
152 | 155 | 1. Visual Studioを起動して、リポジトリのクローン -> リポジトリの場所に [https://github.com/JeffyTS-JP/FlushMouse.git](https://github.com/JeffyTS-JP/FlushMouse.git) を入力してクローンします |
@@ -9,11 +9,11 @@ | ||
9 | 9 | |
10 | 10 | #define MAJOR_VERSION 1 |
11 | 11 | #define MINOR_VERSION 1 |
12 | -#define BUILD_VERSION 6 | |
13 | -#define REVISION_VERSION 0 | |
12 | +#define BUILD_VERSION 7 | |
13 | +#define REVISION_VERSION 24 | |
14 | 14 | |
15 | -#define FILE_VERSION_STRING VALUE "FileVersion", "1.1.6.0" | |
16 | -#define PRODUCT_VERSION_STRING VALUE "ProductVersion", "1.1.6.0" | |
15 | +#define FILE_VERSION_STRING VALUE "FileVersion", "1.1.7.24" | |
16 | +#define PRODUCT_VERSION_STRING VALUE "ProductVersion", "1.1.7.24" | |
17 | 17 | |
18 | 18 | #define FILE_VERSION MAJOR_VERSION, MINOR_VERSION, BUILD_VERSION, REVISION_VERSION |
19 | 19 | #define PRODUCT_VERSION MAJOR_VERSION, MINOR_VERSION, BUILD_VERSION, REVISION_VERSION |
@@ -1,7 +1,7 @@ | ||
1 | 1 | <Include> |
2 | 2 | <!-- for wix Setup Project --> |
3 | 3 | <!-- Copyright (C) 2023 JeffyTS --> |
4 | - <?define Version = "1.1.6.0" ?> | |
4 | + <?define Version = "1.1.7.24" ?> | |
5 | 5 | |
6 | 6 | <?define ProductName = "FlushMouse" ?> |
7 | 7 | <?define Manufacturer = "JeffyTS" ?> |