diff --git a/HookMsg/Condition.cpp b/HookMsg/Condition.cpp index e5c6d32..46bae55 100644 --- a/HookMsg/Condition.cpp +++ b/HookMsg/Condition.cpp @@ -36,8 +36,29 @@ void CCondition::Finalize() m_arrManual.RemoveAll(); } +void CCondition::LoadSysnonyms(const CString& FileName) +{ + FILE* fp = fopen(FileName.GetString(), "rt"); + if(fp == NULL) + return; + + m_SynonymList.clear(); + + char szNameFrom[100]; + char szNameTo[100]; + while(!feof(fp)) + { + fscanf(fp, "%s %s\n", szNameFrom, szNameTo); + m_SynonymList[szNameFrom] = szNameTo; + } + + fclose(fp); +} + BOOL CCondition::Refresh() { + LoadSysnonyms("±â¾÷_µ¿ÀǾî.txt"); + if( Init_Item_Multi( m_arrTextNot, "°ø½Ã_ºÎÁ¤¹®±¸.txt" ) ) if( Init_Item_Multi( m_arrTextAnd, "°ø½Ã_±àÁ¤¹®±¸.txt" ) ) if( Init_Item_Multi( m_arrNewsPlusAnd_Special, "´º½ºÇ÷¯½º_Ưº°¿ë_±àÁ¤¹®±¸.txt" ) ) @@ -241,14 +262,14 @@ enum HM_CONDITION_TYPE CCondition::DetectConditionTitle( CString & strTitle, int { if( ! SearchNot( m_arrNewsPlusNot, strTitle ) ) // [´º½ºÇ÷¯½º_ºÎÁ¤¹®±¸]¸¦ ã´Â´Ù. { - if ( SearchAnd( m_arrManual, strTitle ) ) // [´º½ºÇ÷¯½º_¼öµ¿¹®±¸]¸¦ ã´Â´Ù. - return HM_CONDITION_TYPE_MANUAL; - if( SearchAnd( m_arrNewsPlusAnd_Special, strTitle ) ) // [´º½ºÇ÷¯½º_Ưº°¿ë_±àÁ¤¹®±¸]¸¦ ã´Â´Ù. return HM_CONDITION_TYPE_SPECIAL; if ( SearchAnd( m_arrNewsPlusAnd_Normal, strTitle ) ) // [´º½ºÇ÷¯½º_ÀϹݿë_±àÁ¤¹®±¸]¸¦ ã´Â´Ù. return HM_CONDITION_TYPE_NORMAL; + + if ( SearchAnd( m_arrManual, strTitle ) ) // [´º½ºÇ÷¯½º_¼öµ¿¹®±¸]¸¦ ã´Â´Ù. + return HM_CONDITION_TYPE_MANUAL; } } else // TK, IM, 7121 °øÅë. diff --git a/HookMsg/Condition.h b/HookMsg/Condition.h index 191f9e2..a0a3791 100644 --- a/HookMsg/Condition.h +++ b/HookMsg/Condition.h @@ -9,6 +9,11 @@ #pragma once #endif // _MSC_VER > 1000 + +#include +#include + + enum HM_CONDITION_TYPE { HM_CONDITION_TYPE_FALSE = -1, @@ -33,6 +38,8 @@ public: /////////////////////////////////////////////////////////// // °ø½Ã ¹®ÀåºÐ¼® : ±àÁ¤/ºÎÁ¤. enum HM_CONDITION_TYPE DetectConditionTitle( CString & strTitle, int nSrcType ); + + std::map m_SynonymList; private: BOOL Init_Item_Single( CStringArray &array, CString strFile ); @@ -43,7 +50,8 @@ private: // Not °Ë»ö±â´É. BOOL SearchNot( CStringArray &array, CString &strSource ); -private: + void LoadSysnonyms(const CString& FileName); + CStringArray m_arrTextNot; // °ø½Ã ºÎÁ¤¹®±¸. CStringArray m_arrTextAnd; // °ø½Ã ±àÁ¤¹®±¸. @@ -53,6 +61,8 @@ private: CStringArray m_arrNewsPlusNot; // ´º½ºÇ÷¯½º_ºÎÁ¤¹®±¸. CStringArray m_arrManual; // ¼öµ¿ ¹®±¸. + + }; #endif // !defined(AFX_CONDITION_H__44C2F7E9_C1A6_4017_9143_69C3C4FC9E54__INCLUDED_) diff --git a/HookMsg/HookMsgDlg.cpp b/HookMsg/HookMsgDlg.cpp index 8c00c6a..725b69d 100644 --- a/HookMsg/HookMsgDlg.cpp +++ b/HookMsg/HookMsgDlg.cpp @@ -324,6 +324,7 @@ BOOL CHookMsgDlg::OnInitDialog() CDialog::OnInitDialog(); m_bInitSuccess = TRUE; + /////////////////////////////////////////////////////////////////// TraceMsg( "[ÃʱâÈ­] ȯ°æÆÄÀÏ °Ë»çÁß..." ); CFileFind _file; @@ -1414,26 +1415,31 @@ BOOL CHookMsgDlg::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct) { memset(m_szTitle, NULL, MAX_RECEIVE_LEN); memcpy(m_szTitle, cpData.ExtraData, strlen((char*)cpData.ExtraData) ); - } else { - + } + else + { DWORD dwWritten; - switch(cpData.lParam) { + switch(cpData.lParam) + { // ½Ã°£ case 1: memcpy(m_szWnd3_Time, cpData.ExtraData, strlen((char*)cpData.ExtraData)+1); + m_szWnd3_Title[0] = NULL; + m_szWnd3_Name[0] = NULL; break; // ŸÀÌÆ² case 2: memcpy(m_szWnd3_Title, cpData.ExtraData, strlen((char*)cpData.ExtraData)+1); - TRACE("[2]%s\n",m_szWnd3_Title); + TRACE("[2]%s(%s)\n", m_szWnd3_Title, m_szWnd3_Name); break; // Á¾¸ñ¸í case 3: - TRACE("[3]%s\n",m_szWnd3_Title); memcpy(m_szWnd3_Name, cpData.ExtraData, strlen((char*)cpData.ExtraData)+1); + TRACE("[3]%s(%s)\n", m_szWnd3_Title, m_szWnd3_Name); - if(m_szWnd3_Name[0] != 0) { + if(m_szWnd3_Name[0] != 0) + { WriteFile(hFile,m_szWnd3_Time,strlen(m_szWnd3_Time),&dwWritten,NULL); WriteFile(hFile,"\n",1,&dwWritten,NULL); WriteFile(hFile,m_szWnd3_Title,strlen(m_szWnd3_Title),&dwWritten,NULL); @@ -1483,7 +1489,8 @@ BOOL CHookMsgDlg::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct) } else { - if(RetrieveNewsData()) { + if(RetrieveNewsData()) + { m_pWorkEvent2->SetEvent(); m_pWorkEvent->SetEvent(); } @@ -1562,6 +1569,49 @@ BOOL CHookMsgDlg::_ExtractJCode( int nSrcType, CString & _strTitle, CString & st //~! strJCode = (LPCSTR)objStockCode->NameToCode( m_szWnd3_Name ); + + + + // Á¦¸ñ¿¡¼­ ÄÚµå ã±â + { + CString Name = ""; + CString Code = ""; + CString strTitleTmp = m_szWnd3_Title; + + int iCommaPos = strTitleTmp.Find(","); + if(iCommaPos >= 0) + { + Name = GetLastWord(strTitleTmp.Left(iCommaPos)); + } + else + { + int iSpacePos = strTitleTmp.Find(" "); + Name = strTitleTmp.Left(iSpacePos); + } + + ICpStockCodePtr objStockCode; + objStockCode.CreateInstance( CLSID_CpStockCode ); + Code = (LPCSTR)objStockCode->NameToCode((bstr_t)(LPCSTR)Name); + + if(Code[0] != NULL) + { + strJCode = Code; + strJName = Name; + } + else if(g_Condition.m_SynonymList[Name.GetString()] != "") + { + Name = g_Condition.m_SynonymList[Name.GetString()].data(); + Code = (LPCSTR)objStockCode->NameToCode((bstr_t)Name.GetString()); + if(Code[0] != NULL) + { + strJCode = Code; + strJName = Name; + } + } + + objStockCode.Release(); + } + bRet = TRUE; } else if( nSrcType == UM_SRC_INFOTICKER ) @@ -1810,6 +1860,21 @@ void CHookMsgDlg::_WorkThreadProc(UINT ThreadType) ////////////////////////////////////////////////////////////////////// // Á¦¸ñ¸¸À¸·Î Á¶°Ç°Ë»öÀ» ÁøÇàÇÔ! HM_CONDITION_TYPE ConditionType = g_Condition.DetectConditionTitle( g_strTitle, _nSourceFrom ); + + ////////////////////////////////////////////////////// + // Á¾¸ñÄÚµå ÀÚµ¿ÀÔ·Â. + if( WORD_THREAD_WITH_HOGA == ThreadType && (bSuccess || InputCodeTypeStatus(_nSourceFrom)) ) + { + TraceMsg( strSrc + "[Á¾¸ñÄÚµå ÀÚµ¿ÀÔ·Â] : " + g_strJCode + ", " + g_strJName, TxtColor, BgColor, TRUE ); + AutoInputJongmokCode(_nSourceFrom, g_strJCode.Right(6) ); + + if( g_AppEnv.bJInputAndStop2 ) // 2003-11-15 ÄÚµå»èÁ¦. 2004.4.28 Ãß°¡º¯°æ. + { + OnMonitorPause(); + } + } + + if( ConditionType != HM_CONDITION_TYPE_FALSE ) { try @@ -2168,19 +2233,6 @@ _LAST_JOB_: ////////////////////////////////////////////////////// // ¹«Á¶°Ç Çѹø ³ª¿Â Á¾¸ñÀº [Áߺ¹Á¾¸ñ]¿¡ µî·ÏÇÔ! g_pStockData->AddRepeatedCode( g_strJCode ); - - ////////////////////////////////////////////////////// - // Á¾¸ñÄÚµå ÀÚµ¿ÀÔ·Â. - if( WORD_THREAD_WITH_HOGA == ThreadType && (bSuccess || InputCodeTypeStatus(_nSourceFrom)) ) - { - TraceMsg( strSrc + "[Á¾¸ñÄÚµå ÀÚµ¿ÀÔ·Â] : " + g_strJCode + ", " + g_strJName, TxtColor, BgColor, TRUE ); - AutoInputJongmokCode(_nSourceFrom, g_strJCode.Right(6) ); - - if( g_AppEnv.bJInputAndStop2 ) // 2003-11-15 ÄÚµå»èÁ¦. 2004.4.28 Ãß°¡º¯°æ. - { - OnMonitorPause(); - } - } return; } @@ -2699,19 +2751,20 @@ LRESULT CHookMsgDlg::OnTickerSocketReceive(WPARAM wParam, LPARAM lClient) return 0; } -CString GetLastWord(const CString& strSource) +CString CHookMsgDlg::GetLastWord(const CString& strSource) const { CString strTmp = strSource; int iPos = 0; CString strRes1 = ""; CString strRes2 = ""; + CString szToken = "\"\')]\t "; - strRes2 = strTmp.Tokenize(")]\t ", iPos); + strRes2 = strTmp.Tokenize(szToken, iPos); while (strRes2 != "") { strRes1 = strRes2; - strRes2 = strTmp.Tokenize(")]\t ", iPos); + strRes2 = strTmp.Tokenize(szToken, iPos); } return strRes1; @@ -2728,39 +2781,41 @@ bool CHookMsgDlg::RetrieveNewsData() // ŸÀÌÆ² Á¤º¸ ÀúÀå if(m_nSourceFrom == UM_HOOKOK_WND1 || m_nSourceFrom == UM_HOOKOK_WND2) + { n_strTitle = m_szTitle; + } else if(m_nSourceFrom == UM_HOOKOK_WND3) { - // Á¾¸ñ¸íÀÌ ¾ø´Â Á¤º¸´Â ¹«½ÃÇÑ´Ù. - if(m_szWnd3_Name[0] == 0) - { - CString Name; + //// Á¾¸ñ¸íÀÌ ¾ø´Â Á¤º¸´Â ¹«½ÃÇÑ´Ù. + //if(m_szWnd3_Name[0] == 0) + //{ + // CString Name; + // CString strTitleTmp = m_szWnd3_Title; + // + // int iCommaPos = strTitleTmp.Find(","); + // if(iCommaPos >= 0) + // { + // Name = GetLastWord(strTitleTmp.Left(iCommaPos)); + // } + // else + // { + // int iSpacePos = strTitleTmp.Find(" "); + // Name = strTitleTmp.Left(iSpacePos); + // } - CString strTitleTmp = m_szWnd3_Title; - - int iCommaPos = strTitleTmp.Find(","); - if(iCommaPos >= 0) - { - Name = GetLastWord(strTitleTmp.Left(iCommaPos)); - } - else - { - int iSpacePos = strTitleTmp.Find(" "); - Name = strTitleTmp.Left(iSpacePos); - } + // ICpStockCodePtr objStockCode; + // objStockCode.CreateInstance( CLSID_CpStockCode ); + // CString Code = (LPCSTR)objStockCode->NameToCode((bstr_t)(LPCSTR)Name); + // objStockCode.Release(); - ICpStockCodePtr objStockCode; - objStockCode.CreateInstance( CLSID_CpStockCode ); - CString Code = (LPCSTR)objStockCode->NameToCode((bstr_t)(LPCSTR)Name); - objStockCode.Release(); + // if(Code[0] == NULL) + // return false; - if(Code[0] == NULL) - return false; - - strcpy(m_szWnd3_Title, Name.GetString()); - } - n_strTitle = m_szWnd3_Title; - n_strJName = m_szWnd3_Name; + // strcpy(m_szWnd3_Name, Name.GetString()); + // n_strJCode = Code; + //} + //n_strTitle = m_szWnd3_Title; + //n_strJName = m_szWnd3_Name; } ////////////////////////////////////////////////////////////////////// @@ -2769,13 +2824,16 @@ bool CHookMsgDlg::RetrieveNewsData() // NewsPlus -> 7001 if(m_nSourceFrom == UM_HOOKOK_WND3 && g_nSourceFrom == UM_HOOKOK_WND2 && - !n_strTitle.Compare(g_strTitle.Right(g_strTitle.GetLength()-6))) { + !n_strTitle.Compare(g_strTitle.Right(g_strTitle.GetLength()-6))) + { TraceMsg(n_strTitle+"[NewsPLus->7001,µ¿ÀÏ´º½º ½ºÅµ]", CXListBox::Red, CXListBox::Yellow, TRUE ); return false; // 7001 -> NewsPlus - } else if(m_nSourceFrom == UM_HOOKOK_WND2 && + } + else if(m_nSourceFrom == UM_HOOKOK_WND2 && g_nSourceFrom == UM_HOOKOK_WND3 && - !g_strTitle.Compare(n_strTitle.Right(n_strTitle.GetLength()-6))) { + !g_strTitle.Compare(n_strTitle.Right(n_strTitle.GetLength()-6))) + { TraceMsg(n_strTitle+"[7001->NewsPLus,µ¿ÀÏ´º½º ½ºÅµ]", CXListBox::Red, CXListBox::Yellow, TRUE ); return false; } @@ -2787,6 +2845,11 @@ bool CHookMsgDlg::RetrieveNewsData() // TraceMsg( "[Á¾¸ñÄÚµå¾øÀ½] : " + g_strTitle, CXListBox::White, CXListBox::Red ); return false; } + + if(n_strJCode[0] == NULL) + return false; + + dwRetEnd = ::GetTickCount(); CString strTime; diff --git a/HookMsg/HookMsgDlg.h b/HookMsg/HookMsgDlg.h index 95aac5f..a9498f0 100644 --- a/HookMsg/HookMsgDlg.h +++ b/HookMsg/HookMsgDlg.h @@ -17,6 +17,9 @@ #include "TickerSocket.h" +#include +#include + #define WM_ICON_NOTIFY WM_USER+10 @@ -112,7 +115,9 @@ private: void HLStockWindowShow( CString strJCode, CString strExtraData = "" ); void ShowHideLockControlDlg( BOOL bShow ); - CLockControlDlg * m_pLCDlg; + CString GetLastWord(const CString& strSource) const; + + CLockControlDlg* m_pLCDlg; CFont m_LockUnlockBtnFont; diff --git a/HookMsg/NewsLog.txt b/HookMsg/NewsLog.txt index 9beeff6..f5431de 100644 --- a/HookMsg/NewsLog.txt +++ b/HookMsg/NewsLog.txt @@ -1,12 +1,8 @@ -14:21 -¿ìÁø -¿ìÁø +09:00 +³ó½É, 3Q ½ÇÀû ºÎÁø..¶ó¸é Á¡À¯À² °³¼± Áö¿¬-Çѱ¹ +³ó½É -14:21 -Ű¿òÁõ±Ç, ´Þ·¯¼±¹°, ±¹Ã¤¼±¹° ¼ö¼ö·á ¹«·á À̺¥Æ® -Ű¿òÁõ±Ç - -14:21 -¿ìÁø -¿ìÁø +09:00 +¼Öºê·¹ÀÎ, ´ëÇ¥ÀÌ»ç 50¸¸ÁÖ Àå³» ¸Åµµ +¼Öºê·¹ÀÎ