c#으로 키움증권 영웅문 4 제어하기 – 종목 변경

영웅문 4의 0101 현재 가격창을 띄워 놓고 이 창의 종목 코드 입력 에디트에 종목 코드를 입력한 뒤 엔터를 누른 거처럼 작동하게 하는 방법이다. 이 창에서 종목을 바꾸면 다른 창들도 바뀐다.

현재 가격창을 띄워만 놓으면 되고 눈에 보이지는 않아도 된다.

핸들에 대한 기본적인 지식은 있어야 한다.

IntPtr handle1 = FindWindowA("_NKHeroMainClass", null);
IntPtr handle2 = FindWindowExA(handle1, 0, "MDIClient", null);
IntPtr handle3 = FindWindowExA(handle2, 0, null, "[0101] 키움현재가");
IntPtr handle4 = FindWindowExA(handle3, 0, "AfxFrameOrView110", null);
IntPtr handle5 = FindWindowExA(handle4, 0, "AfxWnd110", null);
IntPtr handle6 = FindWindowExA(handle5, 0, "AfxWnd110", null);
IntPtr handle7 = FindWindowExA(handle5, handle6, "AfxWnd110", null);
IntPtr handle8 = FindWindowExA(handle5, handle7, "AfxWnd110", null);
IntPtr handle9 = FindWindowExA(handle5, handle8, "AfxWnd110", null);
IntPtr handle10 = FindWindowExA(handle5, handle9, "AfxWnd110", null);
IntPtr handle11 = FindWindowExA(handle5, handle10, "AfxWnd110", null);
IntPtr handle12 = FindWindowExA(handle5, handle11, "AfxWnd110", null);
IntPtr handle13 = FindWindowExA(handle12, 0, "AfxWnd110", null);
IntPtr handle14 = FindWindowExA(handle13, 0, "Edit", null);

IntPtr pCode = Marshal.StringToHGlobalAnsi("005930");

SendMessage(handle14, 0x000C, 0, pCode); // wm_settext
SendMessage(handle14, 0x0100, 0x0D, 0); // wm_keydown