기존에 저는 파이썬에서 selenium 을 사용하여 제가 필요한 웹관련 자동화를 해 왔습니다. 제 블로그에 일주일에 한 번씩 올라가는 로또 관련한 포스팅이나 매일 하고 있는 종목 검색 포스팅 등은 파이썬을 사용하여 Tistory Open API 로 포스팅이 되고 있습니다. 최근에 아래 포스팅에서 Autohotkey 에서 selenium 사용에 대해 소개 한 적이 있었는데, 파이썬에서 사용하던 method 이름과 조금 다르더군요.

http://iamaman.tistory.com/2021

그래서 오늘은 COM 객체 사용시 사용 가능한 함수 및 속성을 알아내는 방법에 대해서 소개하려합니다. 현재 자신의 컴퓨터에서 사용 가능한 COM 객체를 알고 싶은 분들은 아래 주소의 글을 참조해 보시기 바랍니다.

http://iamaman.tistory.com/2215

COM 객체 사용시 사용 가능한 함수 및 속성은 COM Object 의 멤버를 찾으면 되는 것입니다. 저는 현재 Autohotkey 에서 selenium 을 사용하여 chrome 을 자동화하고 있습니다. 그래서 selenium 의 함수 및 속성 을 찾아보려 합니다.

간단하게 Powershell 에서 아래와 같이 코딩하고 실행하면

$se = New-Object -ComObject Selenium.CHROMEDriver

$se | Get-Member

다음과 같이 사용 가능한 멤버 함수 및 속성의 목록을 확인할 수 있습니다.

확인을 해보니 Python 에서 selenium 을 사용할때는 멤버 함수 명이 소문자였고 언더바(_) 로 구분되는 형태였는데 Autohotkey 에서 selenium 을 사용할때는 그렇지가 않군요. 예를 들면 Python 에서는 find_element_by_id() 였다면 Autohotkey 에서는 FindElementById() 의 형태네요.



아래 포스팅에서 Autohotkey 에서 Windows COM(Component Object Model) 을 사용한 사례에 대해서 소개를 한 적이 있습니다. Windows 컴퓨터 사용시 많이들 사용하는 Microsoft Office 제품을 사용할 때도 COM 을 사용하여 자동화를 할 수가 있습니다.

http://iamaman.tistory.com/1879

http://iamaman.tistory.com/461

http://iamaman.tistory.com/2001

http://iamaman.tistory.com/2021

Autohotkey 에서 COM 을 사용하기 위해서는 아래 메뉴얼 같이 COM object 를 만들어야 합니다.

https://autohotkey.com/docs/commands/ComObjCreate.htm

ComObjCreate의 입력값으로 CLSID 를 넣어줘야 하는데 CLSID 는 우리가 사용하고자 하는 COM 의 Program ID 입니다.

ComObject := ComObjCreate(CLSID [, IID])

탐색기 정보 등을 자동화 하고 싶으면 Shell.Application, Microsoft Word 를 자동화하고 싶으면 Word.application, Microsoft Powerpoint 를 자동화 하고 싶으면 PowerPoint.Application 을 넣어야 하는 식입니다.

COM 을 사용하기 위해서는 당연히 우리 컴퓨터에 사용할 수 있는 COM 이 어떤게 설치가 되어 있는지를 알아야 합니다. Microsoft Office 제품과 같이 우리가 설치한 경우에는 당연히 알 수 있겠지만 다른 프로그램들 같은 경우에는 어떤 이름을 사용해야 COM 을 사용할 수 있는 건지 잘 모르는 경우가 많습니다.

그래서 오늘은 Powershell 을 사용하여 우리 컴퓨터에 설치되어 있는 COM 을 검색하는 방법에 대해서 소개하려합니다. 해당 코드는 Powershell 코드이며 ‘개발자를 위한 Powershell’ 책의 예제에 있습니다.

책의 전체 소스 코드들은 아래 주소에서 다운로드 받을 수 있습니다.

https://github.com/dfinke/powershell-for-developers

그리고 아래 주소의 GetProgID 함수를 사용하면 우리 컴퓨터에 설치되어 있는 COM 을 검색할 수 있습니다.

https://github.com/dfinke/powershell-for-developers/blob/master/chapter10/GetProgID.ps1

Powershell 에서 다음과 같이 ps1 파일을 실행하면 되는데…..

.\GetProgID.ps1

내 컴퓨터에 몇 개의 COM 이 설치되어 있는지 확인을 해보려면 다음과 같이 명령어를 치면 됩니다. 제 컴퓨터에는 1800개 COM 이 있네요.

.\GetProgID.ps1 | measure


1800 개를 눈으로 확인하는 건 조금 불편 하니까 키워드로 검색하는 것이 좋습니다. 다음과 같이 word 를 검색해보면 Word.Application 뿐만 아니라 내가 잘 알지도 못하는 다양한 COM 들이 설치 되어 있다는 것을 알 수가 있습니다. 검색 되는 목록 중에서 Word.Application 을 사용 하면 되는 것이죠.

.\GetProgID.ps1 word


이베스트 xingAPI를 사용해서 시스템 트레이딩을 하시는 분들은 다음과 같이 검색해보시면 COM 이 나오는 것을 확인 하실수 있습니다. xingAPI 를 설치했으므로 검색이 되는 건 당연하겠죠.

.\GetProgID.ps1 XA_DataSet

.\GetProgID.ps1 XA_Session


저는 개인적으로 요즘 이베스트 xingAPI를 통해서 시스템 트레이딩을 조금씩 공부 해 보고 있는데, 컴퓨터 언어는 주로 파이썬을 사용하고 있습니다. 생각해보니 Autohotkey 나 Powershell 을 사용해서도 시스템 트레이딩이 가능할것도 같네요.



오늘은 아래 포스팅에 이어서 powershell 을 이용하여 아웃룩에서 메일 보내는 방법에 대해 알아보려 합니다.

 

http://iamaman.tistory.com/1638



보통 회사에서 Microsoft Office 를 많이들 사용 하실 겁니다.

 

Powershell 에서는 Com Object 를 사용 할 수 있고~ Com object 를 사용하면 MS office 제품군에 대한 자동화가 가능 합니다.

 

따라서 outlook 도 자동화가 됩니다.

 

아래와 같이 간단하게 메일을 보낼 수 있습니다.

 

$textv =@"

메일 테스트 

메일 잘 가나요?

"@

 

$subject = "서버의 업데이트가 안 되었습니다."

 

$obj = New-Object -ComObject Outlook.Application

 

$newMail = $obj.CreateItem(0)

$newMail.Subject = "메일 제목"

$newMail.Body = $textv

$newMail.To = "메일 받는 사람 주소"

 

$newMail.Send()

 

 

Newmail Object 관련 Property 들은 아래 주소에서 확인 할 수 있습니다.

 

https://msdn.microsoft.com/en-us/library/microsoft.office.interop.outlook.mailitem_properties.aspx

 

위와 같은 방법을 사용하면 반복적으로 메일을 보내야 할 때 매우 편하게 보낼 수 있을 겁니다.


+ Recent posts