행위

오토잇 테이블생성 자동화

DB CAFE

Dbcafe (토론 | 기여)님의 2019년 8월 2일 (금) 15:15 판 (새 문서: <source lang=c> ;~ ================================== ;~ 1.ERWIN 파일 실행 되어 있어야 함 ;~ 2.TOAD 를사용함 ;~ 3.erwin script를 호출해야함(위치: 바탕화면) ;...)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)
thumb_up 추천메뉴 바로가기


<source lang=c>

~ ==================================
~ 1.ERWIN 파일 실행 되어 있어야 함
~ 2.TOAD 를사용함
~ 3.erwin script를 호출해야함(위치
바탕화면)
~ ==================================
WinTitleMatchMode = Alters the method that is used to match window titles during search operations.

opt("WinTitleMatchMode",2);1=start,2=subStr,3,exact,4=advanced,=1 to =4 = Nocase opt("GUIOnEventMode",1);

  1. include <Array.au3>

Global Const $VK_CAPITAL = 0x14

hotkeyset("{ESC}","_exit")

If _Key_Is_On($VK_CAPITAL) Then MsgBox( 0, "", "캡스락 키가 켜져 있읍니다. 꺼주세요.",5) ;CAPS LOCK 끄기 Send("{CapsLock off}") Exit EndIf

global $cb;

~ 0. ini 설정
~ ===============================================================================================
~ 1.ERWIN에 Pre & Post 스크립트를 세팅 합니다.
~ ===============================================================================================

Erwin_Script_Setup()

~ ===============================================================================================
~ 2.엑셀에서 작업 대상 로딩
~ ===============================================================================================

$str = Get_Excel_Data("통합") ; 인자는 윈도우 타이틀

$Array_Target = FileReadToArray(@ScriptDir&"\temp_file.lst")

~ 3.자동화 반복 처리

$proc_count = Do_Loop_Work($Array_Target)

MsgBox(0,"",$proc_count-1 &"건 자동화 처리 완료 ",3)

~ 2. 자동화 반복 작업 ===========================================================================
클립보드에 값이 없을때까지 반복
~ $i = 2

Func Do_Loop_Work($Array_Target)


For $i = 1 To $Array_Target[1] Step +1

~ if StringLen(StringStripWS($Array_Target[$i+1],4)) <= 3 Then
~ MsgBox(0,"",$i+1 &"건 종료 = "&$Array_Target[$i+1])
~ $i = $i+1
~ _exit()
~ EndIf
~ MsgBox(0,$i,$Array_Target[$i])

WinActivate("AllFusion","") Send("{CTRLDOWN}{DOWN}{CTRLUP}") Send("{CTRLDOWN}g{CTRLUP}")

;테이블 찾기 WinWaitActive ( "Go To Table","",3)

~ Send("{CTRLDOWN}v{CTRLUP}{HOME}{END}")
		Send($Array_Target[$i+1],1)

Send("{ALTDOWN}o{ALTUP}")

;ERWIN POSTSCRIPT 처리 Send("{ALTDOWN}b{ALTUP}") Sleep(100) Send("{p}") Sleep(100) Send("{t}")

WinWaitActive("Oracle Script Template")

Sleep(100) Send("{TAB}") Sleep(100) Send("{TAB}") Sleep(100) Send("{TAB}") Sleep(100) Send("{TAB}") Sleep(100) Send("{LEFT 5}") Sleep(100) Send("{RIGHT 1}")

Sleep(100) Send("{TAB}") Sleep(100) Send("{TAB}") Sleep(100) Send("{CTRLDOWN}a{CTRLUP}") Send("{CTRLDOWN}c{CTRLUP}") Sleep(200) Send("{ALTDOWN}{F4}{ALTUP}")

WinActivate("Toad","") MouseClick("left",534,592,0) if($i = 1 ) Then WinWait("[CLASS:TfrmMain]") ControlFocus ( "[CLASS:TfrmMain]", "", "TtdDScintilla1" ) Send("{CTRLDOWN}a{CTRLUP}") Send("{DEL}") EndIf

Send("{ENTER}") Send("{CTRLDOWN}{END}{CTRLUP}") Send("{ENTER}")

Send("{CTRLDOWN}v{CTRLUP}")


Next return $i

EndFunc

Func _exit()

   exit

endfunc


~ Global Const $VK_CAPITAL = 0x14
~ If _Key_Is_On($VK_CAPITAL) Then Send("{CAPSLOCK Toggle}")
~ If _Key_Is_On($VK_CAPITAL) Then
~ MsgBox( 0, "", "")
~ EndIf
캡스락키 확인

Func _Key_Is_On($nVK_KEY, $vDLL = 'User32.dll')

   Local $a_Ret = DllCall($vDLL, "short", "GetKeyState", "int", $nVK_KEY)
   Return Not @error And BitAND($a_Ret[0], 0xFF) = 1

EndFunc

Func FileReadBuffer($file_name) Local $output_txt =

Local $file = FileOpen($file_name, 0)

; Check if file opened for reading OK If $file = -1 Then MsgBox(0, "Error", "Unable to open file.") Exit EndIf

; Read in lines of text until the EOF is reached While 1 Local $line = FileReadLine($file) $line = $line & @CRLF $output_txt = $output_txt & $line; If @error = -1 Then ExitLoop

~ MsgBox(0, "Line read
", $line)

WEnd

FileClose($file)

~ 클립보드에 복사한다.

ClipPut($output_txt) EndFunc

Func FileReadToArray($file_name) Local $arry_return[1]=[""]

Local $file = FileOpen($file_name, 0)

; Check if file opened for reading OK If $file = -1 Then MsgBox(0, "Error", "Unable to open file.") Exit EndIf

; Read in lines of text until the EOF is reached $i = 0; While 1 Local $line = FileReadLine($file)

If @error = -1 OR $line ="" Then ExitLoop

~ MsgBox(0, "Line read
", $line)
~ _ArrayInsert($arry_return,$i, $line)
		_ArrayAdd($arry_return,$line)

$i = $i+1

~ _ArrayAdd($arry_return,$line)

WEnd _ArrayInsert($arry_return,1, $i) FileClose($file) Return $arry_return EndFunc


Func Erwin_Script_Setup()

ERWIN 스크립트 불러오기
~ $erwin_script = FileReadBuffer(@ScriptDir&"\erwin_post_script_for_web.sql");

$erwin_script = FileReadBuffer(@ScriptDir&"\erwin_post_script.sql"); MsgBox(0,"ERWIN - POST 스크립트 적용 ", 'ERWIN에 POST SCRIPT 적용을 시작 합니다. ',2)

WinActivate("AllFusion","")

   Send("{CTRLDOWN}{DOWN}{CTRLUP}")

Send("{ALTDOWN}b{ALTUP}") Sleep(100)

	Send("{p}")

Sleep(100) Send("{t}")

WinWaitActive("Oracle Script Template")

Sleep(100) Send("{TAB}") Sleep(100) Send("{TAB}") Sleep(100) Send("{TAB}") Sleep(100) Send("{TAB}") Sleep(100) Send("{LEFT 5}") Sleep(100) Send("{TAB}") Sleep(100)

Send("{CTRLDOWN}a{CTRLUP}") Send("{CTRLDOWN}v{CTRLUP}") Sleep(100) Send("{TAB}") Sleep(100) Send("{TAB}") Send("{ENTER}")

~ ClipPut(); 클립보드 비우기

EndFunc


엑셀에서 처리대상 테이블을 가져온다.

Func Get_Excel_Data($title) Local $arry_return[1] = [""] Local $file = FileOpen(@ScriptDir&"\temp_file.lst", 2) WinActivate($title,"") If WinWaitActive($title,"",3) Then ;~ 클립보드 초기화 ClipPut() Send("{CTRLDOWN}g{CTRLUP}") WinWaitActive("이동","",1) Send("a1{ENTER}") Sleep(100) Send("{CTRLDOWN}{SHIFTDOWN}{DOWN}{SHIFTUP}{CTRLUP}") Sleep(200) Send("{CTRLDOWN}c{CTRLUP}") Sleep(200) $cb = ClipGet() Sleep(100)

; Check if file opened for writing OK If $file = -1 Then MsgBox(0, "Error", "Unable to open file.") Exit EndIf


~ FileWrite($file, StringStripWS($cb,8))

FileWrite($file, StringReplace($cb," ",""))

FileClose($file)

If StringLen($cb) <= 2 Then MsgBox(0,"","대상 복사 실패",3) exit endif Else

       MsgBox(0,"Error",$title & "-엑셀 인식 실패 ",3)
       exit

EndIf Return True EndFunc



</lang>