행위

대신증권 자동로그인

DB CAFE

Dbcafe (토론 | 기여)님의 2023년 8월 28일 (월) 23:44 판
thumb_up 추천메뉴 바로가기


1 Creon PLUS 자동 로그인[편집]

import pywinauto
import time

def logIn():
    try:
        app = pywinauto.application.Application()
        #실행
        app.start(r"C:\DAISHIN\STARTER\ncStarter.exe /prj:cp")
        time.sleep(10)
        
        flag=0
        while flag==0:
            try:
                #보안경고창 예 버튼 클릭
                title = '대신증권 CYBOS FAMILY'
                #dlg = app.window_(title=title) error나서 변경 20190331
                dlg = app.Connect(title=title).Dialog
                dlg['예(&Y)Button'].Click()
                time.sleep(1)
            except Exception as e:
                print(e)
            else:
                flag=1
                
        #안랩안티바이러스 로딩시간 대기
        time.sleep(80)
        
        #접속창 인식
        title = "CYBOS Starter"
        dlg = pywinauto.timings.WaitUntilPasses(120, 30, lambda: app.window_(title=title))
        pass_ctrl = dlg.Edit2
        
        #통신암호
        flag=0
        while flag==0:
            try:
                pass_ctrl.SetFocus()
                pass_ctrl.TypeKeys('PASSWORD')
                time.sleep(1)
            except Exception as e:
                print(e)
            else:
                flag=1
        
        cert_ctrl = dlg.Edit3
        
        #인증서암호
        flag=0
        while flag==0:
            try:
                cert_ctrl.SetFocus()
                cert_ctrl.TypeKeys('PASSWORD')
                time.sleep(1)
            except Exception as e:
                print(e)
            else:
                flag=1
        
        #접속버튼클릭
        flag=0
        while flag==0:
            try:
                btn_ctrl = dlg.Button
                btn_ctrl.Click()
                time.sleep(1)
            except Exception as e:
                print(e)
            else:
                flag=1
    except Exception:
        raise
    else:
        pass
        
if __name__ == '__main__':
    logIn()

2 Creon PLUS 자동 로그인 다른방식[편집]

import win32com.client
from pywinauto import application

class Creon:
    def __init__(self):
        self.obj_CpUtil_CpCybos = win32com.client.Dispatch('CpUtil.CpCybos')

    def kill_client(self):
        os.system('taskkill /IM coStarter* /F /T')
        os.system('taskkill /IM CpStart* /F /T')
        os.system('taskkill /IM DibServer* /F /T')
        os.system('wmic process where "name like \'%coStarter%\'" call terminate')
        os.system('wmic process where "name like \'%CpStart%\'" call terminate')
        os.system('wmic process where "name like \'%DibServer%\'" call terminate')

    def connect(self, id_, pwd, pwdcert):
        if not self.connected():
            app = application.Application()
            app.start(
                'C:\CREON\STARTER\coStarter.exe /prj:cp /id:{id} /pwd:{pwd} /pwdcert:{pwdcert} /autostart'.format(
                    id=id_, pwd=pwd, pwdcert=pwdcert
                )
            )
        while not self.connected():
            continue

        return True

    def connected(self):
        b_connected = self.obj_CpUtil_CpCybos.IsConnect
        if b_connected == 0:
            return False
        return True

class MyWindow():                     # form class 로부터 form 로딩
    def __init__(self):

        self.logIn = Creon()
        self.login.kill_client()
        id = '아이디 입력'
        pass1 = '계정 패스워드 입력'
        pass2 = '공인 인증서 패스워드 입력'
        self.logIn.connect(id, pass1, pass2)


if __name__ == "__main__":

    myWindow = MyWindow()

/*
Creon PLUS 자동 로그인 코드 입니다. 
로그인용으로 별도로 자동 매매 프로그램과 따로 분리하여 사용하고 있습니다. 
아래 표시된 부분에 로그인 정보를 넣고 실행하면 됩니다. 
"pip install pywinauto"으로 pywinauto 모듈을 설치하여야 합니다. 
근데 문제는, anaconda ver. 7.6.4 (2019.10월) 버전에서 위 모듈이 에러 없이 정상적으로 사용이 가능합니다만,
이후 버전에서는 pyautowin 에러가 발생을 하니, 자동 로그인 기능을 사용하려면, 2019-10월 버젼을 깔거나, 
anaconda3.8 (2020-07)버전을 사용하여야 합니다. 
또하나 단점이, 용량이 큼니다. Exe 파일로 변환시, 이것만, 100M가 넘어가게 됩니다. 
*/