OSDN Git Service

初期化処理の改善:amodi.exeの起動を正しく検知できず、amodiが使用できなくなる場合の対応
authortnishi <sgm00353@nifty.ne.jp>
Fri, 18 Nov 2016 10:48:44 +0000 (19:48 +0900)
committertnishi <sgm00353@nifty.ne.jp>
Fri, 18 Nov 2016 10:48:44 +0000 (19:48 +0900)
DCHookTest/DCHookMain.cpp
DCHookTest/DCHookMain.dfm
DCHookTest/DCHookMain.h
DCHookTest/Util.cpp

index 3893171..03fac5a 100644 (file)
@@ -184,9 +184,6 @@ void __fastcall TDCHookMainForm::FormCreate(TObject *Sender)
        }
 
 //     Application->OnIdle = IdleHandler;
-
-       if (fWow64)
-               tmReInit64->Enabled = true;
 }
 //---------------------------------------------------------------------------
 void __fastcall TDCHookMainForm::FormCloseQuery(TObject *Sender,
@@ -582,16 +579,17 @@ void __fastcall TDCHookMainForm::tmMODINotifyTimer(TObject *Sender)
        }
 }
 //---------------------------------------------------------------------------
-void __fastcall TDCHookMainForm::tmReInit64Timer(TObject *Sender)
+void __fastcall TDCHookMainForm::tmReInitTimer(TObject *Sender)
 {
-       // \8f\89\89ñ\8bN\93®\8e\9e\82Ì\82Ý\82±\82Ì\8f\88\97\9d\82ð\82µ\82È\82¢\82Æpopup\82µ\82È\82¢
-       // \8dÄ\83\8d\83O\83C\83\93\8e\9e\82Í\95s\97v
-       tmReInit64->Enabled = false;
-       Unhook();
-       bool use64 = Ini->ReadInteger(PFS_CONFIG, PFS_USE64, false);
-       Ini->WriteInteger(PFS_CONFIG, PFS_USE64, !use64);
-       Hook();
-       Ini->WriteInteger(PFS_CONFIG, PFS_USE64, use64);
+       // amodi.exe\82Ìlaunch\82É\94ñ\8fí\82É\8e\9e\8aÔ\82ª\82©\82©\82é\8fê\8d\87\82ª\82 \82é
+       // ex.\8cÃ\82¢PC\82Åstartup\82É\93o\98^\82µ\82Ä\82¢\82é\8fê\8d\87
+       //    \81¨input idle\82É\82È\82Á\82Ä\82àmain window\82Ì\90\90¬\82É\8e\9e\8aÔ\82ª\82©\82©\82Á\82Ä\82¢\82é\82Ì\82©\82à\82µ\82ê\82È\82¢
+       // AMODIAvail\82ªtrue\82É\82È\82é\82Ü\82Å\8f\89\8aú\89»\82ð\91±\82¯\82é
+       tmReInit->Enabled = false;
+       SetupAMODI();
+       if (AMODIAvail){
+               SetupConfig2();
+       }
 }
 //---------------------------------------------------------------------------
 // Mouse Events
@@ -1340,6 +1338,8 @@ void TDCHookMainForm::SetupAMODI()
                                HWND hwnd = FindAMODI();
                                if (hwnd)
                                        AMODIAvail = true;
+                               else
+                                       tmReInit->Enabled = true;       // retry later
                        }
                }
        }
index e42af8b..e12e26e 100644 (file)
@@ -2738,9 +2738,9 @@ object DCHookMainForm: TDCHookMainForm
     Left = 232
     Top = 273
   end
-  object tmReInit64: TTimer
+  object tmReInit: TTimer
     Enabled = False
-    OnTimer = tmReInit64Timer
+    OnTimer = tmReInitTimer
     Left = 280
     Top = 276
   end
index 4ee351d..3490b18 100644 (file)
@@ -70,7 +70,7 @@ __published:  // IDE 
        TTimer *tmMODINotify;
        TMenuItem *miCheckLatest;
        TMenuItem *miOCRText;
-       TTimer *tmReInit64;
+       TTimer *tmReInit;
        void __fastcall miHookClick(TObject *Sender);
        void __fastcall miUnhookClick(TObject *Sender);
        void __fastcall miExitClick(TObject *Sender);
@@ -106,7 +106,7 @@ __published:        // IDE 
        void __fastcall tmMODINotifyTimer(TObject *Sender);
        void __fastcall miCheckLatestClick(TObject *Sender);
        void __fastcall miOCRTextClick(TObject *Sender);
-       void __fastcall tmReInit64Timer(TObject *Sender);
+       void __fastcall tmReInitTimer(TObject *Sender);
 private:       // \83\86\81[\83U\81[\90é\8c¾
        //void __fastcall IdleHandler(TObject *sender, bool &done);
 
index 15318ec..d2bb816 100644 (file)
@@ -424,8 +424,14 @@ bool _WinExec( const char *cmd, int show, int waittime, const char *dir)
                return false;
        bool ret = true;
        if ( waittime ){
+//             DWORD startTime = GetTickCount();
                int r = WaitForInputIdle( pi.hProcess, waittime );
                ret = r==0;
+               if (!ret){
+                       dbw("CreateProcess: %d, 0x%X", r, GetLastError());
+               } else {
+//                     dbw("CreateProcess: %d", GetTickCount() - startTime);
+               }
        }
        CloseHandle( pi.hProcess );
        return ret;
@@ -491,11 +497,11 @@ bool LaunchAMODI()
 #else
                SW_HIDE;
 #endif
-       if (!_WinExec( AMODI_EXE_PATH, show, 500))
+       if (!_WinExec( AMODI_EXE_PATH, show, 300))
                return false;
 
        HWND hwnd = NULL;
-       for (int i=0;i<30;i++){
+       for (int i=0;i<10;i++){
                hwnd = FindAMODI();
                if (hwnd)
                        break;