OSDN Git Service

amodiからの文字位置情報が二桁以上あると正しく取得できていなかった
[dokopop/dokopop.git] / Diary.txt
1  http://grabacr.net/archives/1132
2 \81¡BUG
3 \81Eamodi\82Ì.NET Framework version\82Í\81H
4 \81ESetWindowsHookEx\96â\91è
5   - 32bit/64bit\97¼\95ûload\81¨32bit\82ÍOK\81A64bit\82Írun on load context
6   - 32bit\82Ì\82Ýload\81¨32bit\82ÍOK\81A64bit\82Í\96³\94½\89\9e
7   - 64bit\82Ì\82Ýload\81¨64bit\82ÍOK\81A32bit\82Írun on load context
8   - 64bit\82ð\90æ\82Élaunch\81A32bit\82ð\82 \82Æ\82©\82çload\81¨32bit\82ÍOK\81A64bit\82Írun on load context
9   - 64bit/32bit\82ðload\81A\82»\82Ì\8cã64bit\82Ì\82Ýinit/config\81A\82»\82Ì\82 \82Æ32bit\82Ì\82ÝInit\82Ì\82Ý\81¨32bit Init\82ð\8eÀ\8ds\82·\82é\82Ü\82Å\82Í64bit\82ÍOK\81A32bit\82ÌInit\82ð\8ds\82¤\82Æ64bit\82Írun on load context
10   - 64bit\82ð\88Ù\82È\82é\83f\83B\83\8c\83N\83g\83\8a\82Å\8eÀ\8ds\81¨\95Ï\82í\82ç\82¸
11 [\88ê\94Ê\93®\8dì]
12 \81E[B] Edge@Win10@VMware@PWS300\82Å\95\8e\9a\94F\8e¯\82Å\82«\82Ä\82¢\82é\82Ì\82É\83|\83b\83v\83A\83b\83v\82µ\82È\82¢\8e\9e\82ª\82 \82é\81¨FAQ
13   \81¨\88Ê\92u\82ð\8cÅ\92è\81A\83t\83H\81[\83J\83X\88Ú\93®
14 \81E[B] \83\8d\83O\83C\83\93\82Ìstartup\82Åamodi\82ª\97á\8aO\82Å\97\8e\82¿\82é\81BFileNotFound\82Å\8aÄ\8e\8b\97p\83t\83H\83\8b\83_\81[\82ª\8c©\82Â\82©\82ç\82È\82¢\81H
15 \81E[C] Windows shutdown\82ÅExMODI\82ª\97á\8aO\81H
16 \81E[B] .NET\82ð4.0\82©\82ç3.5\82É\82Å\82«\82È\82¢\82©\81H
17 \81E[B?] main prg\82Ìmain thread\82ªblocking\8fó\91Ô\82É\82È\82é\82Æ\82È\82ºUI\91S\91Ì\82ª\8e~\82Ü\82é\81H
18   \81¨\8e~\82Ü\82Á\82Ä\82¢\82é\82Æ\82±\82ë\82Í\8f­\82È\82­\82Æ\82àHook\8aÖ\90\94\93à\82Å\82Í\82È\82¢\82ç\82µ\82¢(return\82Ü\82Å\82Ì\8e\9e\8aÔ\82ª\82P\95b\88È\93à\82¾\82Á\82½\81j
19 \81E[B] \82Ü\82¾\94{\97¦\8f\88\97\9d\82ª\82¤\82Ü\82­\93­\82©\82È\82¢
20   - Firefox\81¨\8ag\91å\82È\82µ\82ÅOK
21   - IE\81¨\8ag\91å\8f\88\97\9d\95K\97v
22 \81E[C] click\82É\82æ\82éCaptureImage\82Ímain\82©\82ç\82Ì\8cÄ\82Ñ\8fo\82µ\82É\82µ\82½\82Ù\82¤\82ª\82¢\82¢\82Ì\82Å\82Í\81H
23   \81¨\82Ç\82Ì\82Ý\82¿wait\82·\82é\82Ì\82¾\82©\82ç\81A\96â\91è\82È\82¯\82ê\82Î\82±\82Ì\82Ü\82Ü\82Å\82¢\82¢\82©\82à\81H
24 \81E[C] Capture API\82ª64/32bit\97¼\95û\82Å\8cÄ\82Î\82ê\82Ä\82µ\82Ü\82¤\82Ì\82Í\82Ü\82¸\82¢\82Ì\82Å\82Í\81H\92P\82È\82é\96³\91Ê\81H
25   \81¨\82¹\82ß\82Äbit\90\94\82ð\94»\92f\82µ\82Ä\82©\82ç\82Å\82 \82ê\82Î\81E\81E\81E
26 \81E[B?] MODI\82ª\83C\83\93\83X\83g\81[\83\8b\82³\82ê\82Ä\82¢\82È\82¢\8fó\8bµ\82ÅDokoPop!\82ð\8bN\93®\81A\82»\82Ì\8cãMODI\82ð\83C\83\93\83X\83g\81[\83\8b\82·\82é\82ªamodi\82ª\95¡\90\94\8bN\93®\82µ\82ÄOCR\82ª\93®\8dì\82µ\82È\82¢\8fó\91Ô\82ª\82 \82Á\82½
27           \81¨amodi.exe\82ª\8fI\97¹\82µ\82È\82¢\8fð\8c\8f\82ª\82 \82é\81H
28           \81¨MODI uninstall/install\82ð\82â\82Á\82Ä\82Ý\82½\82ª\8dÄ\8c»\82¹\82¸\81BOS install\8cã\8f\89\89ñ\82¾\82¯\81H
29 \81E[C][Win10] SharePoint Designer\82ðWindows10\82É\83C\83\93\83X\83g\81[\83\8b\82·\82é\82Æ\82«\81A.NET\82Ì\83C\83\93\83X\83g\81[\83\8b\82ð\91£\82·\82ª\81A\83G\83\89\81[\82Æ\82È\82è\82Å\82«\82È\82¢\81B\81¨\82»\82à\82»\82à.NET\82Í\93ü\82Á\82Ä\82¢\82é\82Ì\82Å\83C\83\93\83X\83g\81[\83\8b\95s\97v\81Binstaller\82Ì\83o\83O\81H
30 \81E[B] \8f]\97\88\95û\8e®\82Ì\95\8e\9a\97ñ\92\8a\8fo\82ª\93®\8dì\82µ\82È\82­\82È\82Á\82½\81H
31   \81¨DKPUHK64.dll\82ðload\82µ\82½\82½\82ß\81BDKPUHK64\82ðhook\82³\82¹\82é\82Æ32bit\83A\83v\83\8a\8fã\82Åhook\82ª\90³\82µ\82­\93®\8dì\82µ\82È\82¢\81i\8fÚ\8d×\82Ì\93®\8dì\82Í\95s\96¾\81j
32   \81¨\82È\82º32bit\83A\83v\83\8a\82Å64bit DLL\82ªhook\82³\82ê\82é\82Ì\82©\81H
33   \82Ü\82Æ\82ß\82é\82Æ\81A
34    - 64bitDLL\82ð\8eg\97p\82·\82é\82Æ\81E\81E\81E32bit\83A\83v\83\8a\8fã\82Å\93®\8dì\82µ\82È\82­\82È\82é\81i64bit\83A\83v\83\8a\82ÍOK)
35    - 64bitDLL\82ð\8aO\82·\82Æ\81E\81E\81E\81E\81E32bit\83A\83v\83\8a\82Í\93®\8dì\81A64bit\83A\83v\83\8a\82ÍNG
36 \81@ - 64bit DLL\82ðload\82·\82é\82Æ\81A32bit\83A\83v\83\8a\8fã\82É\83}\83E\83X\82ð\88Ú\93®\82µ\82Ä\82àDLL attach\82³\82ê\82È\82¢\81B(32/64bit\97¼\95û)
37    - 64bit DLL\82ðload\82µ\81A32bit\83A\83v\83\8a\8fã\82Åmouse\91\80\8dì\82·\82é\82Æ\81A64bit/32bit\97¼\95û\82ÌDLL\82Ì\8f\88\97\9d\82ª\91\96\82é\81B\82 \82è\82¦\82È\82¢\82¾\82ë\82¤\81H\81H
38          \81ªattach\82³\82ê\82Ä\82¢\82È\82¢\82Ì\82É\82È\82º\94½\89\9e\82Å\82«\82é\81H\81H
39          \81¨64bit DLL\82ÍDKPUHK64.exe\82Å\91\96\82è\81A32bit DLL\82ÍDCHookTest.exe\82Å\91\96\82Á\82Ä\82¢\82é\81I\81I\82È\82º\81H
40          \81¨DKPUHK64.exe\82ð\95Ê\83v\83\8d\83Z\83X\82©\82ç\8bN\93®\82µ\82Ä\82à\8dÄ\8c»\82·\82é\81BDLL\82ÌInit()\8cÄ\82Ñ\8fo\82µ\82ð\82µ\82È\82¯\82ê\82Î\8dÄ\8c»\82µ\82È\82¢\81B
41            SetWindowsHookEx()\82Ì\8eg\97p\82É\96â\91è\82ª\82 \82é\82ç\82µ\82¢\81B
42          \81¨\95Ê\83A\83v\83\8a\82È\82Ì\82É\82È\82º\89e\8b¿\82·\82é\82Ì\82©\81HDLL\82Ì\89½\82©\82ª\82Ô\82Â\82©\82Á\82Ä\82¢\82é\81H
43          http://resources.infosecinstitute.com/using-setwindowshookex-for-dll-injection-on-windows/
44          \82ð\8fn\93Ç\82·\82é\82Æ\89½\82©\83q\83\93\83g\82ª\82 \82é\81H
45          \81¨64bit\82Ì\82ÝInit\82ð\8ds\82¤\82Æ64bit\83A\83v\83\8a\8fã\82Å\90³\8fí\93®\8dì\82µ\81A32bit\83A\83v\83\8a\8fã\82Å\82ÍDKPUHK64.exe\82Ì\83v\83\8d\83Z\83X\8fã\82Å\93®\82­
46    - ProcessExplorer\82Å\8am\94F\82·\82é\82Æ\81A64bit\83A\83v\83\8a(\83\81\83\82\92 )\82Ìload\82³\82ê\82Ä\82¢\82éDLL\82ÉDKPUHK64.DLL\82ª\82¢\82È\82¢
47          \81¨dchk64.exe\82Ì\82Ý\82ð\92¼\90Ú\8eÀ\8ds\82µ\82½\8fê\8d\87\82Í\96â\91è\82È\82¢\81H\81H(DKPUHK64.DLL\82ª\83\81\83\82\92 \82Éhook\82µ\82Ä\82¢\82½)
48          \81¨32bit\91¤\82ÌInit()\82ð\82µ\82È\82¢\82Æ\82Ç\82¤\82È\82é\81H
49            \81¨bingo!! DKPUHK64.DLL\82ªload\82³\82ê\82½
50    - [\8dÏ] 64bit DLL\82ÌUninit()\82ª\8cÄ\82Î\82ê\82È\82¢
51          \81¨32bit DLL\82ªUninit()\82³\82ê\82½\82Æ\82«\82ÉDKPUHK64.exe\82ª\8fI\97¹\82µ\82Ä\82¢\82é\81H\81H
52          \81¨Unload\82Ì\82 \82Æ\82ÉUninit\82ª\8cÄ\82Î\82ê\82Ä\82¢\82½\81¨Uninit->Unload\82É\82µ\82½
53 \81E[B] \83\81\83\82\92 \82Å\95\8e\9a\89»\82¯
54   \81¨meta file\82Ì\8dÄ\90\82Å EMR_EXTTEXTOUTW\82Ì\83e\83L\83X\83g\82ª\89»\82¯\89»\82¯
55   \81¨64bit DLL\82ð\96³\8cø\82É\82µ\82½\82ç\82»\82Ì\96â\91è\82Í\94­\90\82µ\82È\82­\82È\82Á\82½\82ª\81A\95Ê\96â\91è\82ª\94­\90
56 \81E[C] \83C\83\93\83N\83\8a\83\81\83\93\83^\83\8b\83T\81[\83`\82ð\97L\8cø\82É\82µ\82½\92¼\8cã\81AOCR Error\82ª\94­\90\82·\82é
57   \81¨Reboot()\82µ\82È\82¢\82æ\82¤\82É\82·\82é\82Æ\81A\82»\82Ì\8cã\82Í\90³\8fí\82É\93®\8dì\82·\82é\81B
58   \81¨\82Æ\82è\82 \82¦\82¸Reboot()\82ð\82Í\82¸\82µ\82½\81i\95K\97v\90«\82ª\8d¡\82Ì\82Æ\82±\82ë\96³\82­\82È\82Á\82½\82Ì\82Å\81j
59 \81E[C] Chrome\82Å\8dÀ\95W\82ª\82¸\82ê\82é@VAIO Pro11
60   \81¨\90Ø\82è\94²\82«\82Í\91Î\8fÛwindow\82Ì\82Ý\82É\8cÀ\92è\82µ\81Aclick point\82à100,100\8cÅ\92è\82É\82¹\82¸\81A\91Î\8fÛwindow\82Åclip\82µ\82½\82Ù\82¤\82ª\82¢\82¢\82Ì\82Å\82Í\81H
61   \81¨\82»\82ê\82Í\91Î\89\9e\8dÏ\82Ý\81B\82µ\82©\82µ\96â\91è\82Íwindow8\82Ì\8ag\91å\8b@\94\\82¾\82Á\82½\81B
62   http://grabacr.net/archives/1132
63   GetDpiForMonitor, CDPI class\82 \82½\82è\82ª\8aÌ\82©\81H
64   \81¨GetDeviceCaps(LOGPIXELSx)\82ð\8eg\97p\82·\82ê\82Î\82¢\82¢\82¾\82¯\81H
65   \81¨\8eæ\93¾\95û\96@\82ª\8c©\82Â\82©\82ç\82¸\81B\83\86\81[\83U\81[\93ü\97Í\82Å\82Æ\82è\82 \82¦\82¸\91Î\8f\88
66   \81¨ResolutionScale\82¾\82Á\82½\82ª\82¤\82Ü\82­\93®\82©\82È\82¢\81H
67 \81E[C] AMODI\82Ìtemporary folder\82ðlock\82µ\82Ä\82¢\82é\82ÆAMODI\82ª\8bN\93®\82Å\82«\82È\82¢\81i\8bN\93®\82µ\82Ä\82à\89½\82à\8c¾\82í\82¸\82É\8fI\97¹\81j
68 \81E[?] XP\82Ìdpi scaling\82Í\96â\91è\82È\82©\82Á\82½\81H
69 [\88À\92è\90«]
70 \81E[B] inc.srch\82ð\97L\8cø\82É\82µ\82Ä\82¢\82é\82ÆDKPUHK64.exe\82Å\97\8e\82¿\82½\81B\81¨MouseMove\82Ì\82Æ\82±\82ë\82ðcomment out
71 \81E[B] inc.srch\81{Ctrl+\89E\83N\83\8a\83b\83N\82Å\8c\83\82µ\82­\82â\82Á\82Ä\82¢\82é\82ÆAMODI\82Å\97\8e\82¿\82é
72   - inc.srch\82ð\97L\8cø\82É\82µ\82Ä\81A\83^\83X\83N\83g\83\8c\83C\82Ìdp\82Å\89E\83N\83\8a\83b\83N\83\81\83j\83\85\81[\82ð\8fo\82µ\81A\90à\96¾\8f\91\82ð\95\\8e¦\82É\83J\81[\83\\83\8b\82ð\8d\87\82í\82¹\82é\82ÆAMODI\82Å\97\8e\82¿\82é@win7
73 \81E[B] FileSync\82Å\8c\9f\8dõ\82·\82é\82ÆFileSync\82ªassertion failure\82ð\8bN\82±\82µ\81APDHKU64.exe\82ª\97\8e\82¿\82é
74   - SyncExecFrm.cpp TSyncExecFrame::lbLogDrawItem 627
75   - XP(xw8400)\82Å\82Í\96â\91è\82È\82µ
76 \81E[A?] \8c\9f\8dõ\93®\8dì\82µ\82È\82­\82È\82é\82Æ\82«\82ª\82 \82é\81H@win7
77   \81¨OS\8dÄ\8bN\93®\82È\82Ç\82Å\8dÄ\8c»\82µ\82È\82­\82È\82Á\82½\81H
78 \81E[B?] amodi\82ð\8eg\97p\82·\82é\82Æoffice\82Ìinstall\82ª\8en\82Ü\82é\81H@win7
79   \81¨OS\8dÄ\8bN\93®\82È\82Ç\82Å\8dÄ\8c»\82µ\82È\82­\82È\82Á\82½\81H
80 \81E[Q] DokoPop!\82ªPDIC\82ð\8bN\93®\82·\82é\82Æ\91O\89ñ\82Æ\88Ù\82È\82épath\82É\82 \82éPDIC\82ª\8bN\93®\82µ\82Ä\82µ\82Ü\82¤@vaio\81¨portable\94Å\82¾\82©\82ç\81BFAQ\82É\82 \82Á\82½\82Ù\82¤\82ª\82¢\82¢
81 \81E[C] \83]\83\93\83rDKPUHK64.exe\82Ì\8f\88\97\9d
82 \81E[C] pdhk64.exe\82ª\8e\80\82ñ\82¾\8e\9e\82Ì\91Î\8dô
83 \81E[?] win8\82Ålog off\8e\9e\82Épdhk64.exe\82ª\97\8e\82¿\82é\81H
84 \81E[?] stand-by\95\9c\8bA\8cãAMODI\82ª\97\8e\82¿\82é\81H@XP
85 \81y\8dÏ\81z
86 \81E[B][amodi] \83t\83@\83C\83\8b\8dí\8f\9c\8e\9e\82Ì\97á\8aO\8f\88\97\9d\92Ç\89Á
87 \81E[B] WinXP\82Åinc.srch\82ª\82Ü\82Á\82½\82­\93®\82©\82È\82¢\81H
88   \81¨WinXP\82Å\82Í\81Aevent/thread\82ÍDLL\92P\88Ê\82Å\82Í\82È\82­\81ADLL instance\92P\88Ê\82Å\90\90¬\82·\82é\95K\97v\82ª\82 \82Á\82½
89 \81E[B] \83C\83\93\83N\83\8a\83\81\83\93\83^\83\8b\83T\81[\83`\82ª\95p\94É\82É\94­\90\82·\82é\82½\82ß\8fd\82­\82È\82é\81¨\8c\9f\8dõ\82Ì\95p\93x\82ð\89º\82°\82é\95K\97v\82ª\82 \82é
90   \81¨\83J\81[\83\\83\8b\82ª\92â\8e~\82µ\82Ä\82©\82ç0.3\95b\8cã\81A\82È\82Ç
91   \81¨0.1\95b\8cã\82É\82È\82é\82æ\82¤\82É\82µ\82Ä\82 \82é\82Ì\82É\8fd\82¢\81B64bit\83A\83v\83\8a(IE\82È\82Ç)\8fã\82Å\8fd\82­\82È\82é\82æ\82¤\82¾\81B
92   \81¨OCR Error\82ª\94­\90\82·\82é\82Æ\83t\83@\83C\83\8b\8f\91\82«\8d\9e\82Ý\91Ò\82¿\82Ì\82R\95b\82Åwait\82³\82ê\82Ä\82¢\82½\81B
93   \81¨\96{\97\88\82»\82±\82Åwait\82µ\82Ä\82à\83X\83g\83b\83v\82·\82é\82Ì\82Í\82¨\82©\82µ\82¢\81Bwait\82Í\95Êthread\82Å\8ds\82¤\82æ\82¤\82É\82·\82é
94   \81¨\95Êthread\82Å\8eÀ\8ds\82·\82é\82æ\82¤\82É\82µ\82½\81¨OK
95 \81E[B] \83\81\83\82\92 \82ÅOCR\82ª\93®\8dì\82µ\82È\82¢
96   \81¨GetDIBits()\82Å\83\81\83\82\83\8a\95s\91«\83G\83\89\81[\82ª\94­\90\82µ\82Ä\82¢\82é
97   \81¨MODI\82Ìinstall\82ª\81u\83}\83C\83R\83\93\83s\83\85\81[\83^\82©\82ç\8eÀ\8ds\81v\82É\82È\82Á\82Ä\82¢\82½\81i\96{\93\96\82Í\81u\83}\83C\83R\83\93\83s\83\85\81[\83^\82©\82ç\82·\82×\82Ä\8eÀ\8ds\81v\81j
98
99 \81¡DPI awareness
100 http://ascii.jp/elem/000/000/905/905248/ - \82í\82©\82è\82â\82·\82¢\90à\96¾(\93ú\96{\8cê)
101 http://www.telerik.com/blogs/winforms-scaling-at-large-dpi-settings-is-it-even-possible- - \8aÈ\92P\82È\8aT\97v\90à\96¾
102 http://kynosarges.org/WindowsDpi.html - \82±\82¿\82ç\82Ì\82Ù\82¤\82ª\82¢\82¢\90à\96¾\81H
103 https://msdn.microsoft.com/ja-jp/library/windows/desktop/dn469266%28v=vs.85%29.aspx - HighDPI \91Î\89\9e\88ê\97\97\82È\82Ç\97l\81X\82È\8fî\95ñ
104 https://msdn.microsoft.com/ja-jp/library/windows/desktop/dd464659%28v=vs.85%29.aspx - High DPI\91Î\89\9e\83v\83\8d\83O\83\89\83~\83\93\83O(8.1\97p\82µ\82©\8f\91\82¢\82Ä\82¢\82È\82¢\81H)
105 Windows8.1\82Å\82Í 96dpi(100%), 120dpi(125%), 144dpi(150%), 192dpi(200%)\82Ì\8el\82Â\82 \82é
106 \81E\8am\94F\8e\96\8d\80
107  - WinXP\82Å\82àDPI\82ð\95Ï\8dX\82·\82é\82ÆDokoPop!\82Í\90³\82µ\82­\93®\8dì\82µ\82È\82©\82Á\82½\82Ì\82Å\82Í\81H
108 \81E\8e\8e\82µ\82É\82â\82Á\82Ä\82Ý\82é\82±\82Æ - manifest\82ðDPI aware\82É\95Ï\82¦\82Ä\82Ý\82é
109 <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" >
110   <asmv3:application>
111     <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
112       <dpiAware>true</dpiAware>
113     </asmv3:windowsSettings>
114   </asmv3:application>
115 </assembly>
116 \81E\82â\82é\82±\82Æ
117  - manifest\82ÅDPI awareness\82ð\8ew\92è(or SetProcessDpiAwareness API) - DokoPop!\82Ímonitor\82²\82Æ\82É\82·\82é\95K\97v\82ª\82 \82é(\82½\82¾\82µ8.1\88È\8d~)
118  - GetDpiForMonitor() \82ÅDPI\8eæ\93¾ (8.1\88È\8d~\82Ì\82Ý)
119  - WM_DPICHANGED\82ðhandling\82·\82é
120  \81ª\82±\82Ì\95û\96@\82¾\82Æ8.1\88È\8d~\82µ\82©\91Î\89\9e\82Å\82«\82È\82¢\82Ì\82Å\82Í\81H
121 \81E\82â\82é\82±\82Æ\81E\82»\82Ì\82Q
122 https://msdn.microsoft.com/ja-jp/library/windows/desktop/dn469266%28v=vs.85%29.aspx#appendix_a_setting_high_DPI_in_windows
123 \82±\82ê\82æ\82è\81A
124 ScaleFactor = (LogicalMonitorWidth/LogicalDesktopWidth) / (PhysicalMonitorWidth/PhysicalDesktopWidth)
125
126 MONITORINFOEX LogicalMonitorInfo;
127 LogicalMonitorInfo.cbSize = sizeof(MONITORINFOEX);       
128 GetMonitorInfo(hMonitor, &LogicalMonitorInfo);
129 LogicalMonitorWidth = LogicalMonitorInfo.rcMonitor.right - LogicalMonitorInfo.rcMonitor.left;
130
131 LogicalDesktopWidth = GetSystemMetrics(SM_CXVIRTUALSCREEN);
132
133 (PhysicalDesktopWidth, PhisicalMonitorWidth) = QueryDisplayConfig()\82ÌDISPLAYCONFIG_MODE_INFO\82ÌpModeInfoArray[i].sourceMode.width
134
135 (\8eQ\8dl)Windows8\82É\82Í\81A
136 PhysicalToLogicalPoint/LogicalToPhysicalPoint\82Æ\82¢\82¤\82à\82Ì\82ª\82 \82é\82»\82¤\82È\81B
137 https://msdn.microsoft.com/ja-jp/library/windows/desktop/dn384112%28v=vs.85%29.aspx
138
139 PhysicalToLogicalPointForPerMonitorDPI function/LogicalToPhysicalPointForPerMonitorDPI - \82±\82ê\82ÍDPI-awareness levelo\82Ì\89e\8b¿\82ð\8eó\82¯\82È\82¢ (Win8.1\88È\8d~)
140 GetDpiForMonitor - (Win8.1\88È\8d~)
141
142 \81HPhysical Desktop Width/Physical Monitor Width
143 > To get the physical desktop width and physical monitor width, call QueryDisplayConfig. For each DISPLAYCONFIG_MODE_INFO in the returned pModeInfoArray, check the pModeInfoArray[i].sourceMode.width (and height and position) to reconstruct the bounding rect of all the monitors.
144 \82Æ\82 \82é\82ª\81A\82Ç\82Ì\82æ\82¤\82É\8eæ\93¾\82·\82ê\82Î\82¢\82¢\82Ì\82¾\81H
145 source\82ªdesktop\82Åtarget\82ªmonittor\81H
146
147 \88È\8fã\82ª\90³\82µ\82¢\82Æ\82·\82é\82Æ\81AScaleFactor\82Í\81A
148 ScaleFactor = (1280/1280) / (1920/1920) = 1 \82Æ\82È\82Á\82Ä\82µ\82Ü\82¤\81H\81H\81\97VAIO
149
150 \81¡TODO
151 \81E[B] x64\82Í\95Ê\83f\83B\83\8c\83N\83g\83\8a\82É\82·\82é\82Æ\8f]\97\88\83t\83b\83N\82ª\93®\82­\82æ\82¤\82É\82È\82é\82Ì\82Å\82Í\81H
152   \81¨\82È\82³\82»\82¤
153 \81E[B-] MODI\83C\83\93\83X\83g\81[\83\8b\82Í\90ê\97p\89æ\96Ê\82É\82·\82é(URL\83W\83\83\83\93\83v)
154   - \8dÅ\8f\89\82Ì\89æ\96Ê\82Í\90ê\97pDLG\82É\82·\82é
155   \81¨\88ê\92U\8e©\95ª\82ÌHP(source forge?)\82É\94ò\82ñ\82Å\82©\82çredirect?
156 \81E[B] \8fí\82É\94F\8e¯\82ð\8ds\82¤AMODI\82ð\82à\82¤\88ê\82Â\97p\88Ó\82µ\82Ä\81A\83|\83b\83v\83A\83b\83v\82·\82é\82Ü\82Å\82Ì\8e\9e\8aÔ\82ð\92Z\8fk\82µ\82Ä\82Ý\82Ä\82Í\82Ç\82¤\82©\81H
157   - \8f­\82µ\82µ\82©\88Ú\93®\82µ\82Ä\82¢\82È\82¢\8fê\8d\87\81A\94F\8e¯\82µ\82½\8dÀ\95W\82Ì\83I\83t\83Z\83b\83g\82ð\8cv\8eZ\82·\82é\82Æ\82©\81H
158 \81E[B] MODI\83C\83\93\83X\83g\81[\83\8b\8cã\81ADokoPop!\8dÄ\8bN\93®\96³\82µ\82É\82Å\82«\82È\82¢\82©\81H
159   \81¨AMODI.exe\82ð\8eÀ\8ds\82·\82é\95K\97v\82ª\82 \82é\82½\82ß\81A\8f\88\97\9d\82Æ\82µ\82Ä\82Í\8c\8b\8d\\8fd\82¢
160   \81¨Wizard\8c`\8e®\82É\82·\82é\95K\97v\82ª\82 \82é\82Ì\82Å\82Í\81H
161 \81EWizard\8c`\8e®\82Ì\8c\9f\93¢
162   - AMODI.exe\8eÀ\8ds\83G\83\89\81[\81¨MODI\82ª\83C\83\93\83X\83g\81[\83\8b\82³\82ê\82Ä\82¢\82È\82¢\82Æ\89¼\92è\82·\82é
163   - \83C\83\93\83X\83g\81[\83\8b\89Â\94Û\82Ì\96â\82¢\8d\87\82í\82¹
164   - Web\83y\81[\83W\82ð\95\\8e¦\82µ\82Ä\83C\83\93\83X\83g\81[\83\8b\82ð\8ds\82¤\81©\8e©\91O\82ÌHP\82ð\97p\88Ó\82·\82é
165         - \83C\83\93\83X\83g\81[\83\8b\82Ì\88ê\94Ô\8dÅ\8cã\82ÉDokoPop!\82Ì\91\80\8dì(\8dÄ\8bN\93®\81H\81j\82ð\91£\82·
166 \81E[B] Ctrl\83L\81[\82ð\97£\82µ\82½\82ç\95Â\82\82é\82ð\8aO\82·\82ª\93®\82©\82È\82¢
167 \81E[B] aero/metro\97L\8cø\8e\9e\82Ì\93®\8dì\83e\83X\83g
168 \81E[B] PDIC\96{\91Ì\82Ì\8bN\93®\8am\94F\82Í\82Ç\82¤\82·\82é\81H
169 \81E[B] VUP\8b@\94\
170 \81E[B] Q&A\82Ì\97p\88Ó
171 \81E[C] VUP\92Ê\92m\8b@\94\
172 \81E[C] amodi OCR\93®\8dì\92\86\82ð\82Ç\82±\82©\82Å\8fo\82µ\82½\82Ù\82¤\82ª\82¢\82¢\82Ì\82Å\82Í\81H
173 \81E[C] \82à\82¤\8f­\82µclickable area\82ð\8dL\82­\82Å\82«\82È\82¢\82©\81Hpdf\82Å\82Í\83q\83b\83g\82³\82¹\82é\82Ì\82ª\93ï\82µ\82¢\81¨MARGIN_UNDER_CLICK\82Å\92²\90®
174 \81E[C] metro\8fã\81AWin8/PDF Viewer\8fã\82È\82Çwin8\93Æ\8e©\83A\83v\83\8a\82Å\82Ì\93®\8dì\83e\83X\83g
175 \81E[B] biggest\82ª\83q\83b\83g\82µ\82È\82¢
176 \81E[C] \93ñ\8fd\8bN\93®\93®\8dì\83e\83X\83g
177 \81E[C] installer
178   - version\8e©\93®\95t\82¯\91Ö\82¦\8b@\94\
179 \81E[B?] popup\8c\9f\8dõ\8e\9e\82àmulti thread\82É\82·\82é
180   - \82»\82ê\82æ\82è\81A\97D\90æ\8f\87\88Ê\82Ì\8d\82\82¢\82à\82Ì\82©\82ç\97D\90æ\93I\82É\95\\8e¦\82µ\82½\82Ù\82¤\82ª\82¢\82¢\82©\82à\82µ\82ê\82È\82¢
181   - \82Ç\82±\82Å\8e\9e\8aÔ\82ª\82©\82©\82Á\82Ä\82¢\82é\82Ì\82©\82à\82¤\8f­\82µ\8fÚ\82µ\82­\92²\82×\82é
182 \81E[C] AMODI\88Ù\8fí\8fI\97¹\91Î\8dô
183   - DLL\82à\88ê\8f\8f\82É\8e\80\96S\82·\82é\82½\82ß\81A\8dÄ\8bN\93®\82µ\82©\82È\82¢\81H\81¨\90Ý\92è\82ª\8c³\82É\96ß\82é\82à\82Ì\82ª\82 \82é\82½\82ß\82æ\82ë\82µ\82­\82È\82¢
184 \81E[C?] PDIC\8fã\82Å\82Íinc.srch\82ª\93®\8dì\82µ\82È\82¢\82æ\82¤\82É\82·\82é\81¨\96â\91è\82È\82¢\81H
185 \81E[C] button down\82ðtrigger\82É\82µ\82Ä\82¢\82é\82ª\81Abutton up\82ðtrigger\82É\82µ\82Äup cancel\82·\82é\82Ì\82ð\8e~\82ß\82Ä\82Ý\82Ä\82Í\81H
186   [\95\8c¾]
187    MODI\82ð\83C\83\93\83X\83g\81[\83\8b\82·\82é\82ÆDokoPop!\82Å\8c\9f\8dõ\82Å\82«\82é\83A\83v\83\8a\82ð\91\9d\82â\82·\82±\82Æ\82ª\82Å\82«\82Ü\82·\81B
188    (URL)\82ð\8eQ\8dl\82É\83C\83\93\83X\83g\81[\83\8b\82ð\8ds\82Á\82Ä\82­\82¾\82³\82¢\81B
189    \81¦\83\8a\83\93\83N\90æ\82Ì\83y\81[\83W\82ª\90³\82µ\82­\95\\8e¦\82³\82ê\82È\82¢\8fê\8d\87\82Í\81A"MODI OCR \83C\83\93\83X\83g\81[\83\8b"\82Å\83l\83b\83g\8c\9f\8dõ\82µ\82Ä\92²\82×\82Ä\82Ý\82Ä\82­\82¾\82³\82¢\81B
190    \81¦Win2K\82Å\82Í\82»\82Ì\82Ü\82Ü\82Å\82Í\8eg\97p\82Å\82«\82Ü\82¹\82ñ\81B
191 \81E[C] AMODI\82Ì\8fI\97¹\91Î\8dô
192   - DokoPop!\8dÄ\8bN\93®\82Å\82¢\82¢\82©\81H
193   - \8dÅ\92á\82Å\82à\8cx\8d\90\82ð\8fo\82µ\82½\95û\82ª\81H
194 \81E[C] \83l\83b\83g\83\8f\81[\83N\83\82\81[\83h - AMODI\82ðserver\8fã\82É\92u\82­
195   - Windows\8b¤\97L\82Å\82¢\82¢\81H - \82±\82Ì\8dÛ\81A\83t\83@\83C\83\8b\8ew\92è\82ª\95K\97v
196   - TCP/IP\82Í\8d\82\91¬\82¾\82¯\82Ç\81A\96Ê\93|\82¾\82µ\82È\81B\81B
197         reponse\82ª\88«\82¯\82ê\82ÎTCP/IP\82ð\8dl\82¦\82é
198
199 \81¡BUG\8a®\97¹
200 \81E[B] MODI install - \83^\83C\83~\83\93\83O\82ª\88«\82¢\82Æ\81A
201   MODI\83C\83\93\83X\83g\81[\83\8b\92\86\82ÉMODI\94F\8e¯\81¨\8dÄ\8bN\93®\81¨MODI\8cë\94F\81iinstall\82³\82ê\82Ä\82¢\82È\82¢\81j\81¨\8dÄ\82Ñ\83C\83\93\83X\83g\81[\83\8b\82µ\82ëDialog
202   \81¨interval\82ð\92u\82¢\82Ächeck\82·\82é\82æ\82¤\82É\82µ\82½
203 \81E[B] MODI\83C\83\93\83X\83g\81[\83\8bDIALOG\82ð\95Â\82\82é\82Æ\83^\83X\83N\83o\81[\82É\83A\83C\83R\83\93\82ª\8ec\82é
204   \81¨FormCreate\92\86\82Édialog\82ð\95\\8e¦\82³\82¹\82½\82½\82ß\81¨IdleProc\82Ö
205 \81E[A] \8f]\97\88\82Ìdokopop\82ª\93®\82©\82È\82­\82È\82Á\82½@vaio
206   \81¨USE_VXD\91Î\89\9e\82É\82æ\82èWindowsNT flag\82ªfalse\82É\82È\82Á\82Ä\82µ\82Ü\82Á\82½\82½\82ß\81AGetTextFromPoint()\82ª\8eÀ\8e¿\89½\82à\8eÀ\8ds\82¹\82¸-1\82ð\95Ô\82µ\82Ä\82¢\82½\82½\82ß\81B
207 \81E[B?] \8f\89\8aú\89»\8e\9e\82É64\91¤\82ÌConfig2\82ª\8cÄ\82Î\82ê\82È\82¢\81H
208   \81¨pdhk64\82ª\8f\89\8aú\89»\8a®\97¹\82·\82é\91O\82ÉConfig\82µ\82Ä\82¢\82½
209 \81EPDF\82Å\94÷\96­\82É\8fã\89º\88Ê\92u\82ª\82¸\82ê\82é\82Æ\82«\82ª\82 \82é\81¨\94F\8e¯\91Î\8fÛ\95\8e\9a\97ñ\82Ì\90æ\93ª\82É\97]\8cv\82È\8bó\8ds\82ª\93ü\82é\8fê\8d\87\82ª\82 \82Á\82½\82½\82ß
210 \81E[C] \83C\83\93\83N\83\8a\83\81\83\93\83^\83\8b\83T\81[\83`ON\82Å\97\8e\82¿\82é
211   - Config2()\82ð\8cÄ\82Ñ\8fo\82µ\82Ä\82¢\82é\82¾\82¯\82Ì\82Í\82¸\82¾\82ª\81Ahook/unhook\82ª\8cÄ\82Î\82ê\82Ä\82¢\82é
212         \81¨Config2()\82©\82çTHookLoader::Capture\82Ü\82Å\82Ì\8aÔ\82É\8cÄ\82Î\82ê\82Ä\82¢\82é
213         \81¨config\92¼\8cã\82Émouse move message\82ªcallback\82³\82ê\81A\82·\82®\82Écapture\82·\82é\82©\82ç\82¢\82¯\82È\82¢\82Ì\82©\81H
214         \81¨\82¢\82â\81AhDll->Capture()\8e©\91Ì\82ª\95s\88À\92è\82¾\82Á\82½\81B\82Æ\82¢\82¤\82±\82Æ\82Í\90ö\8dÝ\93I\82É\82 \82Á\82½\96â\91è\81H(AMODI=OFF)
215         \81¨DBW\82ðOFF\82É\82µ\82½\82ç\89ð\8c\88\81i\82Å\82Í\89½\82ª\96{\93\96\82Ì\8c´\88ö\81H\81j
216 \81E[B] VS2010\82Ì\83G\83f\83B\83^\81[\82Å\90³\8fí\82É\93®\82©\82È\82¢
217   \81¨click point\82ª100pixel\82­\82ç\82¢\89E\82É\82¸\82ê\82Ä\82¢\82é\81H\8fã\89º\95û\8cü\82à
218   \81¨amodi\91¤\82Í\96â\91è\82È\82µ\81Bcaptured image\82Æcursor\8dÀ\95W\82ª\82¸\82ê\82Ä\82¢\82é\81H
219    - capture page\82ð\82µ\82Ä\82à\82¸\82ê\82Ä\82¢\82é\81B
220   \81¨\82í\82©\82Á\82½\81Bmouse cursor\82ÍGetWindowRect()\82É\82æ\82éwindow\91S\91Ì\82È\82Ì\82É\91Î\82µ\81A
221         \89æ\91\9c\82ÍGetWindowDC()+BitBlt(hdc)\82Å\82â\82Á\82Ä\82¢\82é\82½\82ß\81Ahdc\82ª\91Î\8fÛ\82É\82È\82Á\82Ä\82µ\82Ü\82¤\81B
222   \81¨screen\8dÀ\95W\8cn\82Åpoint\82ð\88µ\82¢\81A\89æ\91\9c\82ÍGetWindowRect()\82Ì\97Ì\88æ\82ðBitBlt\82·\82é\82±\82Æ\82Å\91Î\89\9e
223 \81E[B][inc.srch] \83}\83E\83X\89º\82Ì\83A\83v\83\8a\82ª\97\8e\82¿\82é(task manager@7 task manager,explorer@XP)
224   \81¨SendMessage( hwnd, WM_PAINT, (WPARAM)hdcMeta, 0 );
225         \82Å\97\8e\82¿\82Ä\82¢\82½\82Ì\82Å\81ARETRYMETA\82ð0\82É\82µ\82½\81¨\82Ü\82¾\97\8e\82¿\82é
226   \81¨MouseProc\82ÆDoCapture\82ð\95ª\97£\82·\82ê\82Î\88À\92è\82·\82é\82ñ\82\82á\82È\82©\82ë\82¤\82©\81H
227   \81¨\8c\8b\98_\81F\95ª\97£\82µ\82Ä\81ADBW\82Í\95s\88À\92è\82É\82µ\81ADCHookTest.exe\82Ìbreakpoint\82à\95s\88À\92è\97v\88ö
228 \81E[A] Chrome\82ÅCtrl+\89E\83N\83\8a\83b\83N\82·\82é\82Æhit window\82ª\8fo\82é\92¼\91O\82ÉChrome\82ª\97\8e\82¿\82é
229   \81¨CaptureText\82ª\88«\82¢\82æ\82¤\82¾
230   \81¨ExtTextOutX()\82Ì\8f\91\82«\8a·\82¦(METAEXTTEXTOUT)\8e©\91Ì\82ª\8c´\88ö(\91ã\91Ö\8aÖ\90\94\82Ì\96â\91è\82Å\82Í\82È\82¢\81j
231   \81¨\8d¡\82Ü\82Å\82È\82º\93®\82¢\82Ä\82¢\82½\81H
232   - SetWriteProtect()\82Åprotect\89ð\8f\9c\82µ\82½\82Ì\82ª\88«\82¢\82æ\82¤\82¾
233   - \82»\82ê\82æ\82è\81AhProcess\82ªerror\82ð\8bN\82±\82µNULL\82¾\82Á\82½
234         \81¨\82±\82ê\82Å\97\8e\82¿\82é\82±\82Æ\82Í\89ð\8fÁ\82Å\82«\82½\82ª\81AhProcess\82ªNULL\82Ì\96â\91è\82ª\82 \82é
235 \81E[CB] OpenProcess\82Åerror
236   \81¨EnablePrivilege()\82ð\92Ç\89Á\82·\82é\82±\82Æ\82ÅOK
237 \81E[B] inc.srch\82Ì\93®\8dì\82ª\8fd\82¢
238   - ExecOCR-2\82Ì\8cã\82ª\82Ù\82Ú\92â\8e~\8fó\91Ô
239   \81¨MODI OCR Error\82ª\94­\90\82µ\82½\82Æ\82«\82É1.4sec\82Ù\82Ç\8e~\82Ü\82é
240   \81¨\94\92\82Ì\89æ\91\9c\82ª\82Å\82«\82Ä\82¢\82é
241   \81¨\8e\9e\81XGetDIBits()\82Å\8e¸\94s(error code\95s\96¾)\81B
242   \81¨\89æ\91\9c\83R\83s\81[\82Ì\83G\83\89\81[\83`\83F\83b\83N\82ð\82µ\82Á\82©\82è\82â\82Á\82½\82çMODI OCR Error\82Í\8bN\82«\82Ä\82¢\82È\82¢
243
244 \81¡FAQ
245 \81E\8aÇ\97\9d\8eÒ\8c \8cÀ\82Ì\83A\83v\83\8a\8fã\82Å\82Í\93®\8dì\82µ\82È\82¢
246 \81@\81¨\8aÇ\97\9d\8eÒ\8c \8cÀ\82ÅDoioPop!\82ð\8bN\93®\82·\82ê\82Î\89Â\94\
247   \81¨MODI\82ð\8eg\97p\82·\82ê\82Î\89Â\94\\81H
248
249 \81¡Note
250 \81EDCHook.dll\82ðVisualC++ 2010\82Å\83r\83\8b\83h\82·\82é\82Æ\81AWindows2000\82Å\93®\8dì\82µ\82È\82­\82È\82Á\82Ä\82µ\82Ü\82¤\81I\81I
251   \81iLoadLibrary\82Å\83G\83\89\81[\81j
252   \81¨DCHook/DCHook.6.0.sln\82ðVisualStudio2008\82Å\8aJ\82«\81A\83r\83\8b\83h\82·\82é
253 \81E64bit\83A\83v\83\8a\8fã\81¨32bitDLL\82Ì\82Ý\82ª\94½\89\9e
254   32bit\83A\83v\83\8a\8fã\81¨32bit/64bit\97¼\95û\82ÌDLL\82ª\94½\89\9e
255
256 \81¡MODI
257 WindowsXP\88È\8d~\91Î\89\9e(?)
258 - MDI to TIFF File Converter
259   \81¨\83C\83\93\83X\83g\81[\83\8b\82µ\82Ä\82Ý\82½\82ªbuild\82Å\82«\82¸(C:\Program Files (x86)\modiconv\82Émdivwctl.dll\82Æ\82¢\82¤\83t\83@\83C\83\8b\82Í\8c©\82Â\82©\82ç\82È\82©\82Á\82½\81j
260 - SharePoint Designer 2007\82ð\83C\83\93\83X\83g\81[\83\8b
261   http://www.microsoft.com/ja-jp/download/details.aspx?id=21581
262   "C:\Program Files (x86)\Common Files\Microsoft Shared\MODI\12.0"
263   \82É
264   MDIVWCTL.DLL
265   \82Æ\82¢\82¤\83t\83@\83C\83\8b\82ª\82Å\82«\82é\82Ì\82Å\81A\82±\82ê\82ðC#\82Ì\83v\83\8d\83W\83F\83N\83g\82Ì\8eQ\8fÆ\83p\83X\82É\8ew\92è\82·\82é
266   \81¦MODI/11.0\82Å\82Íamodi\82ªbuild\82Å\82«\82È\82¢(MODI\82ª\8c©\82Â\82©\82ç\82È\82¢error)@XP/VS2010
267 - SharePoint Designer\82È\82ñ\82Ä\8eg\82í\82È\82¢\81A\82Ù\82©\82Ì\95û\96@\82Í\82È\82¢\82©\81H
268   http://support.microsoft.com/kb/982760/ja-jp
269   \82½\82¾\82µ\81A\93®\8dì\96¢\8am\94F\81¨\83\8a\83\93\83N\90Ø\82ê2014.11.11
270
271 \81¡BUILD
272 \81EDCHook64 - VisualC++ 2010\82Å\8dì\90¬
273 \81E2016.9.22
274   DCHook.vcproj\82Éx64\97p\82ÌConfiguration\82ð\92Ç\89Á\81AVS3008\82Åx64\82ð\83r\83\8b\83h\82Å\82«\82é\82æ\82¤\82É\82µ\82½\81B
275   DCHook\VS2003, DCHook\VS2008, DCHook\VS2015\82Æ\82¢\82¤\83f\83B\83\8c\83N\83g\83\8a\82ð\8dì\90¬\82µ\82½\82ª\82¢\82¸\82ê\82à\90³\8fí\82É\82¢\82©\82È\82¢\81B
276   VS2008\82É\82Â\82¢\82Ä\82Í.vcproj\83t\83@\83C\83\8b\82ðDCHook\DCHook.vcproj\83t\83@\83C\83\8b\82Æ\94ä\8ar\82µ\82Ä\90Ý\92è\82·\82ê\82Î\82¤\82Ü\82­\93®\82­\82æ\82¤\82É\82È\82é\82Æ\8ev\82¤
277   \8c»\8e\9e\93_\82Ì\83v\83\8d\83W\83F\83N\83g
278   DCHook.6.0.sln, DCHook.vcproj\82ðVS2008\82Å\83r\83\8b\83h\82·\82é
279   \81¦DCHook.sln\82ÍVS2010\97p
280