ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 키움API를 이용한 로그인 구현 주식 c# 초보
    프로그래밍/c# 2022. 11. 27. 15:28
    반응형

    키움API를 이용해서 로그인을 구현 해 보겠습니다. (개발툴 : visual studio 2017 )

     

    1. 프로젝트를 새로 생성 합니다.

     

    2. 도구상자에서 오른쪽 마우스 클릭후 메뉴에서 항목선택을 합니다.

        그리고 COM구성요소에서 KHOpenAPI Control를 선택합니다.

        만일 없을 경우 찾아보기클릭 직접 찾아서  선택 하셔야 합니다.  (위치:C:\OpenAPI\khopenapi.ocx)

    3. 항목을 선택하면 도구상자에 아이콘이 생성됩니다. 

    4. 도구상자에서 KHOpenAPIControl, 버튼, 라벨 추가하여 화면을 디자인 합니다.

        추가한 컨트롤 이름 과 텍스트를 속성창에서 지정해 줍니다.

         Name: axKHOpenAPI1     Visible: False

         Name: btnLogin,               Text:키움API로그인 

         Name: lblMessage,          Text :메시지:

         Name:lblAcccnt,               Text :계좌수=>

         Name:lblAccList,              Text: 보유계좌=>

         Name:lblUserID,              Text: 사용자ID=>

         Name:lblUserName,        Text: 사용자이름=> 

         NamelblServergb,            Text: 접속서버=>

     

    5. 속성창에서 번개 모양이 있는데 컨트롤에 대한 모든 이벤트가 나열되어 있습니다. 코딩이 필요한 부분을

       더블클릭을하면   코딩창으로 넘어 갑니다.

    전체 코딩내용입니다. 설명은 주석처리와 코딩 내용을 보시면 알수 있습니다.

    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace kiwoomsApp
    {
        public partial class frmMain : Form
        {
            public frmMain()
            {
                InitializeComponent();
            }
    
            private void axKHOpenAPI1_OnEventConnect(object sender, AxKHOpenAPILib._DKHOpenAPIEvents_OnEventConnectEvent e)
            {
                if (e.nErrCode == 0)
                {               
                    string strACCOUNT_CNT = axKHOpenAPI1.GetLoginInfo("ACCOUNT_CNT");                   // 보유계좌 갯수를 반환합니다.
                    string strACCLIST = axKHOpenAPI1.GetLoginInfo("ACCLIST");                           //구분자 ';'로 연결된 보유계좌 목록을 반환합니다.
                    string strUSER_ID = axKHOpenAPI1.GetLoginInfo("USER_ID");                           //사용자 ID를 반환합니다.
                    string strUSER_NAME = axKHOpenAPI1.GetLoginInfo("USER_NAME");                       //사용자 이름을 반환합니다.
                    string strGetServerGubun = axKHOpenAPI1.GetLoginInfo("GetServerGubun");            //접속서버 구분을 반환합니다.(1 : 모의투자, 나머지 : 실거래서버)
    
                    lblMessage.Text = "메시지: 로그인 성공입니다.";
    
                    lblAcccnt.Text = "계좌수=> " + strACCOUNT_CNT;
                    lblAccList.Text = "보유계좌=> " + strACCLIST;
                    lblUserID.Text = "사용자ID=> " + strUSER_ID;
                    lblUserName.Text = "사용자이름=> " + strUSER_NAME;
                    lblServergb.Text = "접속서버=> " + strGetServerGubun;
                }
                else if (e.nErrCode == 100)
                {
                    lblMessage.Text = ""메시지: 사용자 정보교환 실패";
                }
                else if (e.nErrCode == 101)
                {
                    lblMessage.Text = ""메시지: 서버접속 실패";
                }
                else if (e.nErrCode == 102)
                {
                    lblMessage.Text = ""메시지: 버전처리 실패";
                }
               
            }
    
            private void btnLogin_Click(object sender, EventArgs e)
            {
                if (axKHOpenAPI1.CommConnect() != 0)
                {
                    MessageBox.Show("로그인창 열기 실패");
                }
            }
        }
    }
    
    

    로그인 화면 호출 :

    axKHOpenAPI1.CommConnect()

                                 0값을 리턴하면 로그인창 오픈성공, 그외 값이 리턴될 경우 실패

     

    로그인 이벤트: axKHOpenAPI1_OnEventConnect(object sender, AxKHOpenAPILib._DKHOpenAPIEvents_OnEventConnectEvent e)

     

                                e.nErrCode 값

                                       0    => 로그인 성공

                                       100=>사용자 정보교환 실패

                                       101=>서버접속 실패

                                       102=> 버전처리 실패     

    로그인 정보:

    axKHOpenAPI1.GetLoginInfo(sTag); 

                         

                               sTag값

                                       ACCOUNT_CNT : 보유계좌 갯수를 반환합니다.
                                       ACCLIST:              보유계좌 목록을 반환합니다.
                                       USER_ID :            사용자 ID를 반환합니다.
                                       USER_NAME :     사용자 이름을 반환합니다.
                                       GetServerGubun : 접속서버 구분을 반환합니다.(1 : 모의투자, 나머지 : 실거래서버)

     

    참조) KOA StudioSA를 참조하여 코딩을 하였습니다.  모든 내용이 다 있으니 꼭 확인하시고 코딩하시면 됩니다.

     

    7. 이제 F5키를 눌러 실행해 봅니다.

    키움에 등록된 ID와 비밀번호 입력후 로그인

     

    버전처리를 위해서 파일을 다운로드합니다.

     

    버전처리 파일 다운로드 한후 이런 메지지가 나올 경우 실행중인 프로그램 및 Visual Studio 종료를 한후 확인 버튼을 클릭합니다.

     

    성공적으로 버전처리가 완료되면 이런 메시지가 나올것입니다.

     

    로그인성공 화면입니다.

     

     

    7.   실행을 할때 마다 로그인을 하는게 싫은 분들을 위해서 자동로그인 하는 방법에 대해서 알아 보겠습니다.

     

    - 시스템 트레이 아이콘들 중에 오른쪽 아랫부분에 깜빡 거리는 아이콘이 있는데 오른쪽 마우스 클릭을 한 후

         계좌비밀번호 저장을 클릭합니다.

     

     - 비밀번호입력후 등록,전체계좌에 등록후  Auto체크를 하고  닫기를 클릭하면 적용이 됩니다.

     

    반응형

    댓글

Designed by Tistory.