OSDN Git Service

[Release] Ver.2.1.1
[dokopop/dokopop.git] / DCHookTest / MODINotifyDlg.cpp
1 //---------------------------------------------------------------------------
2
3 #include <vcl.h>
4 #pragma hdrstop
5
6 #include "MODINotifyDlg.h"
7 #include "Util.h"
8 //---------------------------------------------------------------------------
9 #pragma package(smart_init)
10 #pragma resource "*.dfm"
11
12 // \8eQ\8dl\81Fhttps://msdn.microsoft.com/ja-jp/library/5a4x27ek(v=vs.110).aspx
13 #define URL_DNF_INSTALL         "https://www.microsoft.com/ja-JP/download/details.aspx?id=40773"
14 #define URL_MODI_INSTALL        "http://support.microsoft.com/kb/982760"
15
16 TMODINotifyDialog *MODINotifyDialog;
17 //---------------------------------------------------------------------------
18 __fastcall TMODINotifyDialog::TMODINotifyDialog(TComponent* Owner)
19         : TForm(Owner)
20 {
21         LinkClicked = false;
22         modiInstalled = false;
23         amodiRunable = false;
24 }
25 //---------------------------------------------------------------------------
26 void __fastcall TMODINotifyDialog::FormCreate(TObject *Sender)
27 {
28         MoveCenter(Handle, NULL);
29         reMsgId = GetDlgCtrlID(reMsg->Handle);
30         //SetWindowLong(Handle, GWL_USERDATA, (LONG)reMsg->Handle);
31         SendMessage(reMsg->Handle, EM_AUTOURLDETECT, (WPARAM)TRUE, 0 ); // RichEdit 2.0 only
32         DWORD emask = SendMessage(reMsg->Handle, EM_GETEVENTMASK, 0, 0);
33         SendMessage(reMsg->Handle, EM_SETEVENTMASK, 0, emask | ENM_LINK);
34
35         modiInstalled = MODIInstalled();
36         amodiRunable = AMODIRunable();
37
38         SetMessage();   
39 }
40 //---------------------------------------------------------------------------
41 void TMODINotifyDialog::SetMessage()
42 {
43         if (modiInstalled && !amodiRunable){
44                 reMsg->Lines->Add(
45 "\81y\8fd\97v\81\95\8e\9a\94F\8e¯\82ð\8eg\97p\82·\82é\82É\82Í .NET Framework 4.5.1 \88È\8fã\82ª\95K\97v\82Å\82·\n"
46 "\n"
47 URL_DNF_INSTALL"\n"
48 "\n"
49 "\83\8a\83\93\83N\90æ\82©\82ç\83C\83\93\83X\83g\81[\83\8b\82ð\8ds\82Á\82Ä\82­\82¾\82³\82¢\n"
50 "\n"
51 "\81¦\83\8a\83\93\83N\90æ\82ª\8c©\82Â\82©\82ç\82È\82¢\8fê\8d\87\82Í\".NET Framework \83C\83\93\83X\83g\81[\83\8b\"\82Å\8c\9f\8dõ\82µ\82Ä\82­\82¾\82³\82¢\81B\n"
52 "\81¦\95\8e\9a\94F\8e¯\82ð\8eg\97p\82·\82é\82Æ\83|\83b\83v\83A\83b\83v\8c\9f\8dõ\82ª\82Å\82«\82é\83A\83v\83\8a\82ª\91\9d\82¦\82Ü\82·\81B\n"
53                 );
54         } else {
55                 reMsg->Lines->Add(
56 "\81y\8fd\97v\81z MODI\82ª\83C\83\93\83X\83g\81[\83\8b\82³\82ê\82Ä\82¢\82Ü\82¹\82ñ\81I\81I\n"
57 "\n"
58 "MODI\82ª\83C\83\93\83X\83g\81[\83\8b\82³\82ê\82Ä\82¢\82é\82Æ\81A\83|\83b\83v\83A\83b\83v\8c\9f\8dõ\82ª\82Å\82«\82é\83A\83v\83\8a\82ª\91\9d\82¦\82Ü\82·\81B\n"
59 "\n"
60 URL_MODI_INSTALL"\n"
61 "\n"
62 "\83\8a\83\93\83N\90æ\82É\82 \82é\82¢\82¸\82ê\82©\82Ì\95û\96@\82Å\83C\83\93\83X\83g\81[\83\8b\82ð\8ds\82Á\82Ä\82­\82¾\82³\82¢\81B\n"
63 "\81¦\92Ê\8fí\82Í\81u\95û\96@\82Q\81v\n"
64 "\81¦MODI\82Í\"Microsoft Office Document Imaging\"\82Ì\97ª\82Å\82·\n"
65 "\81¦\8fã\8bL\83\8a\83\93\83N\82ª\8aJ\82¯\82È\82¢\8fê\8d\87\82Í \"MODI\" \"\83C\83\93\83X\83g\81[\83\8b\" \82È\82Ç\82Å\8c\9f\8dõ\82µ\82Ä\82Ý\82Ä\82­\82¾\82³\82¢\n"
66                 );
67         }
68 }
69 void __fastcall TMODINotifyDialog::tmInstallCheckTimer(TObject *Sender)
70 {
71         bool _modiInstalled = MODIInstalled();
72         bool _amodiRunable = AMODIRunable();
73         if (_modiInstalled && _amodiRunable){
74                 // ready to go
75                 Close();
76         } else {
77                 if (modiInstalled!=_modiInstalled || amodiRunable!=_amodiRunable){
78                         modiInstalled = _modiInstalled;
79                         amodiRunable = _amodiRunable;
80                         SetMessage();
81                 }
82         }
83 }
84 //---------------------------------------------------------------------------
85 void TMODINotifyDialog::EvNotify( TMessage &msg )
86 {
87         if (msg.WParam==reMsgId){
88                 NMHDR *nmhdr = (NMHDR*)msg.LParam;
89                 if (nmhdr->code==EN_LINK){
90                         ENLINK *enlink = (ENLINK*)nmhdr;
91                         if (enlink->msg == WM_LBUTTONDOWN){
92                                 bool dnf = modiInstalled && !amodiRunable;
93                                 HINSTANCE hInst = ShellExecute(Handle, NULL, dnf ? URL_DNF_INSTALL : URL_MODI_INSTALL, NULL, NULL, SW_SHOWNORMAL);
94                                 if ((int)hInst>32){
95                                         LinkClicked = true;
96                                 }
97                         }
98                 }
99         }
100 }
101
102