ãã£ã©ã¯ã¿ãŒãäœæããŠãã30ååŸïŒããã¯éåžžã«éèŠã§è²¬ä»»ã®ããåé¡ã§ãïŒïŒãå·Šæã¯ã»ãšãã©ããã€ã¹ãæ¡ãããå³æéŠã¯äžå¯©ã«åŒã£åŒµãå§ããŸããã ç¹å®ã®äººéå·¥åŠã«åºã¥ããæãããã¿åŒããŠã¹ã®éçºè ã«ãšã£ãŠè¯ãèšèã§ã¯
ãããã¯èŠã€ãããŸããã§ããã å¯äžã®åæ§ã®ãã©ã€ããŒãæ¯æãããè©Šçšã¢ãŒãã¯ãããŸããã§ããã ãã®ç¬éãç§ã¯é ã«æµ®ããã èããæãã€ããŸããïŒç§ã¯ä»ç解ããŠããŸãïŒïŒèã-ãçµå±ãããã€ãã®WM_TOUCHã確å®ã«æ¥ãŠãããã¯ééã£ãŠWM_MOUSEMOVEã«å€æãããŸãã...ãããŠéã³ãããç ãã
ãã£ãã¡ãªäººã®ããã«
ãããžã§ã¯ãã¯githubã§å
¥æã§ããŸãããœãŒã¹ãšãã€ããªããããŸãã ããã¯ãrundll32ãåçããããã®ã©ã³ãã£ãŒãšããŠäœ¿çšãããDLLãã¡ã€ã«ã§ãã 2æ¬ã®æã§æŒããšå³ã¯ãªãã¯ãã3æ¬ã®æã§æŒããšESCããŒãã·ãã¥ã¬ãŒãããŸã-ããã¯Arcanumã«ååã§ãã Fallout 2ã¯ããŒã¿ã¢ãŒãã§ãµããŒããããŠãããæé ã¯GitHubã«ãããŸãã ããã§å³ã¯ãªãã¯ããŠãæ©èœãããã«ãŒãœã«ã移åããããšããããŸããããããç»é¢ã®å·Šäžé
ã«ãã©ãã°ããããšã§ä¿®æ£ã§ããŸãã
Visual Studio 6.0
ã©ãããããããç§ã¯æ°å幎åã«Win32ã§ããã¯ããããã泚å°ã«ããããããŠããããšãå€æãããã®åŸãç§ã®äººçã§ãã®ããŒãžãéåžžã«åãã§éããŸããã ãããŠä»ãã30åãã¬ã€ããŠãããã¬ã€ãããããšã倢èŠãŠãå€ãããŒããã©ã€ããåãåºããããã€ãã®ãããžã§ã¯ããšç§ã®ãæ°ã«å ¥ãã®ããŒã«ã§ããVS98ãå¥åVisual Studio 6.0ãæžãçããŸããã ã¯ããç§ã¯åžžã«VS 2012ãW8ããã³WPã¢ãã€ã«ããã°ã©ã ã«äœ¿çšããŠããŸãããPlatform SDKãã©ã®ããã«èŠããããCïŒãŸãã¯C ++ã§äœã¬ãã«ã®ãã®ãã³ãŒãã£ã³ã°ãããããªãã®ããã¡ãã·ã§ããã«/å¿ é ã«ãªã£ããã©ããã¯ããããŸãã/ Cliã ãããšãVS98ã®ééã¯åæã«120ã¡ã¬ãã€ãã§ãããäœæ¥ãã·ã³ã®ã¯ã€ã³ã®äžã§æ£åžžã«åäœããããšãããããŸããã
IATã¹ããŒãã£ã³ã°ã®ãããªå€ããããžã§ã¯ãã®ã¯ãªãŒã³ã¢ããã¯é ããŸããããæ°æéåŸã«ã²ãŒã ã«ã¢ãžã¥ãŒã«ãå®è£ ãããã®ã¡ãã»ãŒãžãããŒã远跡ã§ããŸããïŒSetWindowLongãšäœãšãäœãšãããµãã¯ã©ã¹åïŒã æãããªçç±ã§ãSpy ++ã¯ãã«ã¹ã¯ãªãŒã³ã²ãŒã ã§åäœããããšãæã¿ãŸããã§ããããã°ãäœæããããŠã¹ãšã¿ããã®ããã«èŠãããã®ããã¹ãŠèª¿ã¹ãããã§ãã ä»é±ã®éææ¥ã®å€ã¯çµãããç§ã¯ååäžã«ç¶ç¶ã延æããŸããã
WM_TOUCH
ååäžãã¿ããã¹ã¯ãªãŒã³ã®æäœã«é¢ããèšäºãããã€ãå®è¡ãã座ã£ãŠWM_TOUCHããã£ããããŸããã åªããã¡ãã»ãŒãžã§ãã1ãããã¯ã«10ã2åã®ã¯ãªãã¯ãå«ãŸããŠããŸãããå®æçã«éä¿¡ãããŸãã 座æšãã²ãŒã ã«æ£ããæ¥ãã®ã¯èå³æ·±ãããšã§ãã-ãããã¯ç»é¢ãã¯ãªãã¯ããå Žæã«æ£ç¢ºã«å¯Ÿå¿ããŠããŸããã ãã¹ãŠã®ã€ãã³ãã§WM_MOUSEMOVEãçæãå§ããã®ã§ãããã¯éèŠã§ã¯ãªãããã§ããã çµæã¯ç§ãé©ãããŸãã-äœãå€ãã£ãŠããŸããã äœããããŸããã WM_MOUSEMOVEãSetCursorPosã«çœ®ãæããŠãããŸã çµæã衚瀺ãããŠããŸãã-ã«ãŒãœã«ã®ã¯ãªãŒãã¯æããã«æ··ä¹±ããŠããŸããã ç©äºã¯åžœåã«ããããã«èŠããŸãã-ããªãã¯äœãééã£ãŠããã®ãããããŠæ¯åã«ãŒãœã«ã暪ã«ç§»åããçç±ãç解ããå¿ èŠããããŸã...éãã§æããªã£ããšãã ããç§ã¯äœããééã£ãŠããããšã«æ°ä»ããŸãã:)ãã¹ãŠã®è«ççããã³éè«ççãªæ¹æ³ãæ°åŒã座æšèª¿æŽãmouse_eventã«ããéè¡ãSendInputãç¹å®ã®ã€ãã³ãã®ãã£ã³ã»ã«-ã«ãŒãœã«ãã¯ãªãã¯ã®å Žæã«ç§»åãããããšã¯ã§ããŸããã§ããã ããã¯ãã³ã»ã³ã¹ãŸãã¯ç¥ç§äž»çŸ©ã®ããã§ããããã²ãŒã å ã®ã©ããã«ãç§ãç解ã§ãããçŽæ¥å¶åŸ¡ãããªãæ¹æ³ã§å€åããäžå¯Ÿã®åº§æšããããŸããã
DirectInputããã³all-all-all
æ¥ææ¥ã«ãç§ã¯æ欲ã倱ããŸããããããã§ãä¿¡é Œã§ããŸããã ä»æ¥ã¯ãã¿ããã¹ã¯ãªãŒã³ããŒã¿ã䜿çšããŠãå®éã®ããŠã¹ããã®ãã¹ãŠãç¹°ãè¿ããŠã¿ããã£ãã®ã§ãã ãã£æ¯é¡ãã€ãªãã§ãã®è¡åã远跡ãå§ãããšãããããŠã¹ã®åäœããŠã£ã³ããŠããã·ãŒãžã£ããŸã£ããééããªãããšãå€æããŸããã èªåãã²ãŒã ã®çŸå®ãç¥ããªããããšåŒãã§ãGoogleãæãäžããŠãç§ãæ··ä¹±ããŠããããšãçºèŠããŸãããå€ãã®å Žåãã²ãŒã ã¯ãDirectInputãä»ããŠããŸãã¯ãŠã£ã³ããŠã¡ãã»ãŒãžãã¥ãŒããã€ãã¹ããŠçã®åœ¢åŒã§ããŠã¹ã«é¢ããæ å ±ãåãåããŸãã ã¿ããã¹ã¯ãªãŒã³ãšã¹ã¿ã€ã©ã¹ã®ã€ãã³ãã¯äŸå€ã§ããã¡ãã»ãŒãžãã¥ãŒãééããDefWindowProcã®è žã®ã©ããã§ããŠã¹ã«ããã¢ã¯ã·ã§ã³ã«å€ãããŸãã ãããã£ãŠãWM_MOUSEMOVEããã®ä»ã®WM_MOUSEMOVEã¯ãŸã£ããååšããªãå¯èœæ§ãããïŒããã¯ããŠã¹ã§ãçºçããŸãïŒãéä¿¡ã眮æãªã©ã®è©Šã¿ã¯ã²ãŒã ã«åœ±é¿ãäžããŸããã æåéããç§ã®å®éšã®3åã®2ã¯ã²ãŒã ã«ãã£ãŠåã«ç¡èŠãããæ®ãã¯DefWindowProcãšç«¶åããŠããŸããã ããã«ãWM_TOUCHã¯Windows 7ããã°ã©ã ãšã®äºææ§ã®ããã«ã®ã¿éä¿¡ãããWM_POINTER *ã¯æ¢ã«Windows 8ã®ã¡ã€ã³ã¿ããã€ãã³ããšèŠãªãããŠããŸãã
äºæ ãŸãã¯é£ãïŒ
ãã®æ®µéã§ãç§ã¯ãã§ã«å¿ èŠãªãã®ãç¥ã£ãŠããããã³ãã«ã®çµããã«å ãèŠãŸãã-DefWindowProcã«ã¿ããã¹ã¯ãªãŒã³ã€ãã³ãããŸã£ããåŠçãããããã¹ãŠãèªåã§è¡ããŸãã ææ çãªçãäžããã¯ãã®ä»äºãããããæç¹ã§ãäºæ³å€ã«ãã¿ããã¹ã¯ãªãŒã³ã¯æŒããå Žæã«ã«ãŒãœã«ãæ£ç¢ºã«çœ®ãå§ããŸããã ååã¢ãžã¥ãŒã«ã®æºåããŸã æŽã£ãŠããªãã£ããããå¥åŠã§ããã ç®çã®é åã®äºåæ³æ€çŽ¢ïŒããã°ã©ã ã®ååããªãã«ããŠåäœã確èªãããããæ»ãããæ®ãã®ã³ãŒãã®ååããªãã«ããŸãïŒã¯ãåæã«åŒã³åºããããšã瀺ããŸãã
RegisterTouchWindow(hWnd, TWF_WANTPALM)
ãã㊠SetProp(hWnd, "MicrosoftTabletPenServiceProperty", (HANDLE)1);
*æåŸã®ã³ãã³ãã®ã°ãããå€èŠ³ãšæå³ã«ããããããã2003 Tablet PCã«ãããããããããã¯éåžžã«æ£ç¢ºã§ææžåãããŠããŸãã
ãããã®2ã€ã®ã¡ãœãããåŒã³åºããšãWM_TOUCHã§ã¯äžåºŠã«1ã€ã®åº§æšããååŸã§ãããDefWindowProcå éšã¯æ¯ââèŒçæ£ãã座æšãçæããŸãã ããããå®éã«ã¯ãéåžžãWM_TOUCHã¯æŒãããŠãããã«ã¯éä¿¡ãããããé·æŒããæ©èœã®ããŒã¿ãèç©ããŸãã ç¹åŸŽçãªããšã¯ãååããã€ãŠåæ§ã®ç¶æ³ã«çŽé¢ããããšã§ãã
ç¡çãª4æ¥éã®çµããã«ãç§ã¯ãããããŠã2ã€ã®ããšãããŸããã æåã«ãMSDNãã©ãŒã©ã ã«ã¡ãã»ãŒãžãæçš¿ããŸãããã "æ§äº€"ãèŠæ±ããŸããããæ皿㧠"æ§äº€"ãšããèšèãå®éã«ã¯äœ¿çšããŸããã§ããã
ïŒ...ïŒ
ãããããããšã«ãæ°æ¥åŸãé©ããããšã«ã誰ããç§ã®ãã©ãŒã©ã æçš¿ã«å®éã«çããŠãããŸããã ãã®äžã§ã圌ãã¯2003幎ã«æžãããæè¡èšäºãåç §ããŸãããããã¯ãç§ãæãã§ããããšãæ£ç¢ºã«è¡ãæ¹æ³ã瀺ããŸãããTabletPCAPIããããã®ã§ã¯ãªããããªãã®ãŠã£ã³ããŠã«ç§å¯ã®ã°ããŒãã«ããã¹ãã¢ãã ãèšå®ããã ãã§ãïŒ TabletPCã¯ããŠã£ã³ããŠã®é·æŒããç¡å¹ã«ããŸãã
ïŒ...ïŒ
ãã®ãããäœããã®åœ¢ã§ãè€æ°ã®ã©ã€ãã©ãªãšæ°çŸã®GUIDãšããŒãžãšã¯ã©ã¹ããã¥ã¡ã³ãã®ããŒãžãåãããã¹ãŠã®COMnessã§ãTabletPC SDKã¯ãã®ç¹å¥ãªã¢ãã ã®å®çŸ©ããŸãã¯ãã®ååšã«ã€ããŠèšåããããšããã§ããŸããã§ããã ãŸãã¯ããé·æŒãããšã¯äœã§ããïŒéå§ããåã«æ€çŽ¢çšèªãç¥ã£ãŠãããšæ¬åœã«å©ãã£ãã®ã§ããã®ããã«ããŠç§å¯ã®æè¡èšäºãèŠã€ããããšãã§ãããããããŸããïŒã
ããã¯å®å šãªè§£æ±ºçã§ã¯ãããŸããã§ããããããã§ã倧ããªé²æ©ã§ãïŒ å®éã«ã¯ããã©ãŒã«ã¢ãŠã2ãåçå¯èœã«ãªã£ãã®ã¯ãã®ã¢ãŒãã§ããããä»®æ³åº§æšãšå®éã®åº§æšã®äžèŽã倱ãããããšããããŸã-ã«ãŒãœã«ã暪ã«ç§»åããŸãã ããã¯ãã«ãŒãœã«ãåãããªããªãå Žæã«ãã©ãã°ããããšã§ãã²ãŒã å ã§çŽæ¥è§£æ±ºãããŸãã
å®å šãªå®è£
ããã«ããã¹ãŠãæè¡ã®åé¡ã§ãã-DefWindowProcãå¹²æžãåæ¢ããWM_TOUCH / WP_POINTERãæ¥çãåæ¢ãããšãããããåŠçããmouse_eventãä»ããŠã€ãã³ããéä¿¡ãå§ããŸããã ã«ãŒãœã«ã®åäœãäºæž¬å¯èœã«ãªããŸããã 解決ã§ããªãã£ãã®ã¯ãããŠã¹ãšã¿ããã¹ã¯ãªãŒã³ã®1åéãã®æäœã ãã§ããã ããŠã¹ã¯WM_ã¡ãã»ãŒãžããŸã£ããçæããªãããããã®æ£ç¢ºãªåº§æšãèŠã€ããããšã¯ã§ããŸããããŸããGetCursorPosã¯èªåãæžãããã®ã ããæäŸããŸãã ã¿ããã¹ã¯ãªãŒã³ã€ãã³ãããã£ããã£ããåŸãäžè¬çã«GetCursorPosã®å€ã¯å€æŽãããªããªããŸããããã«ãŒãœã«ã¯ããŠã¹ãšã¿ããã§ç§»åããŸããã Arcanumã®å Žåãå³ãã¿ã³ã¯2æ¬ã®æã§æŒãããšã§ãã³ã°ã¢ãããããããäŸç¶ãšããŠéèŠã§ãã ã¡ãã¥ãŒãçµäºããŠä¿åããã«ã¯ãESCãå¿ èŠã§ããESCã¯3æ¬ä»¥äžã®æã®ãžã§ã¹ãã£ãŒã«æ ¹ãããŠããŸãã ä»æ¥ã¯ããããããŠãã³ãŒããã¯ãªã¢ããŠgithubã«ã¢ããããŒãããããšã«ããŸãã...ãã¬ã€ãã代ããã«ãHabrã«ã€ããŠã®èšäºãæžãããã«åº§ã£ãŠããŸãã;ïŒ
æçè«è
ãšæããã
åªæã¯ã¿ããã¹ã¯ãªãŒã³ã§éžæããã䜿çšãããåŸãå³ã¯ãªãã¯ã§ãã£ã¹ãã¢ãŒããé¢ããŸããã |
玹ä»ãããªã¯ã¿ããã§ã¹ãããããããã£ã©ã¯ã¿ãŒãäœæãããã¿ããã¹ã¯ãªãŒã³ã§ã€ã³ãã³ããªãéãããŸãïŒããã¯ãã¯ãªãŒã³ãããŒãžã§ã³ã§ã¯äžå¯èœã§ãïŒ |
ãã°ãšæ¬ é¥
- ãã§ã«æ°åæžããŠããŸãããè€è£œããŸããããŠã¹ãåãããšãã«ãŒãœã«ãè¿·ããææŒãè»ã§éã¶ã ãã§æžã¿ãŸãã ã«ãŒãœã«ãç»é¢ã®é ã«åããŠããã¿ããããŠããããåŒãåºããšã座æšã®åæã埩å ãããŸã
- Fallout 2ã§ã¯ãWindowProcãã€ã³ã¿ãŒã»ãããããšããã°ãããããšã²ãŒã ãã¯ã©ãã·ã¥ããŸãã å°æ¥ã®ããŒãžã§ã³ã§ãããç解ããŸãããä»ã®ãšãããããªãã§ãã¬ã€ã§ããŸãããããžã§ã¯ãã§ã¯ãWMã¡ãã»ãŒãžã®ååãšãããªãã®2ã€ã®ãšã³ããªãã€ã³ããäœæãããŸãã æ®å¿µãªãããã²ãŒã å ã®ãã¿ã³ã¯å°ãããæã§æŒãã®ã¯äŸ¿å©ã§ã¯ãããŸãããã¹ã¿ã€ã©ã¹ã¯ããè¯ãæ©èœããŸãã
- æ°ãããŠã£ã³ããŠãäœæããããã®ããã¯ã¯ãã²ãŒã ã®éå§äžã«æ°ç§éæ©èœããŸãã ãã®æç¹ã§ä»ã®ããã°ã©ã ãèµ·åãããšãDLLã¯ã¢ãã¬ã¹ç©ºéã«ããŒããããŸãã ãã®çµæãåèµ·åãããŸã§åé€ã§ããŸããã éèŠã§ã¯ãããŸãããDLLã®ååãå€æŽã§ããŸãã ãããã°äžã«ããã®ãããªååãå€æŽããããã®ãäœçŸåãèç©ããŸããã
-
Windows 8ã¯ãæšããªãã¡ãã·ã§ã³ãžã§ã¹ãã£ãè±å¯ã§ããã®äžéšã¯ãã¬ã€ã劚害ããŸããããã°ã©ã ã§ãªãã«ããããšãã§ããŸããããã®ããã«ã¯ãVS 6.0ãããæ°ãããã®ã§ã³ã³ãã€ã«ããå¿ èŠããããŸãããããŸã§ã®éãã¬ãžã¹ããªã§ãããã®ãžã§ã¹ãã£ãŒãç¡å¹ã«ããããšãã§ããŸãã[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ImmersiveShell\EdgeUI] "DisabledEdges"=dword:0000000f
- ã³ãŒãã¯ã'98幎ã®IDEã§ã²ããçãããæç«ã«ãã£ãŠæžãããŸããã ãŸãããããã ãŸããã¯ã©ãã·ã¥ããå¯èœæ§ããããŸãã
- DLLã¯ãµã€ãºã倧ããïŒ48kbïŒããšãå€æããŸãããããšã«ãããäžéšã®ãŠã€ã«ã¹å¯ŸçãœãããŠã§ã¢ã§å®è¡ã§ããŸã-ã€ã³ãžã§ã¯ã·ã§ã³ãã°ããŒãã«ããã¯ãããã³äžè¬ã«ã·ã¹ãã ãžã®å¹²æžããããŸãïŒ
ãµããŒã
æè¬ã®æ°æã¡ãè¡šæããã人ã¯èª°ã§ãããããããšãããšèšãããšã¯ã§ããŸããã ã¢ãã¿ãŒã®åã§å£°ãåºãããšãã§ããŸãããããã«ã€ããŠæžãå¿ èŠã¯ãããŸããã ç§ãæ»éæè ãŸãã¯ä»ã®äœããšåŒã³ãããªããäžçã®ã€ã³ã¿ãŒãããã®ãšã³ããããŒãå¢ãããªãã§ãäœåºŠã声ã«åºããŠèšãããšããå§ãããŸãã åæã«ããã®ãããžã§ã¯ãã¯ãããå€ãã²ãŒã ã§ã®ãã¹ããFalloutã®åé¡ã®è§£æ±º
UPDïŒæŒé£æã«ããããžã§ã¯ããVS 2012ã«æŽæ°ããWindows 8ãã£ãŒã ã®èªåã·ã£ããããŠã³ãã¹ã¿ã€ã©ã¹ã®ãã¿ã³ãµããŒããè¿œå ããŸããã åæã«ãASI Loaderã䜿çšããããšããŸããããäœããããŸããããŸããã§ããã ãŸããèµ·åæã«å¥åŠãªã¯ã©ãã·ã¥ããã£ããããããã¯ä¿®æ£ãè¡ããŸããã
UPD 2ïŒå€æããããã«ãããŠã¹ã®é床ãããã©ã«ã以å€ã®å ŽåããŸãã¯ãæ¡åŒµãã€ã³ã¿ãŒç²ŸåºŠããæå¹ã«ãªã£ãŠããå Žåãã©ã€ãã©ãªã¯æ£ããæ©èœããŠããŸããã§ããã DLLã¯ã¿ããã³ã³ãããŒã«ãšäºææ§ããªããããèµ·åæã«ãããã®ã¢ã€ãã ããªãã«ããããããã®åé¡ã«å¯Ÿããå®å šãªè§£æ±ºçã¯ãŸã ãããŸããã 誰ããèå³ãæã£ãŠããå Žåããé«åºŠãªç²ŸåºŠãã¯ãå€ã6ãã¯ã»ã«ãè¶ ãããšä»»æã®è»žã§ããŠã¹ãªãã»ããã2åã«ãã10ãè¶ ãããš4åã«ãªãæããªãžã§ãŒã¯ã§ãã ããŠã¹ãå·Šã«7ãã¯ã»ã«ãäžã«12åãããšããã®ã¢ãŒãã§ã¯å·Šã«14ãã¯ã»ã«ãäžã«48ã®ãªãã»ãããåŸãããŸãã ããã§ç²ŸåºŠãåäžããããšã¯ãããŸãããããã«ã10幎åã«ã·ã¹ãã å ã®ã©ããã«6ãš10ã®å¶éãèšå®ãããŠããããŠãŒã¶ãŒãå€æŽããããšã¯ã§ããŸããã