2012. 8. 8. 20:30ㆍ제2외국어/Windows
옆에서 불편하게 품질 테스트를 하고 있는 걸 보고 만들기로 했습니다.
- 목적
1. 웹브라우저(크롬,사파리,오페라,파폭,익스플로어 등) 들 중 하나를 선택
: 각 프로그램 명 알아내기, 외부 프로그램 실행
(1) 웹브라웢 프로그램 명
explore = iexplore.exe
chrome = chrome.exe
firefox = firefox.exe
safari = safari.exe
opera = C:\\Program Files (x86)\\Opera\\opera.exe
( opera의 경우 system안에 없어서 그런지 저렇게 적어줘야 된다. '\\' 잘 못 된게 아니라 \인 경우 \이 인식이 안된다.
(2) 외부 프로그램 실행
// 선억
const int WM_SYSCOMMAND = 274;
const int SC_MAXIMIZE = 61488;
// 외부 메시지 보내기
[DllImport("user32.dll", CharSet = CharSet.Auto)]
static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, int wParam, int lParam);
// 외부 윈도우 찾기
[DllImport("user32.dll")]
public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
System.Diagnostics.Process IEProcess = new System.Diagnostics.Process();
IEProcess.StartInfo.FileName = "iexplore.exe"; // explore 파일 이름
IEProcess.StartInfo.Arguments = "http://winplz.tistory.com"; // URL
IEProcess.Start(); // 프로그램 실행
2. URL이 적혀있는 .txt 파일을 읽어
: 파일처리, txt파일 한줄씩 읽기
FileStream fs = new FileStream("C:\\input.txt", FileMode.Open, FileAccess.Read); // 파일스트림 StreamReader sr = new StreamReader(fs, System.Text.Encoding.Default); // 스트림리더객체
string getCount = sr.ReadToEnd(); // 전체 읽기
int count = 0; // 몇 줄인지를 저장할
foreach (char c in getCount) // 전체 읽기
{
// 줄바꿈부호가 있으면 count필드를 증가시킴
count = c.Equals('\r') ? count + 1 : count;
}
count++;
sr.BaseStream.Position = 0; // 시작점 가리키기
while (!sr.EndOfStream)
{
string currentLine = sr.ReadLine(); // 한줄씩 읽습니다.
url[idx] = currentLine;
idx++; // 인덱스 증가.
}
3. 설정한 (시간)간격으로 해당 URL로 들어간다.
: Timer 사용하기, 웹브라우저 주소 변경하기
(1) Form.cs 에서 timer를 올리기
(2) timer 생성
timer1 = new System.Windows.Forms.Timer();
(3) 시간 간격 설정
timer1.Interval = 1000; (1000 = 1초)
(4) 핸들러 연결하기
timer1.Tick += new EventHandler(Timer_Tick); ( 설정한 간격마다 Timer_Tick 라는 메서드를 실행 )
ex) public void Timer_Tick(object sender, EventArgs e)
{
}
(5) timer 실행
- 문제점 발생
: 설정한 시간을 간격삼아 외부 프로그램(웹브라우저)를 실행시키고, 해당 URL로 가는 건 인터넷 검색으로 쉽게 구현하였다.
하지만! 실행한 웹브라우저의 주소가 바꿔지지 않고 새로운 웹브라우저가 URL이 바껴서 실행
--> 해당 URL의 주소로 웹브라우저가 계속 실행.
- 임시방편 해결책
: URL 웹브라우저를 실행시킬 때, 프로세스를 검사하여 해당 웹브라우저를 끄고 다시 실행시킨다.
** 외부 프로그램 종료
Process[] p = Process.GetProcessesByName("iexplore");
if (p.GetLength(0) > 0)
p[0].Kill();
// 익스플로어를 찾아서 해당 프로세스 kill.
--> 문제가 해결되는것 같았지만, 오페라의 경우 강제 종료된 경우, 아래 화면과 같은 메시지를 먼저 호출하여서 오페라에서는 원활한 테스트가 진행되지 않았다.대충 이 정도 소스 및 + 검색(당신의 노력)이면 충분히 목표한 메크로를 구현가능하다.
물론 귀차니즘과 능력부족으로 목표에 100%만족하는 프로그램은 아니지만 이 정도로만으로도 상당한 시간 + 귀차니즘을 해결할 수 있을것 같다.
'제2외국어 > Windows' 카테고리의 다른 글
[C#]html, 정규식을 이용한 파싱( using Regex ) (4) | 2013.07.24 |
---|---|
[C#] WebBrower 기초. (간단한 웹브라우저 만들기) (0) | 2012.03.02 |
[C++] 클래스 정의. (2) | 2012.01.27 |
[C++] 스마트 포인터. (0) | 2011.12.27 |