From: tnishi Date: Fri, 18 Nov 2016 10:48:44 +0000 (+0900) Subject: 初期化処理の改善:amodi.exeの起動を正しく検知できず、amodiが使用できなくなる場合の対応 X-Git-Url: http://git.osdn.net/view?p=dokopop%2Fdokopop.git;a=commitdiff_plain;h=724ae101fe9d1e128a65981925a9f8762e0c3c86 初期化処理の改善:amodi.exeの起動を正しく検知できず、amodiが使用できなくなる場合の対応 --- diff --git a/DCHookTest/DCHookMain.cpp b/DCHookTest/DCHookMain.cpp index 3893171..03fac5a 100644 --- a/DCHookTest/DCHookMain.cpp +++ b/DCHookTest/DCHookMain.cpp @@ -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) { - // ‰‰ñ‹N“®Žž‚Ì‚Ý‚±‚̏ˆ—‚ð‚µ‚È‚¢‚Æpopup‚µ‚È‚¢ - // ÄƒƒOƒCƒ“Žž‚Í•s—v - 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‚Ìlaunch‚É”ñí‚ÉŽžŠÔ‚ª‚©‚©‚éê‡‚ª‚ ‚é + // ex.ŒÃ‚¢PC‚Åstartup‚É“o˜^‚µ‚Ä‚¢‚éê‡ + // ¨input idle‚É‚È‚Á‚Ä‚àmain window‚̐¶¬‚ÉŽžŠÔ‚ª‚©‚©‚Á‚Ä‚¢‚é‚Ì‚©‚à‚µ‚ê‚È‚¢ + // AMODIAvail‚ªtrue‚É‚È‚é‚܂ŏ‰Šú‰»‚𑱂¯‚é + 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 } } } diff --git a/DCHookTest/DCHookMain.dfm b/DCHookTest/DCHookMain.dfm index e42af8b..e12e26e 100644 --- a/DCHookTest/DCHookMain.dfm +++ b/DCHookTest/DCHookMain.dfm @@ -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 diff --git a/DCHookTest/DCHookMain.h b/DCHookTest/DCHookMain.h index 4ee351d..3490b18 100644 --- a/DCHookTest/DCHookMain.h +++ b/DCHookTest/DCHookMain.h @@ -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: // ƒ†[ƒU[éŒ¾ //void __fastcall IdleHandler(TObject *sender, bool &done); diff --git a/DCHookTest/Util.cpp b/DCHookTest/Util.cpp index 15318ec..d2bb816 100644 --- a/DCHookTest/Util.cpp +++ b/DCHookTest/Util.cpp @@ -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;