This commit is contained in:
308
HookMsg/HookMsgDlg.h
Normal file
308
HookMsg/HookMsgDlg.h
Normal file
@@ -0,0 +1,308 @@
|
||||
// HookMsgDlg.h : header file
|
||||
//
|
||||
|
||||
#if !defined(AFX_HOOKMSGDLG_H__C6A5153E_1FD5_46AD_955E_DADD41BD7DAD__INCLUDED_)
|
||||
#define AFX_HOOKMSGDLG_H__C6A5153E_1FD5_46AD_955E_DADD41BD7DAD__INCLUDED_
|
||||
|
||||
#if _MSC_VER > 1000
|
||||
#pragma once
|
||||
#endif // _MSC_VER > 1000
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CHookMsgDlg dialog
|
||||
#include <afxpriv.h>
|
||||
#include "LockControlDlg.h"
|
||||
|
||||
#include "./UtilClass/TrayIcon.h"
|
||||
|
||||
#include "TickerSocket.h"
|
||||
|
||||
|
||||
#define WM_ICON_NOTIFY WM_USER+10
|
||||
|
||||
#define WM_SVRSEND_COMMAND WM_USER+200
|
||||
|
||||
#define WM_START_COMMAND WM_USER+9000
|
||||
#define WM_STOP_COMMAND WM_USER+9001
|
||||
#define WM_REJECTLISTUPDATE_COMMAND WM_USER+9010
|
||||
|
||||
#define TIMEID_TRAYICON 1
|
||||
#define TIMEID_7121DBCLICK 2
|
||||
|
||||
#define UM_SRC_INFOTICKER 0x4444
|
||||
class CClientSocket;
|
||||
class CTickerSocket;
|
||||
|
||||
class CHookMsgDlg : public CDialog, public CThinThread
|
||||
{
|
||||
friend class CLockControlDlg;
|
||||
|
||||
BOOL m_bInitSuccess; // 초기화 완료여부.
|
||||
|
||||
private:
|
||||
HANDLE hFile;
|
||||
|
||||
public:
|
||||
void StartWork(); // override to do startup
|
||||
void DoWork(UINT ThreadType); // override to do work
|
||||
void EndWork(); // override to do shutdown
|
||||
|
||||
void _WorkThreadProc(UINT ThreadType); // 매수판단 Processing 함수.
|
||||
|
||||
BOOL _ExtractJCode( int nSrcType, CString &_strTitle, CString & strJCode, CString & strJName );
|
||||
char m_szHotKey_JCode[20];
|
||||
|
||||
// IDibPtr m_pCpConclusion;
|
||||
// CCpDibEvent * m_pCpConclusionEvent;
|
||||
|
||||
long m_nSrcJumoon_Number; // 매수(매도)원 주문번호.
|
||||
long m_nAutoMedoMoney; // 자동매도시 주문금액.
|
||||
BOOL m_bUsingStockCheckThread; // 코스닥 현재가 쓰레드 적용여부.
|
||||
|
||||
// Construction
|
||||
public:
|
||||
CHookMsgDlg(CWnd* pParent = NULL); // standard constructor
|
||||
virtual ~CHookMsgDlg();
|
||||
|
||||
void PlaySound( CString strWaveFile );
|
||||
void TraceMsg( CString strMsg, CXListBox::Color tc=CXListBox::Black, CXListBox::Color bc=CXListBox::White, BOOL bWriteFile=FALSE );
|
||||
void SetDlgCtrlPosition(int cx, int cy);
|
||||
|
||||
DWORD m_dwTickStart; // 작업쓰레드의 시작시각 기록.
|
||||
DWORD m_dwCallTimeLast; // 30초간의 주문호출 회수제한을 위한 이전 시각기록.
|
||||
DWORD m_dwMonitorPauseTime; // 잠김상태 전환시 시각기록.
|
||||
|
||||
CTrayIcon m_TrayIcon;
|
||||
UINT m_nTrayIconTimer;
|
||||
|
||||
BOOL m_bMonitorStatus;
|
||||
|
||||
char m_szTitle[MAX_RECEIVE_LEN]; // 뉴스 메시지 원문.
|
||||
int m_nSourceFrom; // 후킹된 메시지의 원천.
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// 통신용 데이터.
|
||||
public:
|
||||
CString m_strSendCommand;
|
||||
CString m_strName;
|
||||
CString m_strSvrIP;
|
||||
UINT m_nSvrPort;
|
||||
CClientSocket * m_pClientSocket;
|
||||
|
||||
CTickerSocket * m_pTickerSocket; // 거래소 InfoTicker 서버에 접속.
|
||||
|
||||
public:
|
||||
void ClientClosed();
|
||||
void AddClientsCom( CString strFrom, CString strMessage );
|
||||
|
||||
private:
|
||||
bool RetrieveNewsData();
|
||||
|
||||
void InstallHotKey();
|
||||
void EmulateHotkey( WORD wVk, WORD wModifier );
|
||||
|
||||
BOOL InputCodeTypeStatus( int & nSrcType );
|
||||
void HookInstallTargetWnd();
|
||||
|
||||
void AutoInputJongmokCode(int nSrcFrom, CString strCode );
|
||||
void AutoScreenSwitch();
|
||||
|
||||
void HLStockWindowShow( CString strJCode, CString strExtraData = "" );
|
||||
void ShowHideLockControlDlg( BOOL bShow );
|
||||
|
||||
CLockControlDlg * m_pLCDlg;
|
||||
|
||||
CFont m_LockUnlockBtnFont;
|
||||
|
||||
//~!
|
||||
char m_szWnd3_Time[10];
|
||||
char m_szWnd3_Title[MAX_RECEIVE_LEN],m_szWnd3_Name[100];
|
||||
|
||||
CString g_strTitle;
|
||||
CString g_strJCode;
|
||||
CString g_strJName;
|
||||
int g_nSourceFrom;
|
||||
|
||||
public:
|
||||
|
||||
// Dialog Data
|
||||
//{{AFX_DATA(CHookMsgDlg)
|
||||
enum { IDD = IDD_HOOKMSG_DIALOG };
|
||||
CStatic m_hCPValue;
|
||||
CXListBox m_hTraceListBox;
|
||||
BOOL m_bInputCode1;
|
||||
BOOL m_bInputCode2;
|
||||
BOOL m_bInputCode3;
|
||||
BOOL m_bSvrConnect;
|
||||
BOOL m_bInfoTickerConnect;
|
||||
//}}AFX_DATA
|
||||
|
||||
// ClassWizard generated virtual function overrides
|
||||
//{{AFX_VIRTUAL(CHookMsgDlg)
|
||||
public:
|
||||
virtual BOOL DestroyWindow();
|
||||
protected:
|
||||
virtual BOOL OnInitDialog();
|
||||
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
|
||||
virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam);
|
||||
virtual void OnCancel();
|
||||
//}}AFX_VIRTUAL
|
||||
|
||||
// Implementation
|
||||
protected:
|
||||
HICON m_hIcon;
|
||||
|
||||
// Generated message map functions
|
||||
//{{AFX_MSG(CHookMsgDlg)
|
||||
afx_msg void OnInitMenuPopup(CMenu* pPopupMenu, UINT nIndex, BOOL bSysMenu);
|
||||
afx_msg void OnClose();
|
||||
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
|
||||
afx_msg void OnPaint();
|
||||
afx_msg HCURSOR OnQueryDragIcon();
|
||||
afx_msg void OnTimer(UINT nIDEvent);
|
||||
afx_msg BOOL OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct);
|
||||
afx_msg LRESULT OnNcHitTest(CPoint point);
|
||||
afx_msg void OnMonitorStart();
|
||||
afx_msg void OnUpdateMonitorStart(CCmdUI* pCmdUI);
|
||||
afx_msg void OnMonitorPause();
|
||||
afx_msg void OnUpdateMonitorPause(CCmdUI* pCmdUI);
|
||||
afx_msg void OnTargetWndBtn();
|
||||
afx_msg void OnUpdateTargetWndBtn(CCmdUI* pCmdUI);
|
||||
afx_msg void OnHookOnOffCheck();
|
||||
afx_msg void OnConfigEnvBtn();
|
||||
afx_msg void OnConfigRejectlistBtn();
|
||||
afx_msg void OnConfigPassListBtn();
|
||||
afx_msg void OnSize(UINT nType, int cx, int cy);
|
||||
afx_msg void OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI);
|
||||
afx_msg void OnHookmsgMedoBtn();
|
||||
afx_msg void OnHookmsgStockpriceCheck();
|
||||
afx_msg void OnConfigRejectlistBtn2();
|
||||
afx_msg void OnHookmsgHookstateCheck1();
|
||||
afx_msg void OnHookmsgHookstateCheck2();
|
||||
afx_msg void OnHookmsgHookstateCheck3();
|
||||
afx_msg void OnConfigSpecialList();
|
||||
afx_msg void OnConfigManualList();
|
||||
afx_msg void OnSvrconnectCheck();
|
||||
afx_msg void OnInfotickerCheck();
|
||||
//}}AFX_MSG
|
||||
|
||||
afx_msg LONG OnReceived(WPARAM wParam, LPARAM lParam); // 추가한 것임
|
||||
|
||||
afx_msg LRESULT OnHotKey(WPARAM wParam, LPARAM lParam);
|
||||
afx_msg LONG OnTrayNotification(UINT wParam, LONG lParam);
|
||||
afx_msg LRESULT OnUpdateMarketInfo( WPARAM wParam, LPARAM lParam );
|
||||
afx_msg LRESULT OnTargetAppDestoryed( WPARAM wParam, LPARAM lParam );
|
||||
afx_msg LRESULT OnStartCommand(WPARAM wParam, LPARAM lParam);
|
||||
afx_msg LRESULT OnStopCommand(WPARAM wParam, LPARAM lParam);
|
||||
afx_msg LRESULT OnUpdateRejectListCommand(WPARAM wParam, LPARAM lParam);
|
||||
|
||||
afx_msg LRESULT OnSvrSendCommand(WPARAM wParam, LPARAM lParam);
|
||||
|
||||
afx_msg LRESULT OnTickerSocketClose(WPARAM wParam, LPARAM lClient); // Client 소켓 해제
|
||||
afx_msg LRESULT OnTickerSocketReceive(WPARAM wParam, LPARAM lClient); // Client 소켓으로 부터 수신되는 데이터
|
||||
|
||||
DECLARE_MESSAGE_MAP()
|
||||
};
|
||||
|
||||
|
||||
inline void CHookMsgDlg::ShowHideLockControlDlg( BOOL bShow )
|
||||
{
|
||||
if( bShow )
|
||||
{
|
||||
if (m_pLCDlg != NULL)
|
||||
{
|
||||
m_pLCDlg->SetFocus ();
|
||||
}
|
||||
else
|
||||
{
|
||||
m_pLCDlg = new CLockControlDlg;
|
||||
if(m_pLCDlg)
|
||||
m_pLCDlg->Create( IDD_CONTROL_DLG, this );
|
||||
}
|
||||
|
||||
g_theApp.m_bShowLockContorlDlg = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
if( m_pLCDlg )
|
||||
m_pLCDlg->SendMessage(WM_CLOSE);
|
||||
|
||||
g_theApp.m_bShowLockContorlDlg = FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
inline BOOL CHookMsgDlg::InputCodeTypeStatus( int & nSrcType )
|
||||
{
|
||||
if( nSrcType == UM_HOOKOK_WND1 )
|
||||
return m_bInputCode1;
|
||||
else if( nSrcType == UM_HOOKOK_WND2 )
|
||||
return m_bInputCode2;
|
||||
else if( nSrcType == UM_HOOKOK_WND3 )
|
||||
return m_bInputCode3;
|
||||
else if( nSrcType == UM_SRC_INFOTICKER )
|
||||
return m_bInfoTickerConnect;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
inline void CHookMsgDlg::HLStockWindowShow( CString strJCode, CString strExtraData )
|
||||
{
|
||||
if( g_AppEnv.bLowmoneyInfoDlg == FALSE )
|
||||
return;
|
||||
|
||||
try {
|
||||
memset( &g_HLStockWindowData, NULL, sizeof(HLSTOCKWINDOWDATA) );
|
||||
|
||||
g_HLStockWindowData.wParam = 0;
|
||||
g_HLStockWindowData.lParam = 0;
|
||||
sprintf( g_HLStockWindowData.szJCode, "%s", strJCode );
|
||||
strcpy( (char*)g_HLStockWindowData.ExtraData, strExtraData);
|
||||
|
||||
g_HLStockWindowData_CDS.dwData = TYPEOF_HLStockWindow;
|
||||
|
||||
HWND hTagretWnd = ::FindWindow( "HLStockWindow_Dialog", NULL );
|
||||
if( ::IsWindow( hTagretWnd ) )
|
||||
{
|
||||
::SendMessage(hTagretWnd, WM_COPYDATA, (WPARAM)m_hWnd, (LPARAM)&g_HLStockWindowData_CDS);
|
||||
}
|
||||
else
|
||||
{
|
||||
TCHAR szFilePath[_MAX_PATH]={0,};
|
||||
::GetModuleFileName(NULL, szFilePath, _MAX_PATH);
|
||||
*(strrchr( szFilePath, '\\' ) + 1) = 0;
|
||||
strcat( szFilePath, "\\HLStockWindow.exe" );
|
||||
SHELLEXECUTEINFO ShExecInfo;
|
||||
ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
|
||||
ShExecInfo.fMask = NULL;
|
||||
ShExecInfo.hwnd = NULL;
|
||||
ShExecInfo.lpVerb = NULL;
|
||||
ShExecInfo.lpFile = szFilePath;
|
||||
ShExecInfo.lpParameters = NULL;
|
||||
ShExecInfo.lpDirectory = NULL;
|
||||
ShExecInfo.nShow = SW_SHOW;
|
||||
ShExecInfo.hInstApp = NULL;
|
||||
ShellExecuteEx(&ShExecInfo);
|
||||
|
||||
for(int i=0; i<10; i++)
|
||||
{
|
||||
HWND hTagretWnd = ::FindWindow( "HLStockWindow_Dialog", NULL );
|
||||
if( ::IsWindow( hTagretWnd ) )
|
||||
{
|
||||
::SendMessage(hTagretWnd, WM_COPYDATA, (WPARAM)m_hWnd, (LPARAM)&g_HLStockWindowData_CDS);
|
||||
break;
|
||||
}
|
||||
Sleep(100);
|
||||
}
|
||||
}
|
||||
}
|
||||
catch(...)
|
||||
{
|
||||
TRACE("HLStockWindowShow exception !!!");
|
||||
}
|
||||
}
|
||||
|
||||
//{{AFX_INSERT_LOCATION}}
|
||||
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
|
||||
|
||||
#endif // !defined(AFX_HOOKMSGDLG_H__C6A5153E_1FD5_46AD_955E_DADD41BD7DAD__INCLUDED_)
|
||||
Reference in New Issue
Block a user