2009. 3. 12. 15:51

09.03.12

오늘 출근길에 있었던 일이었다.
전철에 앉아서 졸고있던 나는 앞에 서있던 사람이 신문으로 머리를 빗어주고 있었다.
그리고 다른 앞사람이 그사람 무릎이 내 무릎을 차고 있었다.

왠만하면 깨지 않으려 노력했으나 못 참고 깨어날 수 밖에 없었다.
눈을 떠보니 평소와 다르게 사람이 엄청 많았다.
'아니 뭐야. 왜 이렇게 인간들이 많아?'라는 생각과 함께 졸린 눈을 비비며 정신을 좀 차려볼까 해서 눈에 힘을 주고 있었다.
그때 신설동역에 정차하여 문이 열리자마자 사람들이 우루루~ 내리는 것이 아닌가...
그 인파 사이에 끼어 있던 아가씨가 휩쓸려 가지 않으려 봉을 잡고 버티고 있었다.
표정에선 인내와 고통을 참고 있어 보였다.
결국 못참겠다 싶었는지 한마디를 내 뱉었다..

'씨바~ㄹ'

듣자마자 쫄았다.. ㅋㅋ

그 말을 들으니 난,
그 아가씨가 은근히 카리스마 있어보였고, 멋져보였고, 알흠다워 보였을리 없었다.
오히려 성인이 된 그 아가씨의 입에서 그런 말이 나왔다는 것에 대해 아쉬움만 남았다.
왠지 내가 저기에 서있었으면 나도 저런 말이 나왔을까 생각을 해보게 된다.
(나 또한 욕쟁이 이므로....)

Posted by CoolDragon
2009. 3. 9. 19:23

하나의 팁쯤이라고 생각해도 될 듯 하다.
.NET 에서 자바스크립트에서 사용되는 escape와 같은 함수를 사용하고 싶을때가 혹시라도 있을 것이다.
그럴 경우 난 System.Web.HttpUtility.UrlEncode를 사용하면 되는줄 알았다.
하지만 변환되는 형식이 당연히 틀렸다. (사실 틀릴줄은 알았지만 뭐 그냥 써도 되는줄로 알고 었었을 뿐이다.)
그런데 구글링을 통해서 알아낸 사실은 따로 escape와 같은 역할을 하는 클래스가 존재한다는 것이었다.
그 방법은 아래와 같다.

1. Microsoft.JScript 어셈블리를 참조한다.
2.
  escape    => Microsoft.JScript.GlobalObject.escape("바꿀 문자열");
  unescape => Microsoft.JScript.GlobalObject.unescape("바꿀 문자열");


이외에도 Microsoft.JScript.GlobalObject 클래스의 멤버가 여러가지 있으니 나중에 자바스크립트 관련된 일이 있으면
이 클래스를 우선 참고할 필요가 있겠다.

ps. 참 쉽죠 잉~?

Posted by CoolDragon
2009. 2. 6. 11:29


IE를 띄우려면 2가지 방법이 있다.
Process 클래스를 이용한 방법과 System32폴더에 존재하는 SHDocVw.dll을 참조해서 사용하는 것이다.

첫째 Process 클래스를 이용한 방법을 알아보자.
오나전 쉽다. 아래 코드를 보면 이해가 될 것이다.
여기서 Process 클래스의 WaitForExit(); 함수를 호출하면 Modal형태로 띄울 수 있게된다.
------------------------------------------------------------------------------------------------------------
        private void button1_Click(object sender, EventArgs e)
        {
            ProcessStartInfo startInfo = new ProcessStartInfo("IExplore.exe");
            startInfo.Arguments = "http://www.naver.com";

            Process browser = new Process();           
            browser.StartInfo = startInfo;
            browser.Start();
            browser.WaitForExit();           
        }
------------------------------------------------------------------------------------------------------------

둘째 SHDocVw.dll를 참조한 방법을 살펴보자.
 1. System32 폴더에서 SHDocVw.dll를 찾아 참조를 한다.
 2. 그리고 아래 샘플 코드를 보면 이해가 될 것이라 생각한다.
 
  - (예1) 브라우저로 창을 띄움
------------------------------------------------------------------------------------------------------------
            object vPost, vHeaders, vFlags, vTargetFrame, vUrl;
            string cPostData;
            vFlags = null;
            vTargetFrame = null;
            vUrl = "http://localhost/testpage.asp";
            vHeaders = "Content-Type: application/x-www-form-urlencoded" + Convert.ToChar(10) + Convert.ToChar(13);
            cPostData = "test1=1&test2=2&test3=3";
            vPost = ASCIIEncoding.ASCII.GetBytes(cPostData);

            SHDocVw.InternetExplorer ie = new SHDocVw.InternetExplorer();
            ie.Visible = true;
            ie.Navigate2(ref vUrl, ref vFlags, ref vTargetFrame, ref vPost, ref vHeaders);
------------------------------------------------------------------------------------------------------------
  - (예2) 팝업(팝업형태의브라우저)으로 창을 띄움
    a. 빨갛게 되어있는 소스만 틀리므로 그부분을 참고한다.
    b. SHDocVw.IWebBrowserApp 속성은 더 있는데 어떻게 써야할지는 아직 잘 모르겠다~ (모르면 구글링을 해보세요)
------------------------------------------------------------------------------------------------------------
            object vPost, vHeaders, vFlags, vTargetFrame, vUrl;
            string cPostData;
            vFlags = null;
            vTargetFrame = null;
            vUrl = "http://localhost/testpage.asp";
            vHeaders = "Content-Type: application/x-www-form-urlencoded" + Convert.ToChar(10) + Convert.ToChar(13);
            cPostData = "test1=1&test2=2&test3=3";
            vPost = ASCIIEncoding.ASCII.GetBytes(cPostData);

            SHDocVw.InternetExplorer ie = new SHDocVw.InternetExplorer();
            SHDocVw.IWebBrowserApp WebBro = (SHDocVw.IWebBrowserApp)ie;
            WebBro.Height = 500;  // 세로 길이
            WebBro.Width = 500;   // 가로 길이
            WebBro.ToolBar = 0;
            WebBro.Visible = true;
            WebBro.Navigate(vUrl.ToString(), ref vFlags, ref vTargetFrame, ref vPost, ref vHeaders);
------------------------------------------------------------------------------------------------------------

아무튼 위와 같은 코드를 통해 IE를 띄울 수 있으며
Process에서는 MainWindowHandle 가지고 있고 SHDocVw.InternetExplorer 클래스 또한 HWND라는 속성이 있으므로
각 속성들을 통해 프로세스를 주무를 수 있지 않을까 싶다. (안되면 뭐 말고~)

Posted by CoolDragon