<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/">
    <channel>
        <title>홍환민 홈페이지 * 사용자 참여란</title>
        <link>http://www.wearethebest.co.kr/zbxe/User_Participation</link>
        <description></description>
        <language>ko</language>
        <pubDate>Mon, 06 Sep 2010 15:57:32 +0900</pubDate>
        <lastBuildDate>Mon, 06 Sep 2010 15:57:32 +0900</lastBuildDate>
        <generator>XpressEngine 1.4.2.3</generator>
                                <item>
            <title>USB 드라이브 안전하게 제거하기.</title>
            <dc:creator>과니</dc:creator>
            <link>http://www.wearethebest.co.kr/zbxe/12150</link>
            <guid isPermaLink="true">http://www.wearethebest.co.kr/zbxe/12150</guid>
                        <comments>http://www.wearethebest.co.kr/zbxe/12150#comment</comments>
                                    <description>&lt;div class=&quot;xe_content&quot;&gt;&lt;P&gt;&lt;SPAN style=&quot;COLOR: #008000&quot;&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;// &lt;STRONG&gt;과니&lt;/STRONG&gt;입니다&lt;BR&gt;// &lt;STRONG&gt;2008.05.14&lt;/STRONG&gt; 오늘의 팁입니다.&lt;BR&gt;// 일주일전 부친상으로 인해 회사를 일주일 쉬었더니 출근하기 정말 힘들었습니다...&lt;BR&gt;// 게을러진 맘을 잡고 팁을 올립니다.&lt;BR&gt;// 오늘의 팁은 USB 드라이브를 안전하게 제거하는 방법입니다.&lt;BR&gt;// 복잡하게 하기보단 최대한 단순하게 하기 위해 드라이브는 임의의 &apos;E:&apos; 드라이브로 정의하였습니다.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;&lt;SPAN&gt;&lt;BR&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000&quot;&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;SPAN style=&quot;BACKGROUND-COLOR: #ffffff&quot;&gt;&lt;STRONG&gt;&lt;SPAN&gt;&lt;SPAN&gt;procedure &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;TForm1.Button1Click(Sender: TObject);&lt;BR&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;const&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; IOCTL_STORAGE_EJECT_MEDIA = &lt;SPAN style=&quot;COLOR: #0000ff&quot;&gt;$2D4808&lt;/SPAN&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; COMPLETE_MESSAGE = &apos;&lt;SPAN style=&quot;COLOR: #0000ff&quot;&gt;드라이브를 안전하게 제거하실 수 있습니다.&lt;/SPAN&gt;&apos;;&lt;BR&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;var&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; hDevice : THandle;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dwByteReturned : DWORD;&lt;BR&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;begin&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; hDevice := CreateFile(PChar(&apos;&lt;SPAN style=&quot;COLOR: #0000ff&quot;&gt;\\.\E:&lt;/SPAN&gt;&apos;), GENERIC_READ &lt;STRONG&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;or&lt;/SPAN&gt;&lt;/STRONG&gt; GENERIC_WRITE,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FILE_SHARE_READ &lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;or&lt;/STRONG&gt;&lt;/SPAN&gt; FILE_SHARE_WRITE,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;nil&lt;/STRONG&gt;&lt;/SPAN&gt;, OPEN_EXISTING, &lt;SPAN style=&quot;COLOR: #0000ff&quot;&gt;0&lt;/SPAN&gt;, &lt;SPAN style=&quot;COLOR: #0000ff&quot;&gt;0&lt;/SPAN&gt;);&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;COLOR: #000000&quot;&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;if&lt;/SPAN&gt;&lt;/STRONG&gt; hDevice = INVALID_HANDLE_VALUE &lt;STRONG&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;then&lt;/SPAN&gt;&lt;/STRONG&gt; Exit;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;COLOR: #000000&quot;&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#008000&gt;//&amp;nbsp;디스크 제거&lt;BR&gt;&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DeviceIoControl(hDevice, IOCTL_STORAGE_EJECT_MEDIA, &lt;STRONG&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;nil&lt;/SPAN&gt;&lt;/STRONG&gt;, &lt;SPAN style=&quot;COLOR: #0000ff&quot;&gt;0&lt;/SPAN&gt;, &lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;nil&lt;/STRONG&gt;&lt;/SPAN&gt;, &lt;SPAN style=&quot;COLOR: #0000ff&quot;&gt;0&lt;/SPAN&gt;, dwByteReturned, &lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;nil&lt;/STRONG&gt;&lt;/SPAN&gt;);&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;COLOR: #000000&quot;&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CloseHandle(hDevice);&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;COLOR: #000000&quot;&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Application.MessageBox(PChar(COMPLETE_MESSAGE), &apos;&lt;SPAN style=&quot;COLOR: #0000ff&quot;&gt;Information&lt;/SPAN&gt;&apos;, MB_ICONINFORMATION);&lt;BR&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;end&lt;/STRONG&gt;&lt;/SPAN&gt;;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/div&gt;</description>
                        <pubDate>Wed, 14 May 2008 15:49:48 +0900</pubDate>
                                    <slash:comments>6</slash:comments>
                    </item>
                <item>
            <title>라자루스 관련 사용자 컨트롤</title>
            <dc:creator>이정훈</dc:creator>
            <link>http://www.wearethebest.co.kr/zbxe/12037</link>
            <guid isPermaLink="true">http://www.wearethebest.co.kr/zbxe/12037</guid>
                        <comments>http://www.wearethebest.co.kr/zbxe/12037#comment</comments>
                                    <description>&lt;div class=&quot;xe_content&quot;&gt;&lt;p&gt;홍환민 님이 라자루스에 대해 델마당 쓰신 글을 보고 관심있어서 어제 다운 받고 &lt;br&gt;&lt;br&gt;윈도우xp 에서 몇가지 구동해 보았습니다 &lt;br&gt;&lt;br&gt;실력이 미쳔하여 팁같은거라고 올려놓을 것도 없습니다 그냥 라자루스 체험기 정도로만 &lt;br&gt;&lt;br&gt;봐주세요... &lt;br&gt;&lt;br&gt;사용자 컨트롤을 한번 만들어 보고자 아무 의미 없이 클릭하면 이미지가 변경되는&lt;br&gt;&lt;br&gt;컨트롤(?)을 만들어 보았습니다...&lt;br&gt;&lt;br&gt;상속받은건 TCustomControl ....라자루스는&amp;nbsp;클래스 구조와 이름이 델파이와 거의 동일 한것 같습니다&lt;br&gt;&amp;nbsp;&lt;br&gt;&lt;br&gt;그냥 클릭하면 이미지가 계속 바뀌는 단순한 &lt;br&gt;&lt;br&gt;버튼입니다 (컴포넌트라기 보단 클래스라고 해야 되지 않을까 싶네요...)&lt;br&gt;&lt;br&gt;델파이에서 컴포넌트를 만들듯이 라자루스에서도 거의 동일하게 이용가능 한것 같습니다 (예상...)&lt;br&gt;&lt;br&gt;다만 아직 컴포넌트를 인스톨하는 방법은 모르겠습니다 &lt;br&gt;&lt;br&gt;써보니 코드 자동완성기능이 없어 조금 불편하고 ... &lt;br&gt;&lt;br&gt;그외에는 잘 모르겠지만 필요한 컴포넌트는 만들어 쓴다는 개념이면 괜찮을것 같아요 &lt;br&gt;&lt;br&gt;리눅스랑 호환이 가능하니깐 아무래도 멋진것 같습니다 &lt;br&gt;&lt;br&gt;우분투에다 깔아서 한번 해봐야 겠네요 &lt;br&gt;&lt;br&gt;근데 이게 라자루스에서 컴포넌트 만드는 방법인지는 모르겠습니다...그냥 컴파일 에러가 안되서 &lt;br&gt;&lt;br&gt;되는구나 싶기도 하네요 &lt;br&gt;&lt;br&gt;procedure Register;&lt;br&gt;begin&lt;br&gt;&amp;nbsp; RegisterComponents(&apos;Lee&apos;, [TBitButtonDemo]);&lt;br&gt;end;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&lt;br&gt;음... 혹시 고견있으시면 나눠주시길 &lt;br&gt;&lt;br&gt;우분투에서도 한번 해보고 ... 체험기를 올려 볼게용&lt;/p&gt;&lt;/div&gt;</description>
                        <pubDate>Wed, 14 May 2008 09:49:37 +0900</pubDate>
                                    <slash:comments>1</slash:comments>
                    </item>
                <item>
            <title>누구나 다 아는 swap함수에도 비밀이 있다?!</title>
            <dc:creator>과니</dc:creator>
            <link>http://www.wearethebest.co.kr/zbxe/10939</link>
            <guid isPermaLink="true">http://www.wearethebest.co.kr/zbxe/10939</guid>
                        <comments>http://www.wearethebest.co.kr/zbxe/10939#comment</comments>
                                    <description>&lt;div class=&quot;xe_content&quot;&gt;&lt;P&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;&lt;SPAN style=&quot;COLOR: #008000&quot;&gt;// 과니입니다&lt;BR&gt;// 2008.04.25 오늘의 팁은 누구나 다 아는 SWAP 함수입니다.&lt;BR&gt;// 두 가지의 데이터를 서로 교체할 때 많이 만들어서 쓰죠.&lt;BR&gt;// 일반적으로는 &lt;STRONG&gt;swap(a, b)&lt;/STRONG&gt;이런식으로...&lt;BR&gt;//&amp;nbsp;swap도 알게 모르게 분석할 수 있는 부분이 있더라구요...ㅎㅎ&lt;BR&gt;&lt;BR&gt;// 자 그럼 만들어 봅시다. swap 함수&lt;BR&gt;&lt;BR&gt;&lt;EM&gt;&lt;SPAN style=&quot;COLOR: #800080&quot;&gt;// 기본형 (실수)&lt;/SPAN&gt;&lt;/EM&gt;&lt;BR&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;SPAN style=&quot;BACKGROUND-COLOR: #ffffff&quot;&gt;&lt;STRONG&gt;&lt;SPAN&gt;&lt;SPAN&gt;procedure &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000&quot;&gt;swap(a : Integer; b : Integer);&lt;BR&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;var&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; t : Integer;&lt;BR&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;begin&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; t := a;&amp;nbsp; &lt;FONT color=#008000&gt;//&amp;nbsp;임시 변수&amp;nbsp;t&lt;BR&gt;&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; a := b;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; b := t;&lt;BR&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;end&lt;/STRONG&gt;&lt;/SPAN&gt;;&lt;BR&gt;&lt;BR&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;SPAN style=&quot;BACKGROUND-COLOR: #ffffff&quot;&gt;&lt;STRONG&gt;&lt;SPAN&gt;&lt;SPAN&gt;procedure &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;TForm2.Button1Click(Sender: TObject);&lt;BR&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;var&lt;/STRONG&gt;&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; a, b : Integer;&lt;BR&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;begin&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; a := 10;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; b := 20;&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;STRONG&gt;swap(a, b);&lt;/STRONG&gt;&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #008000&quot;&gt;&lt;SPAN style=&quot;COLOR: #000000&quot;&gt;ShowMessage(&apos;&lt;SPAN style=&quot;COLOR: #0000ff&quot;&gt;a 변수값: &lt;/SPAN&gt;&apos; + IntToStr(a) + &apos;&lt;SPAN style=&quot;COLOR: #0000ff&quot;&gt;, b 변수값: &lt;/SPAN&gt;&apos; + IntToStr(b));&lt;BR&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;end&lt;/STRONG&gt;&lt;/SPAN&gt;;&lt;BR&gt;&lt;FONT color=#008000&gt;&lt;BR&gt;// 이렇게 하면 swap 함수가 완성 됩니다. 그럼 결과는 어떨까요? 잘 나올까요?&lt;BR&gt;// 잘 나오겠다고 생각하셨다면 가장 중요한걸 놓쳐버린 겁니다. &lt;BR&gt;// 제가 기본형 (실수)라고 적어논건 많이 실수하는 부분이라서 그렇게 적어놓았습니다.&lt;BR&gt;// swap함수의 값은 그걸 호출 하는 변수의 값에 적용 되지 않기 때문에 결과적으로는&lt;BR&gt;// &lt;STRONG&gt;&lt;SPAN style=&quot;COLOR: #000000&quot;&gt;a 변수값: 10, b변수값: 20&lt;/SPAN&gt;&lt;/STRONG&gt; 이 나오게 될 것 입니다.&lt;BR&gt;// 이것을 가장 간단히&amp;nbsp;해결할 수 잇는 방법 swap함수 인수에 &lt;SPAN style=&quot;COLOR: #ff0000&quot;&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;STRONG&gt;var&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;를 붙이는 걸로 해결할 수 있습니다.&lt;BR&gt;&lt;BR&gt;&lt;SPAN style=&quot;COLOR: #800080&quot;&gt;&lt;EM&gt;// 수정 : 1&lt;BR&gt;&lt;/EM&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;SPAN style=&quot;BACKGROUND-COLOR: #ffffff&quot;&gt;&lt;STRONG&gt;&lt;SPAN&gt;&lt;SPAN&gt;procedure &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000&quot;&gt;swap(&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;var&lt;/STRONG&gt;&lt;/SPAN&gt; a : Integer; &lt;STRONG&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;var&lt;/SPAN&gt;&lt;/STRONG&gt; b : Integer);&lt;BR&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;var&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; t : Integer;&lt;BR&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;begin&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; t := a;&amp;nbsp; &lt;FONT color=#008000&gt;//&amp;nbsp;임시 변수&amp;nbsp;t&lt;BR&gt;&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; a := b;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; b := t;&lt;BR&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;end&lt;/STRONG&gt;&lt;/SPAN&gt;;&lt;BR&gt;&lt;BR&gt;&lt;FONT color=#008000&gt;//&amp;nbsp;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;COLOR: #ff0000&quot;&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;STRONG&gt;var&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;은 많은 분들이 알고 계셔서 간단히만 말하자면 인자는 &lt;EM&gt;&lt;SPAN style=&quot;COLOR: #ff0000&quot;&gt;&lt;STRONG&gt;CallByValue&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/EM&gt;와 &lt;EM&gt;&lt;SPAN style=&quot;COLOR: #ff0000&quot;&gt;&lt;STRONG&gt;CallByReference &lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/EM&gt;로 분류 하는데&lt;BR&gt;// &lt;EM&gt;&lt;SPAN style=&quot;COLOR: #ff0000&quot;&gt;&lt;STRONG&gt;CallByValue&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/EM&gt;는 함수에 값만을 넘겨받는 거라서 함수가 끝나면 그 값은 그냥 사라져 버린다고 보시면 됩니다.&lt;BR&gt;// 생략하면 &lt;EM&gt;&lt;SPAN style=&quot;COLOR: #ff0000&quot;&gt;&lt;STRONG&gt;CallByValue&lt;/STRONG&gt; &lt;/SPAN&gt;&lt;/EM&gt;&lt;SPAN style=&quot;COLOR: #ff0000&quot;&gt;&lt;FONT color=#008000&gt;가 됩니다.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;BR&gt;// &lt;EM&gt;&lt;SPAN style=&quot;COLOR: #ff0000&quot;&gt;&lt;STRONG&gt;CallByReference &lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/EM&gt;가 여기서 &lt;SPAN style=&quot;COLOR: #ff0000&quot;&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;STRONG&gt;var&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;에 해당되는 데 함수에 변수의 주소를 넘겨받아서 함수에서 그 값을 변경한다면&lt;BR&gt;// 함수가 종료되도 그 변수가 변경된 값을 가지게 되는 것입니다.&lt;BR&gt;&lt;BR&gt;// 여기까지 설명하려고 강좌를 쓴 건 물론 아니겠죠. &lt;SPAN style=&quot;COLOR: #ff0000&quot;&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;STRONG&gt;var&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;을 설명하기 위해서가 아니기 때문에&lt;BR&gt;// swap 함수를 &lt;STRONG&gt;포인터&lt;/STRONG&gt;로 변경해보겟습니다.&lt;BR&gt;&lt;BR&gt;&lt;SPAN style=&quot;COLOR: #800080&quot;&gt;&lt;EM&gt;// 수정 : 2&lt;/EM&gt;&lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;SPAN style=&quot;BACKGROUND-COLOR: #ffffff&quot;&gt;&lt;STRONG&gt;&lt;SPAN&gt;&lt;SPAN&gt;procedure &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000&quot;&gt;swap(a : PInteger;&amp;nbsp;b : PInteger);&lt;BR&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;var&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; t : Integer;&lt;BR&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;begin&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; t := a^;&amp;nbsp; &lt;FONT color=#008000&gt;//&amp;nbsp;임시 변수&amp;nbsp;t&lt;BR&gt;&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; a^ := b^;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; b^ := t;&lt;BR&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;end&lt;/STRONG&gt;&lt;/SPAN&gt;;&lt;BR&gt;&lt;BR&gt;&lt;FONT color=#008000&gt;// swap 함수를 포인터로 변경하였습니다. 함수의 인자가 포인터로 변경되었기 때문에 호출시에는&lt;BR&gt;&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;Swap(@a, @b);&lt;/STRONG&gt;&lt;BR&gt;&lt;BR&gt;&lt;FONT color=#008000&gt;// 으로 해주시면 됩니다.&lt;BR&gt;&lt;BR&gt;// 하지만 임시변수 t가 있다는게 맘에 안들기 때문에 다시 한번 더 swap 함수를 수정해 보겠습니다.&lt;BR&gt;&lt;BR&gt;&lt;SPAN style=&quot;COLOR: #800080&quot;&gt;&lt;EM&gt;// 수정 : 3&lt;/EM&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;SPAN style=&quot;COLOR: #000000&quot;&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;SPAN style=&quot;BACKGROUND-COLOR: #ffffff&quot;&gt;&lt;STRONG&gt;&lt;SPAN&gt;&lt;SPAN&gt;procedure &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000&quot;&gt;swap(a : PInteger;&amp;nbsp;b : PInteger);&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;begin&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; a^ := a^ + b^;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; b^ := a^ - b^;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; a^ := a^ - b^;&lt;BR&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;end&lt;/STRONG&gt;&lt;/SPAN&gt;;&lt;/SPAN&gt;&lt;FONT color=#008000&gt;&lt;BR&gt;&lt;BR&gt;// 이렇게 하면 임시변수 없이도 값이 변경되는 것을 확인 하실수가 있습니다.&lt;BR&gt;// 하지만 이 함수에는 가장 위험한 요소가 있습니다. 값을 더하고 빼는 부분이 있기 때문에&lt;BR&gt;// 인자의 값이 Integer형 변수의 한계에 도달하게 되는 부분에서&lt;BR&gt;// &lt;STRONG&gt;&lt;U&gt;오버플로우 현상이 발생&lt;/U&gt;&lt;/STRONG&gt;할 수 있습니다.&lt;BR&gt;&lt;BR&gt;// 자 그럼 어떻게 하느냐&lt;BR&gt;&lt;BR&gt;&lt;SPAN style=&quot;COLOR: #800080&quot;&gt;&lt;EM&gt;// 수정 : 4&lt;/EM&gt;&lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style=&quot;COLOR: #000000&quot;&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;SPAN style=&quot;BACKGROUND-COLOR: #ffffff&quot;&gt;&lt;STRONG&gt;&lt;SPAN&gt;&lt;SPAN&gt;procedure &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000&quot;&gt;swap(a : PInteger;&amp;nbsp;b : PInteger);&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;BR&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;begin&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;BR&gt;&lt;SPAN style=&quot;COLOR: #000000&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; a^ := a^ &lt;STRONG&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;xor &lt;/SPAN&gt;&lt;/STRONG&gt;b^;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; b^ := a^ &lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;xor &lt;/STRONG&gt;&lt;/SPAN&gt;b^;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; a^ := a^ &lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;xor &lt;/STRONG&gt;&lt;/SPAN&gt;b^;&lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;end&lt;/STRONG&gt;&lt;/SPAN&gt;;&lt;BR&gt;&lt;BR&gt;// 위와 같이 swap 함수를 변경해주시면 임시변수 t도 필요없고 변수의 값이 크더라도 오버플로우 현상이 없습니다.&lt;BR&gt;&lt;BR&gt;// 누구나 알고 있는 swap이지만 그냥 지나 칠수 있는 가장 간단한 함수도 연구하면&lt;BR&gt;//&amp;nbsp;더&amp;nbsp;좋은 함수로 리팩토리 될수있습니다.^^;;&lt;BR&gt;// &lt;BR&gt;// 이상 과니였습니다.&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;// 추가사항&lt;BR&gt;// &lt;STRONG&gt;Lyn&lt;/STRONG&gt;님이 알려주신 사항입니다.&lt;BR&gt;[&lt;EM&gt;&lt;FONT color=#800080&gt;수정 : 2&lt;/FONT&gt;&lt;/EM&gt;]번 함수가 [&lt;EM&gt;&lt;FONT color=#800080&gt;수정 : 4&lt;/FONT&gt;&lt;/EM&gt;]함수보다 알아보기 힘들정도의 시간이긴 하지만 더 빠릅니다.ㅎ&lt;BR&gt;&lt;BR&gt;// ------------------------------------------------------------------------&lt;BR&gt;// 추가사항 : 2008-05-14&lt;BR&gt;// ------------------------------------------------------------------------&lt;BR&gt;위의 사항은&amp;nbsp;C/C++언어로 포팅 시&lt;BR&gt;&lt;FONT color=#008000&gt;&lt;FONT color=#000000&gt;&lt;STRONG&gt;&lt;FONT color=#000080&gt;void&lt;/FONT&gt;&lt;/STRONG&gt; swap(&lt;STRONG&gt;&lt;FONT color=#000080&gt;int&lt;/FONT&gt;&lt;/STRONG&gt; *a,&amp;nbsp;&lt;STRONG&gt;&lt;FONT color=#000080&gt;int&lt;/FONT&gt;&lt;/STRONG&gt; *b)&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; *a = *a ^ *b;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; *b = *a ^ *b;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; *a = *a ^ *b;&lt;BR&gt;}&lt;/FONT&gt;&lt;BR&gt;&lt;BR&gt;로 되고 이것은 다시 정리하면 다음과 같이 됩니다.&lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;&lt;FONT color=#000000&gt;&lt;U&gt;#define swap(a,b) (a)^=(b)^=(a)^=(b);&lt;/U&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;BR&gt;&lt;BR&gt;&lt;/FONT&gt;과정 1, 2, 3은 바로 위 define 함수로&amp;nbsp;만드는 과정을 보여주고 있는 부분으로&lt;BR&gt;&lt;BR&gt;마지막 define은 C/C++에 해당하는 부분이라서 Delphi Swap설명에는 첨부하지 않았었습니다...ㅎ&lt;BR&gt;&lt;BR&gt;이것을 다시 템플릿으로 선언하는 부분도 있는 데 그것은 추후에 ^^;;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/div&gt;</description>
                        <pubDate>Fri, 25 Apr 2008 15:45:04 +0900</pubDate>
                                    <slash:comments>11</slash:comments>
                    </item>
                <item>
            <title>레지스트리 키의 권한 설정 및 해제</title>
            <dc:creator>과니</dc:creator>
            <link>http://www.wearethebest.co.kr/zbxe/10697</link>
            <guid isPermaLink="true">http://www.wearethebest.co.kr/zbxe/10697</guid>
                        <comments>http://www.wearethebest.co.kr/zbxe/10697#comment</comments>
                                    <description>&lt;div class=&quot;xe_content&quot;&gt;&lt;P&gt;&lt;SPAN style=&quot;COLOR: #008000&quot;&gt;&lt;FONT face=Tahoma&gt;// 과니입니다&lt;BR&gt;// 2008.04.23 오늘의 팁은 레지스트리 키의&amp;nbsp;권한 설정입니다.&lt;BR&gt;// 요즘들어 델마당의 팁이나 강좌를 올리는 분들이 없는 것 같아 보여서&lt;BR&gt;// 실력없는 과니가 자꾸만 올리게됩니다.&lt;BR&gt;// &lt;BR&gt;// SAMPLE_REG_KEY는 전체 상수로 테스트를 시행할 레지스트리 키입니다.&lt;BR&gt;// 버튼은 총 4개로 &apos;키생성&apos;, &apos;키삭제&apos;, &apos;권한설정&apos;, 권한해제&apos; 입니다.&lt;BR&gt;// 키 생성을 하신 후에 권한 설정하시고 키삭제를 하려고하면 삭제가 실패될것입니다.&lt;BR&gt;// 레지스트리키에 권한이 설정되어 삭제되지 않는 것이며 이것은 Regedit.exe로 실행하셔도 마찬가지 입니다.&lt;BR&gt;// 하지만 키가 아닌 내용은 삭제 되더군요...ㅋㅋㅋ&lt;BR&gt;// &lt;BR&gt;// 다음 강좌는 뭘로 정할지 찾아보러 ㅎㄷㄷ&lt;BR&gt;&lt;BR&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;const&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;STRONG&gt;&lt;BR&gt;&lt;/STRONG&gt;&lt;FONT face=Tahoma&gt;//&amp;nbsp;테스트를 시행할 레지스트리 키 상수&lt;BR&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT face=Tahoma&gt;&lt;SPAN style=&quot;COLOR: #000000&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SAMPLE_REG_KEY = &lt;/SPAN&gt;&apos;&lt;SPAN style=&quot;COLOR: #0000ff&quot;&gt;Software\REGSAMPLE&lt;/SPAN&gt;&apos;;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;procedure &lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000&quot;&gt;TForm2.btnProtectKeyClick(Sender: TObject);&lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;SPAN&gt;&lt;STRONG&gt;begin&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style=&quot;COLOR: #008000&quot;&gt;// 해당 키 권한 설정&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;if &lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000&quot;&gt;ProtectKey(HKEY_LOCAL_MACHINE, SAMPLE_REG_KEY) = ERROR_SUCCESS&lt;/SPAN&gt; &lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;then&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000&quot;&gt;&lt;FONT face=Tahoma&gt;ShowMessage(&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT face=Tahoma&gt;&lt;SPAN&gt;&apos;&lt;SPAN style=&quot;COLOR: #0000ff&quot;&gt;권한 설정 완료&apos;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000&quot;&gt;)&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;else&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000&quot;&gt;ShowMessage(&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN&gt;&lt;FONT face=Tahoma&gt;&lt;SPAN style=&quot;COLOR: #0000ff&quot;&gt;&apos;권한 설정 실패&apos;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000000&quot;&gt;);&lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;end&lt;/STRONG&gt;&lt;/SPAN&gt;;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;COLOR: #008000&quot;&gt;&lt;SPAN style=&quot;COLOR: #000000&quot;&gt;&lt;FONT face=Tahoma&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;procedure&lt;/STRONG&gt;&lt;/SPAN&gt; TForm2.btnUnProtectKeyClick(Sender: TObject);&lt;BR&gt;begin&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style=&quot;COLOR: #008000&quot;&gt;// 해당 키 권한 해제&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;if&lt;/STRONG&gt;&lt;/SPAN&gt; UnProtectKey(HKEY_LOCAL_MACHINE, SAMPLE_REG_KEY) = ERROR_SUCCESS &lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;then&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ShowMessage(&apos;&lt;SPAN style=&quot;COLOR: #0000ff&quot;&gt;권한 해제 완료&lt;/SPAN&gt;&apos;)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;else&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ShowMessage(&apos;&lt;SPAN style=&quot;COLOR: #0000ff&quot;&gt;권한 해제 실패&lt;/SPAN&gt;&apos;);&lt;BR&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;end&lt;/STRONG&gt;&lt;/SPAN&gt;;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;COLOR: #008000&quot;&gt;&lt;SPAN style=&quot;COLOR: #000000&quot;&gt;&lt;FONT face=Tahoma&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;procedure&lt;/STRONG&gt;&lt;/SPAN&gt; TForm2.btnCreateRegKeyClick(Sender: TObject);&lt;BR&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;var&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; phkResult : hKey;&lt;BR&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;begin&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style=&quot;COLOR: #008000&quot;&gt;// 레지스트리 키 생성&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;if&lt;/STRONG&gt;&lt;/SPAN&gt; RegCreateKey(HKEY_LOCAL_MACHINE, SAMPLE_REG_KEY, phkResult) = ERROR_SUCCESS &lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;then begin&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ShowMessage(&apos;&lt;SPAN style=&quot;COLOR: #0000ff&quot;&gt;생성 완료&lt;/SPAN&gt;&apos;);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;end else begin&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ShowMessage(&apos;&lt;SPAN style=&quot;COLOR: #0000ff&quot;&gt;생성 오류&lt;/SPAN&gt;&apos;);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;end&lt;/STRONG&gt;&lt;/SPAN&gt;;&lt;BR&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;end&lt;/STRONG&gt;&lt;/SPAN&gt;;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;COLOR: #008000&quot;&gt;&lt;SPAN style=&quot;COLOR: #000000&quot;&gt;&lt;FONT face=Tahoma&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;procedure&lt;/STRONG&gt;&lt;/SPAN&gt; TForm2.btnDeleteRegKeyClick(Sender: TObject);&lt;BR&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;begin&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style=&quot;COLOR: #008000&quot;&gt;// 레지스트리 키 삭제&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;if&lt;/STRONG&gt;&lt;/SPAN&gt; RegDeleteKey(HKEY_LOCAL_MACHINE, SAMPLE_REG_KEY) = ERROR_SUCCESS &lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;then begin&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ShowMessage(&apos;&lt;SPAN style=&quot;COLOR: #0000ff&quot;&gt;삭제 완료&lt;/SPAN&gt;&apos;);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;end else begin&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ShowMessage(&lt;SPAN style=&quot;COLOR: #0000ff&quot;&gt;&apos;삭제 오류&apos;&lt;/SPAN&gt;);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;end&lt;/STRONG&gt;&lt;/SPAN&gt;;&lt;BR&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;end&lt;/STRONG&gt;&lt;/SPAN&gt;;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;FONT face=Tahoma&gt;function &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #008000&quot;&gt;&lt;SPAN style=&quot;COLOR: #000000&quot;&gt;&lt;FONT face=Tahoma&gt;OpenOrCreateKey(hKey : Cardinal; lpSubKey : String; var phkResult : hKey; fCreate : Boolean = True) : Integer;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT face=Tahoma&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;begin&lt;BR&gt;&lt;/STRONG&gt;&lt;SPAN style=&quot;COLOR: #008000&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 레지스트리 키&amp;nbsp;검색&lt;/SPAN&gt;&lt;BR&gt;&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;if&lt;/STRONG&gt;&lt;/SPAN&gt; RegOpenKeyEx(hKey, PChar(lpSubKey), 0, KEY_ALL_ACCESS, phkResult) = ERROR_SUCCESS &lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;then begin&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Result := RegOpenKey(hKey, PChar(lpSubKey), phkResult);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;if&lt;/STRONG&gt;&lt;/SPAN&gt; Result = ERROR_SUCCESS &lt;STRONG&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;then begin&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;if&lt;/STRONG&gt;&lt;/SPAN&gt; fCreate &lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;then &lt;/STRONG&gt;&lt;/SPAN&gt;Result := RegCreateKey(hKey, PChar(lpSubKey), phkResult);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;end&lt;/STRONG&gt;&lt;/SPAN&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;end else begin&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Result := RegOpenKey(hKey, PChar(lpSubKey), phkResult);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;if&lt;/STRONG&gt;&lt;/SPAN&gt; Result = ERROR_SUCCESS &lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;then begin&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;if&lt;/STRONG&gt;&lt;/SPAN&gt; fCreate &lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;then &lt;/STRONG&gt;&lt;/SPAN&gt;Result := RegCreateKey(hKey, PChar(lpSubKey), phkResult);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;end&lt;/STRONG&gt;&lt;/SPAN&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;end&lt;/STRONG&gt;&lt;/SPAN&gt;;&lt;BR&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;end&lt;/STRONG&gt;&lt;/SPAN&gt;;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;FONT face=Tahoma&gt;&lt;SPAN style=&quot;COLOR: #008000&quot;&gt;// 해당 레지스트리 키의 권한을 해제하는 함수&lt;/SPAN&gt;&lt;BR&gt;&lt;STRONG&gt;function &lt;/STRONG&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #008000&quot;&gt;&lt;SPAN style=&quot;COLOR: #000000&quot;&gt;&lt;FONT face=Tahoma&gt;UnProtectKey(hRKey : Cardinal; lpSubKey : &lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;String&lt;/STRONG&gt;&lt;/SPAN&gt;) : Integer;&lt;BR&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;var&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SecDes : TSECURITYDESCRIPTOR;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; hRegKey : hKey;&lt;BR&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;begin&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; InitializeSecurityDescriptor(@SecDes, SECURITY_DESCRIPTOR_REVISION);&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;COLOR: #008000&quot;&gt;&lt;SPAN style=&quot;COLOR: #000000&quot;&gt;&lt;FONT face=Tahoma&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Result := OpenOrCreateKey(hRKey, lpSubKey, hRegKey);&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;COLOR: #008000&quot;&gt;&lt;SPAN style=&quot;COLOR: #000000&quot;&gt;&lt;FONT face=Tahoma&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;if&lt;/STRONG&gt;&lt;/SPAN&gt; Result = ERROR_SUCCESS &lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;then begin&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SetSecurityDescriptorDacl(@SecDes, True, &lt;STRONG&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;nil&lt;/SPAN&gt;&lt;/STRONG&gt;, False);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Result := RegSetKeySecurity(hRegKey, DACL_SECURITY_INFORMATION, @SecDes);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;end&lt;/STRONG&gt;&lt;/SPAN&gt;;&lt;BR&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;end&lt;/STRONG&gt;&lt;/SPAN&gt;;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;COLOR: #008000&quot;&gt;&lt;SPAN&gt;&lt;FONT face=Tahoma&gt;// 해당 레지스트리 키의 권한을 설정하는 함수&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #003366&quot;&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;BR&gt;&lt;STRONG&gt;&lt;FONT face=Tahoma&gt;function &lt;/FONT&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #008000&quot;&gt;&lt;SPAN style=&quot;COLOR: #000000&quot;&gt;&lt;FONT face=Tahoma&gt;ProtectKey(hRKey : Cardinal; lpSubKey : String) : Integer;&lt;BR&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;const&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ACL_REVISION = &lt;SPAN style=&quot;COLOR: #0000ff&quot;&gt;2&lt;/SPAN&gt;;&lt;BR&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;var&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SecDes : TSECURITYDESCRIPTOR;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;COLOR: #008000&quot;&gt;&lt;SPAN style=&quot;COLOR: #000000&quot;&gt;&lt;FONT face=Tahoma&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ACLBuffer: &lt;STRONG&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;array&lt;/SPAN&gt;&lt;/STRONG&gt;[&lt;SPAN style=&quot;COLOR: #0000ff&quot;&gt;1&lt;/SPAN&gt;..&lt;SPAN style=&quot;COLOR: #0000ff&quot;&gt;1024&lt;/SPAN&gt;] &lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;of &lt;/STRONG&gt;&lt;/SPAN&gt;Byte;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;COLOR: #008000&quot;&gt;&lt;SPAN style=&quot;COLOR: #000000&quot;&gt;&lt;FONT face=Tahoma&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ptACL : PACL;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; hRegKey : hKey;&lt;BR&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;begin&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; InitializeSecurityDescriptor(@SecDes, SECURITY_DESCRIPTOR_REVISION);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ptACL:= @ACLBuffer;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; InitializeAcl(ptACL^, SizeOf(ACLBuffer), ACL_REVISION);&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;COLOR: #008000&quot;&gt;&lt;SPAN style=&quot;COLOR: #000000&quot;&gt;&lt;FONT face=Tahoma&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Result := OpenOrCreateKey(hRKey, lpSubKey, hRegKey);&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;COLOR: #008000&quot;&gt;&lt;SPAN style=&quot;COLOR: #000000&quot;&gt;&lt;FONT face=Tahoma&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;if&lt;/STRONG&gt;&lt;/SPAN&gt; Result = ERROR_SUCCESS &lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;then begin&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SetSecurityDescriptorDacl(@SecDes, True, ptACL, False);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Result := RegSetKeySecurity(hRegKey, DACL_SECURITY_INFORMATION, @SecDes);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;end&lt;/STRONG&gt;&lt;/SPAN&gt;;&lt;BR&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;end&lt;/STRONG&gt;&lt;/SPAN&gt;;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/div&gt;</description>
                        <pubDate>Wed, 23 Apr 2008 13:34:29 +0900</pubDate>
                                    <slash:comments>7</slash:comments>
                    </item>
                <item>
            <title>PE 구조를 이용해 API `GetProcAddress` 함수 직접 구현하기</title>
            <dc:creator>과니</dc:creator>
            <link>http://www.wearethebest.co.kr/zbxe/10653</link>
            <guid isPermaLink="true">http://www.wearethebest.co.kr/zbxe/10653</guid>
                        <comments>http://www.wearethebest.co.kr/zbxe/10653#comment</comments>
                                    <description>&lt;div class=&quot;xe_content&quot;&gt;&lt;P&gt;&lt;SPAN style=&quot;COLOR: #008000&quot;&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;// 과니입니다.&lt;BR&gt;// 이번엔 PE (Portable Executable) 구조체를 이용하여 API 함수인&amp;nbsp;GetProcAddress함수를 직접 제작해보겠습니다.&lt;BR&gt;// 참고서적은 한빛미디어의 Windows 시스템 실행파일의 구조와 원리입니다.&lt;BR&gt;// 포팅할수있는 부분은 포팅하고 나머진 구현하여 제작하였습니다. (필요없는 부분은 제거도 ㅋㅋㅋ)&lt;BR&gt;// 첨부파일은 PE Format Unit으로 추가해주신 후 사용하시면 됩니다.&lt;BR&gt;// 별로 글제주는 없어서 팁는 주석으로 보충설명하는 식으로 하겠습니다.&lt;BR&gt;// PE 구조를 활용할 수 있는 부분은 DLL내의 Export함수를 모두 뽑아올수있는 것 (물론 프로그램있지만)&lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;&lt;FONT color=#008000&gt;// 더 나아가서는 OS Kernel 프로그래밍에도 도움이 됩니다. (아주 열심히 쭉 더 나가면 -_ -a)&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;uses&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;..., uPEFormat;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;&lt;BR&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;procedure &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;TForm1.Button1Click(Sender: TObject);&lt;BR&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;SPAN&gt;&lt;STRONG&gt;const&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SAMPLE_DLL = &apos;&lt;SPAN style=&quot;COLOR: #0000ff&quot;&gt;C:\Windows\System32\ntdll.dll&lt;/SPAN&gt;&apos;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SAMPLE_NATIVE_API = &apos;&lt;SPAN style=&quot;COLOR: #0000ff&quot;&gt;ZwQueryInformationProcess&lt;/SPAN&gt;&apos;;&lt;BR&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;var&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ProcAddr : Pointer;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; handleDll : THandle;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;begin&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style=&quot;COLOR: #008000&quot;&gt;// LoadLibrary로 Dll을 로드하여 프로세스 주소에 매핑&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; handleDll := LoadLibrary(SAMPLE_DLL);&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ProcAddr := MyGetProcAddress(handleDll, SAMPLE_NATIVE_API);&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;if not&lt;/SPAN&gt;&lt;/STRONG&gt; Assigned(ProcAddr) &lt;SPAN style=&quot;COLOR: #003366&quot;&gt;&lt;STRONG&gt;then begin&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ShowMessage(&lt;SPAN style=&quot;COLOR: #3366ff&quot;&gt;&apos;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #0000ff&quot;&gt;&lt;SPAN&gt;함수가 매핑된 위치가 없습니다.&lt;/SPAN&gt;&lt;/SPAN&gt;&apos;)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;end else begin&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ShowMessage(&apos;&lt;SPAN style=&quot;COLOR: #0000ff&quot;&gt;함수 매핑된 위치 : &lt;/SPAN&gt;&apos; + Format(&apos;&lt;SPAN style=&quot;COLOR: #0000ff&quot;&gt;%p&lt;/SPAN&gt;&apos;, [ProcAddr]));&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;end&lt;/STRONG&gt;&lt;/SPAN&gt;;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;end&lt;/STRONG&gt;&lt;/SPAN&gt;;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;function &lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;MyGetProcAddress(hModule : LongWord; pszSymbol : PChar) : Pointer;&lt;BR&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;type&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; TWordArr = &lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;array &lt;/STRONG&gt;&lt;/SPAN&gt;[&lt;SPAN style=&quot;COLOR: #0000ff&quot;&gt;0&lt;/SPAN&gt;..&lt;SPAN style=&quot;COLOR: #0000ff&quot;&gt;0&lt;/SPAN&gt;] &lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;of &lt;/STRONG&gt;&lt;/SPAN&gt;Word;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PWordArr = ^TWordArr;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; TLongWordArr = &lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;array &lt;/STRONG&gt;&lt;/SPAN&gt;[&lt;SPAN style=&quot;COLOR: #0000ff&quot;&gt;0&lt;/SPAN&gt;..&lt;SPAN style=&quot;COLOR: #0000ff&quot;&gt;0&lt;/SPAN&gt;] &lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;of &lt;/STRONG&gt;&lt;/SPAN&gt;LongWord;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PLongWordArr = ^TLongWordArr;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;var&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN style=&quot;COLOR: #008000&quot;&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;// 각 파일 구조체 선언&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pImageBase : PUCHAR;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pImageDosHeader : PIMAGE_DOS_HEADER;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style=&quot;COLOR: #008000&quot;&gt;// IMAGE_DOS_HEADER&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pImageNtHeaders : PIMAGE_NT_HEADERS;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style=&quot;COLOR: #008000&quot;&gt;//&amp;nbsp;IMAGE_NT_HEADERS&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pImageDataDirectory : PIMAGE_DATA_DIRECTORY;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style=&quot;COLOR: #008000&quot;&gt;//&amp;nbsp;IMAGE_DATA_DIRECTORY&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pImageExportDirectory : PIMAGE_EXPORT_DIRECTORY;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #008000&quot;&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;// IMAGE_EXPORT_DIRECTORY&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dwFuncIndex : LongWord;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pFuncName : PChar;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FnIndex: LongWord;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;begin&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Result := &lt;STRONG&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;nil&lt;/SPAN&gt;&lt;/STRONG&gt;;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pImageBase := PUCHAR(hModule);&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style=&quot;COLOR: #008000&quot;&gt;// 매핑되지 않았다면 종료&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 매핑되지 않았다는 것은 DLL의 주소가 잘못되었다는 것.&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;if not&lt;/SPAN&gt;&lt;/STRONG&gt; Assigned(pImageBase) &lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;then &lt;/STRONG&gt;&lt;/SPAN&gt;Exit;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pImageDosHeader := PIMAGE_DOS_HEADER(pImageBase);&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;&lt;SPAN style=&quot;COLOR: #008000&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // PE 포멧 파일인지 확인하여 PE파일이 아니라면 종료한다.&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // PE (Portable Executable) 포멧 파일은 Exe, Dll에 해당한다.&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // PE 구조는 IMAGE_DOS_HEADER, IMAGE_FILE_HEADERM, IMAGE_OPTIONAL_HEADER32 헤더로 구성된다.&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // IMAGE_DOS_SIGNATURE&amp;nbsp; 0x5A4D (23117 : MZ)&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;if &lt;/STRONG&gt;&lt;/SPAN&gt;pImageDosHeader.e_magic &amp;lt;&amp;gt; IMAGE_DOS_SIGNATURE &lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;then &lt;/STRONG&gt;&lt;/SPAN&gt;Exit;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;&lt;SPAN style=&quot;COLOR: #008000&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // e_lfanew : PE 헤더의 시작점을 가리키는 RVA 값이다.&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 파일이 매핑된 주소의 시점부터 e_lfanew 값을 더하면 IMAGE_NT_HEADERS 가 나온다.&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pImageNtHeaders := PIMAGE_NT_HEADERS(LongInt(pImageBase) + pImageDosHeader.e_lfanew);&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;&lt;SPAN style=&quot;COLOR: #008000&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // IMAGE_NT_SIGNATURE 를 확인한다.&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // IMAGE_NT_HEADERS의 시작지점이 $00004550 값인지 확인한다.&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 0x00004550 (17744 : PE00)&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;if &lt;/STRONG&gt;&lt;/SPAN&gt;pImageNtHeaders.Signature &amp;lt;&amp;gt; IMAGE_NT_SIGNATURE &lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;then&amp;nbsp;&lt;/STRONG&gt;&lt;/SPAN&gt;Exit;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pImageDataDirectory := @pImageNtHeaders.OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT];&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;&lt;SPAN style=&quot;COLOR: #008000&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // IMAGE_EXPORT_DIRECTORY : export된 함수들을 담고 있는 구조체이다.&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pImageExportDirectory := PIMAGE_EXPORT_DIRECTORY(Cardinal(pImageBase) + pImageDataDirectory.VirtualAddress);&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dwFuncIndex := &lt;SPAN style=&quot;COLOR: #0000ff&quot;&gt;0&lt;/SPAN&gt;;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;&lt;SPAN style=&quot;COLOR: #008000&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // pImageExportDirectory.NumberOfFunctions : DLL 파일 내의 export된 함수의 갯수를 의미한다.&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 처음부터 갯수만큼 돌면서 검색하려고 하는 함수가 존재하는 지 확인한다.&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;while&lt;/SPAN&gt;&lt;/STRONG&gt; (dwFuncIndex &amp;lt; pImageExportDirectory.NumberOfFunctions - &lt;SPAN style=&quot;COLOR: #0000ff&quot;&gt;1&lt;/SPAN&gt;) &lt;STRONG&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;do begin&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;COLOR: #008000&quot;&gt; // 해당 주소의 함수명을 가져온다.&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pFuncName := PChar(PLongWordArr(Cardinal(pImageExportDirectory.AddressOfNames) +&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Cardinal(pImageBase))^[dwFuncIndex] + Cardinal(pImageBase));&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;&lt;SPAN style=&quot;COLOR: #008000&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 검색하려고 하는 pszSymbol 함수와&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // DLL에서 검색된 pFuncName 함수를 비교한다.&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;if &lt;/STRONG&gt;&lt;/SPAN&gt;StrLIComp(pszSymbol, pFuncName, Length(pszSymbol)) = 0 &lt;STRONG&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;then begin&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style=&quot;COLOR: #008000&quot;&gt;// AddressOfNameOrdinals 순서수 테이블&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FnIndex := PWORDARR(Cardinal(pImageExportDirectory.AddressOfNameOrdinals) +&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Cardinal(pImageBase))^[dwFuncIndex];&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;&lt;SPAN style=&quot;COLOR: #008000&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 검색하려는 함수명과 DLL에서 Export된 함수명이 같다면 해당 함수의 주소를 리턴한다.&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Result := Pointer(PLongWordArr(Cardinal(pImageExportDirectory.AddressOfFunctions) +&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Cardinal(pImageBase))^[FnIndex] + Cardinal(pImageBase));&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Break;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;end&lt;/STRONG&gt;&lt;/SPAN&gt;;&lt;BR&gt;&lt;SPAN style=&quot;COLOR: #008000&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 두 함수가 같지 않으면 Index를 증가해 다음 함수를 검색한다.&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; inc(dwFuncIndex);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;end&lt;/SPAN&gt;&lt;/STRONG&gt;;&lt;BR&gt;&lt;SPAN style=&quot;COLOR: #000080&quot;&gt;&lt;STRONG&gt;end&lt;/STRONG&gt;&lt;/SPAN&gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;/div&gt;</description>
                        <pubDate>Wed, 23 Apr 2008 00:20:59 +0900</pubDate>
                                    <slash:comments>1</slash:comments>
                    </item>
                <item>
            <title>델파이에서 포인터 주소값을 문자열로 구할려면</title>
            <dc:creator>김경진</dc:creator>
            <link>http://www.wearethebest.co.kr/zbxe/10616</link>
            <guid isPermaLink="true">http://www.wearethebest.co.kr/zbxe/10616</guid>
                        <comments>http://www.wearethebest.co.kr/zbxe/10616#comment</comments>
                                    <description>&lt;div class=&quot;xe_content&quot;&gt;팁이라고 말하기 머한 허접한 팁입니다.&lt;br&gt;후배가 걍 알려달라고해서 알려준건데 걍 혹시나 또 필요하신분 있을까봐 올립니다. ^^&lt;br&gt;(... 누군가의 팁업로드의 압박이 밀려온다... ㅋㅋ)&lt;br&gt;&lt;br&gt;&lt;pre class=&quot;brush: delphi;gutter: false;&quot;&gt;procedure TForm1.Button1Click(Sender: TObject);
var
&amp;nbsp; a : Integer;
&amp;nbsp; s : String;
begin
&amp;nbsp; s := Format(&apos;%p&apos;, [@a]);
&amp;nbsp; ShowMessage(s);
end; 
&lt;/pre&gt;&lt;br&gt;&lt;/div&gt;</description>
                        <pubDate>Tue, 22 Apr 2008 18:29:57 +0900</pubDate>
                                    <slash:comments>2</slash:comments>
                    </item>
                <item>
            <title>트리뷰 확장하기</title>
            <dc:creator>김경진</dc:creator>
            <link>http://www.wearethebest.co.kr/zbxe/10613</link>
            <guid isPermaLink="true">http://www.wearethebest.co.kr/zbxe/10613</guid>
                        <comments>http://www.wearethebest.co.kr/zbxe/10613#comment</comments>
                                    <description>&lt;div class=&quot;xe_content&quot;&gt;&lt;FONT color=#226666&gt;&lt;FONT color=#000000&gt;트리뷰 확장 팁입니다.&lt;/FONT&gt;&lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;// 트리뷰 확장&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR&gt;procedure TfrmMain.TreeExpand(ANode: TTreeNode);&lt;BR&gt;begin&lt;BR&gt;&amp;nbsp; while Assigned(ANode) do&lt;BR&gt;&amp;nbsp; begin&lt;BR&gt;&amp;nbsp; ANode.Expand(True);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; TreeExpand(ANode.getFirstChild);&lt;BR&gt;&amp;nbsp; ANode := ANode.getNextSibling;&lt;BR&gt;&amp;nbsp; end;&lt;BR&gt;end;&lt;BR&gt;&lt;BR&gt;&lt;FONT color=#226666&gt;&lt;STRONG&gt;// 확장 함수&amp;nbsp;호출&lt;/STRONG&gt;&lt;/FONT&gt;&lt;BR&gt;procedure TfrmMain.btnExpendClick(Sender: TObject);&lt;BR&gt;begin&lt;BR&gt;&amp;nbsp; TreeExpand(TreeView1.Items.GetFirstNode);&lt;BR&gt;end;&lt;BR&gt;&lt;BR&gt;* 델마당 질/답 게시판에서 펌한 자료입니다.&lt;/div&gt;</description>
                        <pubDate>Tue, 22 Apr 2008 15:53:37 +0900</pubDate>
                                </item>
                <item>
            <title>WinInet을 이용한 파일 수정 날짜 구하기</title>
            <dc:creator>김경진</dc:creator>
            <link>http://www.wearethebest.co.kr/zbxe/10529</link>
            <guid isPermaLink="true">http://www.wearethebest.co.kr/zbxe/10529</guid>
                        <comments>http://www.wearethebest.co.kr/zbxe/10529#comment</comments>
                                    <description>&lt;div class=&quot;xe_content&quot;&gt;&lt;FONT face=돋움&gt;&lt;FONT size=2&gt;&lt;FONT color=#226666&gt;WinInet을 이용한 서버의 있는 파일의 수정 날짜를 구하는 루틴입니다.&lt;BR&gt;업데이트 유무를 판단할때 유용하게 쓰일수 있습니다.&lt;/FONT&gt;&lt;BR&gt;&lt;BR&gt;procedure TForm1.Button1Click(Sender: TObject);&lt;BR&gt;var&lt;BR&gt;&amp;nbsp; hSession : HINTERNET;&lt;BR&gt;&amp;nbsp; hService : HINTERNET;&lt;BR&gt;&amp;nbsp; LastModified : SYSTEMTIME;&lt;BR&gt;&amp;nbsp; FileSize : Longint;&lt;BR&gt;&amp;nbsp; dwSize, Reserved : DWORD;&lt;BR&gt;&amp;nbsp; ft1, ft2 : FILETIME;&lt;BR&gt;&amp;nbsp; t : SYSTEMTIME;&lt;BR&gt;&amp;nbsp; buf : String;&lt;BR&gt;begin&lt;BR&gt;　hSession := InternetOpen( &apos;MyApp&apos;, INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0 );&lt;BR&gt;　if Assigned( hSession ) then&lt;BR&gt;　begin&lt;BR&gt;　　hService := InternetOpenUrl( hSession, PChar(Edit1.Text), nil, 0, 0, 0);&lt;BR&gt;　　if Assigned( hService ) then&lt;BR&gt;　　begin&lt;BR&gt;　　　dwSize := sizeof(LastModified);&lt;BR&gt;　　　Reserved := 0;&lt;BR&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face=돋움&gt;&lt;FONT size=2&gt;&lt;FONT color=#ee2222&gt;　　　HttpQueryInfo(hService, HTTP_QUERY_LAST_MODifIED or HTTP_QUERY_FLAG_SYSTEMTIME,&lt;BR&gt;　　　　　　　　　　　　　　　@LastModified, dwSize, Reserved);&lt;/FONT&gt;&lt;BR&gt;　　　dwSize := sizeof(FileSize);&lt;BR&gt;　　　Reserved := 0;&lt;BR&gt;　　　HttpQueryInfo(hService, HTTP_QUERY_CONTENT_LENGTH or HTTP_QUERY_FLAG_NUMBER,&lt;BR&gt;　　　　　　　　　　　　　　　@FileSize, dwSize, Reserved);&lt;BR&gt;　　　&lt;FONT color=#ee2222&gt;SystemTimeToFileTime( LastModified, ft2 );&lt;/FONT&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face=돋움&gt;&lt;FONT size=2&gt;&lt;FONT color=#ee2222&gt;　　　FileTimeToLocalFileTime( ft2, ft1 );&lt;BR&gt;　　　FileTimeToSystemTime( ft1, t );&lt;/FONT&gt;&lt;BR&gt;　&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face=돋움&gt;&lt;FONT size=2&gt;&lt;FONT color=#2222ee&gt;　　buf := Format(&apos;날짜:%4d/%02d/%02d　%2d:%02d:%02d　파일 사이즈:%d&apos;,&lt;BR&gt;　　　　　　　　　　[t.wYear, t.wMonth, t.wDay, t.wHour, t.wMinute, t.wSecond, FileSize]);&lt;BR&gt;　　　Memo1.Lines.Add( buf );&lt;BR&gt;&lt;/FONT&gt;　　end;&lt;BR&gt;　　InternetCloseHandle( hService );&lt;BR&gt;　end;&lt;BR&gt;　InternetCloseHandle( hSession );&lt;BR&gt;end;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/div&gt;</description>
                        <pubDate>Mon, 21 Apr 2008 17:18:04 +0900</pubDate>
                                </item>
                <item>
            <title>MsgWaitForMultipleObjects를 이용해 시간 지연시키기</title>
            <dc:creator>과니</dc:creator>
            <link>http://www.wearethebest.co.kr/zbxe/10455</link>
            <guid isPermaLink="true">http://www.wearethebest.co.kr/zbxe/10455</guid>
                        <comments>http://www.wearethebest.co.kr/zbxe/10455#comment</comments>
                                    <description>&lt;div class=&quot;xe_content&quot;&gt;&lt;DIV class=view style=&quot;FONT-SIZE: 9pt; FONT-FAMILY: 1092568_9&quot;&gt;
&lt;DIV&gt;&lt;FONT face=Tahoma&gt;&lt;FONT color=#000080&gt;&lt;FONT color=#008000&gt;// MsgWaitForMultipleObjects를 이용해 시간 지연시키기 &lt;BR&gt;// &lt;BR&gt;// Sleep과 같은 기능을 하지만 Sleep으로 시간 지연을 하면 메시지 처리를 할 수 없기 때문에 일명&apos;창렉&apos;이 걸리지만, &lt;BR&gt;// 아래 함수는 메시지를 처리하면서 지연을 걸어주기 때문에 창렉이 걸리지 않습니다. &lt;BR&gt;// 사용법도 Sleep이랑 같습니다. &lt;BR&gt;// &lt;BR&gt;// WaitForTimer(1000); &amp;lt;- 1초간 지연을 시킵니다. &lt;BR&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;STRONG&gt;procedure&lt;/STRONG&gt;&lt;/FONT&gt; WaitForTimer(MilliSeconds :&amp;nbsp; LongInt); &lt;BR&gt;&lt;STRONG&gt;&lt;FONT color=#000080&gt;const&lt;/FONT&gt;&lt;/STRONG&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _SECOND = -10000; &lt;BR&gt;&lt;STRONG&gt;&lt;FONT color=#000080&gt;var&lt;/FONT&gt;&lt;/STRONG&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lBusy : LongInt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; hTimer : HWND; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; liDueTime : LARGE_INTEGER;&lt;/FONT&gt; &lt;BR&gt;&lt;FONT face=Tahoma&gt;&lt;STRONG&gt;&lt;FONT color=#000080&gt;begin&lt;/FONT&gt;&lt;/STRONG&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; hTimer := CreateWaitableTimer(&lt;STRONG&gt;&lt;FONT color=#000080&gt;nil&lt;/FONT&gt;&lt;/STRONG&gt;, True, &apos;&lt;FONT color=#0000ff&gt;WaitableTimer&lt;/FONT&gt;&apos;);&lt;/FONT&gt; &lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;FONT face=Tahoma&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;&lt;FONT color=#000080&gt;if&lt;/FONT&gt;&lt;/STRONG&gt; hTimer = 0 &lt;STRONG&gt;&lt;FONT color=#000080&gt;then&lt;/FONT&gt;&lt;/STRONG&gt; Exit;&lt;/FONT&gt; &lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;FONT face=Tahoma&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; liDueTime.QuadPart := _SECOND * MilliSeconds; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SetWaitableTimer(hTimer, TLargeInteger(liDueTime), 0, &lt;FONT color=#000080&gt;&lt;STRONG&gt;nil&lt;/STRONG&gt;&lt;/FONT&gt;, &lt;STRONG&gt;&lt;FONT color=#000080&gt;nil&lt;/FONT&gt;&lt;/STRONG&gt;, False);&lt;/FONT&gt; &lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;FONT face=Tahoma&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;&lt;FONT color=#000080&gt;repeat&lt;/FONT&gt;&lt;/STRONG&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; lBusy := MsgWaitForMultipleObjects(1, hTimer, False, INFINITE, QS_ALLINPUT); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Application.ProcessMessages;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;&lt;FONT color=#000080&gt;until&lt;/FONT&gt;&lt;/STRONG&gt; lBusy = WAIT_OBJECT_0;&lt;/FONT&gt; &lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;FONT face=Tahoma&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CloseHandle(hTimer);&lt;/FONT&gt; &lt;BR&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Tahoma&gt;&lt;STRONG&gt;&lt;FONT color=#000080&gt;end&lt;/FONT&gt;&lt;/STRONG&gt;; 
&lt;DIV class=autosourcing-stub&gt;&lt;/DIV&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/div&gt;</description>
                        <pubDate>Sun, 20 Apr 2008 21:05:18 +0900</pubDate>
                                    <slash:comments>1</slash:comments>
                    </item>
                <item>
            <title>&apos;GetVersionFromFile&apos;함수로 파일 버전 구하기</title>
            <dc:creator>과니</dc:creator>
            <link>http://www.wearethebest.co.kr/zbxe/10401</link>
            <guid isPermaLink="true">http://www.wearethebest.co.kr/zbxe/10401</guid>
                        <comments>http://www.wearethebest.co.kr/zbxe/10401#comment</comments>
                                    <description>&lt;div class=&quot;xe_content&quot;&gt;&lt;DIV class=view style=&quot;FONT-SIZE: 9pt; FONT-FAMILY: 1092568_9&quot;&gt;&lt;FONT color=#008000&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;// Windows 유닛의 &apos;GetFileVersionInfo&apos;함수로 일반적으로 파일의 버전을 구하지만&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt; &lt;/SPAN&gt;
&lt;DIV&gt;&lt;FONT color=#008000&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;// C:\windows\system32 폴더 안에 보면 &apos;advpack.dll&apos;파일이 있습니다.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt; &lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT color=#008000&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;// 그중 GetVersionFromFile이라는 함수가 있는데 그 함수로도 파일의 버전을 구하실수가 있습니다.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt; &lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT color=#008000&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt; &lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT color=#008000&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;// DLL 함수 호출 인자는 다음과 같습니다. &lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;// DLL의 함수를 먼저 선언합니다.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt; &lt;/SPAN&gt;
&lt;DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;STRONG&gt;&lt;FONT color=#003366&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;function&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt; GetVersionFromFile(lpszFilename : &lt;/SPAN&gt;&lt;FONT color=#003366&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;String&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;; &lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;STRONG&gt;&lt;FONT color=#000080&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;var&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt; pwMSVer : LongInt; &lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;FONT color=#000080&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;var&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt; pwLSVer : LongInt; &lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bVersion : LongInt): LongInt; &lt;/SPAN&gt;&lt;STRONG&gt;&lt;FONT color=#003366&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;stdcall&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;; &lt;/SPAN&gt;&lt;STRONG&gt;&lt;FONT color=#003366&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;external&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt; &lt;/SPAN&gt;&lt;FONT color=#0000ff&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;&apos;c:\windows\system32\advpack.dll&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;&apos;; &lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;STRONG&gt;&lt;FONT color=#003366&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;procedure&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt; TForm1.Button1Click(Sender: TObject); &lt;/SPAN&gt;&lt;BR&gt;&lt;STRONG&gt;&lt;FONT color=#003366&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;const&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt; &lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VER_MAX = &lt;/SPAN&gt;&lt;FONT color=#0000ff&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;$10000&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;; &lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TEST_FILE = &apos;&lt;/SPAN&gt;&lt;FONT color=#0000ff&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;C:\windows\system32\notepad.exe&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;&apos;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;FONT color=#008000&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;// 샘플은 메모장 //&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;BR&gt;&lt;FONT color=#003366&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;var&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt; &lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pwMSVer : LongInt; &lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pwMShVer, pwMSlVer : Integer; &lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pwLSVer : LongInt; &lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pwLShVer, pwLSlVer : Integer; &lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PwVersion : String; &lt;/SPAN&gt;&lt;BR&gt;&lt;FONT color=#003366&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;begin&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt; &lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pwMSVer := &lt;/SPAN&gt;&lt;FONT color=#0000ff&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;0&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;; &lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pwLSVer := &lt;/SPAN&gt;&lt;FONT color=#0000ff&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;0&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;; &lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT color=#008000&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;// advpack.dll에 GetVerionFromFile 함수 호출&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt; &lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GetVersionFromFile(TEST_FILE, pwMSVer, pwLSVer, &lt;/SPAN&gt;&lt;FONT color=#0000ff&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;1&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;); &lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT color=#008000&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;// MSh값과 MSl값 구하기&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt; &lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pwMShVer := pwMSVer &lt;/SPAN&gt;&lt;STRONG&gt;&lt;FONT color=#003366&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;div&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt; VER_MAX; &lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pwMSlVer := pwMSVer &lt;/SPAN&gt;&lt;STRONG&gt;&lt;FONT color=#003366&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;mod&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt; VER_MAX; &lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT color=#008000&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;// LSh값과 LSl값 구하기&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt; &lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pwLShVer := pwLSVer &lt;/SPAN&gt;&lt;STRONG&gt;&lt;FONT color=#003366&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;div&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt; VER_MAX; &lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pwLSlVer := pwLSVer &lt;/SPAN&gt;&lt;STRONG&gt;&lt;FONT color=#003366&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;mod&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt; VER_MAX; &lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT color=#008000&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;// 일반 버전 양식으로 변경&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt; &lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pwVersion := IntToStr(pwMShVer) + &apos;&lt;/SPAN&gt;&lt;FONT color=#0000ff&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;&apos; + IntToStr(pwMSlVer) + &apos;&lt;/SPAN&gt;&lt;FONT color=#0000ff&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;&apos; +&amp;nbsp;&lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IntToStr(pwLShVer) + &apos;&lt;/SPAN&gt;&lt;FONT color=#0000ff&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;&apos; + IntToStr(pwLSlVer); &lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;FONT color=#008000&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;// 버전 출력&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt; &lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ShowMessage(pwVersion); &lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;STRONG&gt;&lt;FONT color=#000080&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;end&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;; &lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT color=#008000&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;// 사실그냥 Windows 유닛에 있는 GetFileVersionInfo 쓰면 되기때문에&amp;nbsp;쓸일은&amp;nbsp;없을 것 같습니다.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt; &lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT color=#008000&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;// &lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style=&quot;FONT-FAMILY: Tahoma&quot;&gt;// &amp;nbsp;이상으로 과니의 많이 쓸일 없는 팁였습니다. ㅋ 
&lt;DIV class=autosourcing-stub&gt;&lt;/DIV&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/div&gt;</description>
                        <pubDate>Fri, 18 Apr 2008 13:07:36 +0900</pubDate>
                                </item>
                <item>
            <title>API로 파일 생성 후 WriteFile 함수로 강제 개행 하기</title>
            <dc:creator>과니</dc:creator>
            <link>http://www.wearethebest.co.kr/zbxe/10382</link>
            <guid isPermaLink="true">http://www.wearethebest.co.kr/zbxe/10382</guid>
                        <comments>http://www.wearethebest.co.kr/zbxe/10382#comment</comments>
                                    <description>&lt;div class=&quot;xe_content&quot;&gt;&lt;DIV&gt;&lt;FONT color=#000080&gt;&lt;FONT color=#008000&gt;// VCL을 사용하면 쉽게 가능하겠지만 Q&amp;amp;A에서 찾아보니까 없는거 같더라구여...&lt;/FONT&gt; 
&lt;DIV&gt;&lt;FONT color=#008000&gt;// API로 파일을 생성해서 강제 개행을 가능하게 해주는 코드입니다. &lt;BR&gt;// 델파이 몇개월 안되는 초보의 코딩이라서 틀린부분이나 리펙토리 해야 할 부분은 알려주세요...&lt;/FONT&gt; &lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;procedure&lt;/STRONG&gt; &lt;FONT color=#000000&gt;TForm1.Button1Click(Sender: TObject);&lt;/FONT&gt; &lt;BR&gt;&lt;STRONG&gt;&lt;FONT color=#000080&gt;const&lt;/FONT&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#000000&gt;SourceFileName = &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;&apos;C:\SAMPLE_CRLF.txt&apos;&lt;/FONT&gt;; &lt;BR&gt;&lt;STRONG&gt;&lt;FONT color=#000080&gt;var&lt;/FONT&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#000000&gt;FileHandle : THandle;&lt;/FONT&gt; &lt;BR&gt;&lt;STRONG&gt;&lt;FONT color=#000080&gt;begin&lt;/FONT&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#008000&gt;// 파일 생성&lt;/FONT&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#000000&gt;FileHandle := CreateFile(PChar(SourceFileName), GENERIC_WRITE, FILE_SHARE_READ,&lt;/FONT&gt; &lt;STRONG&gt;&lt;FONT color=#000080&gt;nil&lt;/FONT&gt;&lt;/STRONG&gt;,&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#000000&gt;CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL&lt;/FONT&gt;, &lt;FONT color=#0000ff&gt;0&lt;/FONT&gt;&lt;FONT color=#000000&gt;);&lt;/FONT&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;&lt;FONT color=#000080&gt;try&lt;/FONT&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;if&lt;/STRONG&gt; &lt;FONT color=#000000&gt;FileHandle &amp;lt;&amp;gt; INVALID_HANDLE_VALUE&lt;/FONT&gt; &lt;STRONG&gt;&lt;FONT color=#000080&gt;then begin&lt;/FONT&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#008000&gt;// 파일이 생성되었다면&lt;/FONT&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#008000&gt;// 파일에 쓰기&lt;/FONT&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#000000&gt;WriteFileStr(FileHandle,&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;&apos;1. 가나다라마바사&apos;&lt;/FONT&gt;);&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#000000&gt;WriteFileCRLF(FileHandle);&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#008000&gt;//&amp;nbsp; 강제 개행함수&lt;/FONT&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#000000&gt;WriteFileStr(FileHandle,&lt;/FONT&gt; &lt;FONT color=#0000ff&gt;&apos;2. ABCDEFG&apos;&lt;/FONT&gt;);&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT color=#000080&gt;&lt;STRONG&gt;end&lt;/STRONG&gt;&lt;/FONT&gt;; &lt;/DIV&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;&lt;FONT color=#000080&gt;finally&lt;/FONT&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#008000&gt;// 파일 닫기&lt;/FONT&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#000000&gt;CloseHandle(FileHandle);&lt;/FONT&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;&lt;FONT color=#000080&gt;end&lt;/FONT&gt;&lt;/STRONG&gt;; &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#000080&gt;end&lt;/FONT&gt;&lt;/STRONG&gt;; &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#000080&gt;procedure&lt;/FONT&gt;&lt;/STRONG&gt; TForm1.WriteFileCRLF(FileHandle : THandle); &lt;BR&gt;&lt;STRONG&gt;&lt;FONT color=#000080&gt;const&lt;/FONT&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CRLF : &lt;STRONG&gt;&lt;FONT color=#000080&gt;array&lt;/FONT&gt;&lt;/STRONG&gt; [&lt;FONT color=#0000ff&gt;0&lt;/FONT&gt;..&lt;FONT color=#0000ff&gt;1&lt;/FONT&gt;] &lt;STRONG&gt;&lt;FONT color=#000080&gt;of&lt;/FONT&gt;&lt;/STRONG&gt; Byte = (&lt;FONT color=#0000ff&gt;13&lt;/FONT&gt;, &lt;FONT color=#0000ff&gt;10&lt;/FONT&gt;); &lt;BR&gt;&lt;STRONG&gt;&lt;FONT color=#000080&gt;var&lt;/FONT&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NumberOfBytesWrite: LongWord; &lt;BR&gt;&lt;STRONG&gt;&lt;FONT color=#000080&gt;begin&lt;/FONT&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#008000&gt;// 다음줄로 이동&lt;/FONT&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT color=#000080&gt;&lt;STRONG&gt; if not&lt;/STRONG&gt;&lt;/FONT&gt; WriteFile(FileHandle, CRLF, Sizeof(CRLF), NumberOfBytesWrite, &lt;STRONG&gt;&lt;FONT color=#000080&gt;nil&lt;/FONT&gt;&lt;/STRONG&gt;) &lt;STRONG&gt;&lt;FONT color=#000080&gt;then&lt;/FONT&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#008000&gt;// 에러시 LastError 출력&lt;/FONT&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ShowMessage(SysErrorMessage(GetLastError())); &lt;BR&gt;&lt;STRONG&gt;&lt;FONT color=#000080&gt;end&lt;/FONT&gt;&lt;/STRONG&gt;; &lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;&lt;STRONG&gt;procedure&lt;/STRONG&gt;&lt;/FONT&gt; TForm1.WriteFileStr(FileHandle : THandle; WriteStr : &lt;STRONG&gt;&lt;FONT color=#000080&gt;String&lt;/FONT&gt;&lt;/STRONG&gt;); &lt;BR&gt;&lt;STRONG&gt;&lt;FONT color=#000080&gt;var&lt;/FONT&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NumberOfBytesWrite: LongWord;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WriteMsg : PChar; &lt;BR&gt;&lt;STRONG&gt;&lt;FONT color=#000080&gt;begin&lt;/FONT&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#008000&gt;// 문자열 입력&lt;/FONT&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WriteMsg := Pointer(WriteStr);&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;&lt;FONT color=#000080&gt;if&lt;/FONT&gt;&lt;/STRONG&gt; &lt;STRONG&gt;&lt;FONT color=#000080&gt;not&lt;/FONT&gt;&lt;/STRONG&gt; WriteFile(FileHandle, WriteMsg^, StrLen(WriteMsg), NumberOfBytesWrite, &lt;STRONG&gt;&lt;FONT color=#000080&gt;nil&lt;/FONT&gt;&lt;/STRONG&gt;) &lt;STRONG&gt;&lt;FONT color=#000080&gt;then&lt;/FONT&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#008000&gt;// 에러시 LastError 출력&lt;/FONT&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ShowMessage(SysErrorMessage(GetLastError())); &lt;BR&gt;&lt;STRONG&gt;&lt;FONT color=#000080&gt;end&lt;/FONT&gt;&lt;/STRONG&gt;; &lt;BR&gt;&lt;/P&gt;&lt;/div&gt;</description>
                        <pubDate>Thu, 17 Apr 2008 13:09:03 +0900</pubDate>
                                </item>
                <item>
            <title>파일 핸들로부터 파일 이름을 얻는 방법.</title>
            <dc:creator>과니</dc:creator>
            <link>http://www.wearethebest.co.kr/zbxe/9929</link>
            <guid isPermaLink="true">http://www.wearethebest.co.kr/zbxe/9929</guid>
                        <comments>http://www.wearethebest.co.kr/zbxe/9929#comment</comments>
                                    <description>&lt;div class=&quot;xe_content&quot;&gt;&lt;P&gt;&lt;FONT color=#2222cc&gt;&lt;FONT color=#009e25&gt;// 파일 핸들만 알고 있을 경우 파일 핸들로 파일명을 구하는 방법입니다.&lt;BR&gt;// uses 에 PsAPI unit을 추가해 주세요.&lt;BR&gt;// &lt;BR&gt;//&amp;nbsp;최중관&lt;/FONT&gt;&lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;procedure&lt;/STRONG&gt;&lt;/FONT&gt; TForm1.btnGetFileNameClick(Sender: TObject);&lt;BR&gt;&lt;FONT color=#2222aa&gt;&lt;STRONG&gt;const&lt;/STRONG&gt;&lt;BR&gt;&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; SAMPLE_FILE_NAME = &lt;FONT color=#2222aa&gt;&apos;C:\WINDOWS\system32\Notepad.exe&apos;&lt;/FONT&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PAGE_SIZE = &lt;FONT color=#2222cc&gt;$1000&lt;/FONT&gt;;&lt;BR&gt;&lt;FONT color=#2222aa&gt;&lt;STRONG&gt;var&lt;/STRONG&gt;&lt;BR&gt;&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FileHandle : THandle;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FileMappingHandle : THandle;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lpMem : PChar;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MapFileName : &lt;FONT color=#2222cc&gt;&lt;STRONG&gt;array&lt;/STRONG&gt;&lt;/FONT&gt;[0..MAX_PATH - 1] &lt;FONT color=#2222cc&gt;&lt;STRONG&gt;of&lt;/STRONG&gt;&lt;/FONT&gt; Char;&lt;BR&gt;&lt;STRONG&gt;&lt;FONT color=#2222aa&gt;begin&lt;/FONT&gt;&lt;/STRONG&gt;&lt;BR&gt;&lt;FONT color=#2222aa&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/STRONG&gt;&lt;/FONT&gt;&lt;FONT color=#000000&gt;FillChar(MapFileName, Sizeof(MapFileName), #0);&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&lt;FONT color=#009e25&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 파일 열기&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FileHandle := CreateFile(SAMPLE_FILE_NAME, GENERIC_READ,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FILE_SHARE_READ &lt;FONT color=#2222cc&gt;&lt;STRONG&gt;or&lt;/STRONG&gt;&lt;/FONT&gt; FILE_SHARE_WRITE, &lt;STRONG&gt;&lt;FONT color=#2222cc&gt;nil&lt;/FONT&gt;&lt;/STRONG&gt;, OPEN_EXISTING,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FILE_ATTRIBUTE_NORMAL, 0);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;&lt;FONT color=#2222aa&gt;if&lt;/FONT&gt;&lt;/STRONG&gt; FileHandle &amp;lt;&amp;gt; INVALID_HANDLE_VALUE &lt;STRONG&gt;&lt;FONT color=#2222cc&gt;then&lt;/FONT&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;STRONG&gt;&lt;FONT color=#2222aa&gt;begin&lt;/FONT&gt;&lt;/STRONG&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#009e25&gt;// 파일에 대한 매핑 개체 생성&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FileMappingHandle := CreateFileMapping(FileHandle, nil, PAGE_READONLY,&amp;nbsp; &lt;FONT color=#2222aa&gt;0&lt;/FONT&gt;, PAGE_SIZE, &lt;STRONG&gt;&lt;FONT color=#2222cc&gt;nil&lt;/FONT&gt;&lt;/STRONG&gt;);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;STRONG&gt;&lt;FONT color=#2222aa&gt;if&lt;/FONT&gt;&lt;/STRONG&gt; FileMappingHandle &amp;lt;&amp;gt; INVALID_HANDLE_VALUE&amp;nbsp;&lt;STRONG&gt;&lt;FONT color=#2222cc&gt;then&lt;/FONT&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;STRONG&gt;&lt;FONT color=#2222aa&gt;begin&lt;/FONT&gt;&lt;/STRONG&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#009e25&gt;// 실제 메모리에 매핑&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lpMem := MapViewOfFile(FileMappingHandle, FILE_MAP_READ, &lt;FONT color=#2222aa&gt;0&lt;/FONT&gt;, &lt;FONT color=#2222aa&gt;0&lt;/FONT&gt;, &lt;FONT color=#2222aa&gt;0&lt;/FONT&gt;);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;STRONG&gt;&lt;FONT color=#2222aa&gt;if&lt;/FONT&gt;&lt;/STRONG&gt; lpMem &amp;lt;&amp;gt; &apos;&apos;&amp;nbsp;&lt;STRONG&gt;&lt;FONT color=#2222cc&gt;then&lt;/FONT&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;STRONG&gt;&lt;FONT color=#2222aa&gt;begin&lt;/FONT&gt;&lt;/STRONG&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#009e25&gt;// 매핑이 완료되었다면 파일의 이름을 얻기&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GetMappedFileName(GetCurrentProcess,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lpMem,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MapFileName, Sizeof(MapFileName));&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#009e25&gt;// 결과 출력&lt;BR&gt;&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ShowMessage(ExtractFileName(MapFileName));&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#009e25&gt;// 맵뷰 개체 닫기&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UnMapViewOfFile(lpMem);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;&lt;FONT color=#2222aa&gt;end&lt;/FONT&gt;&lt;/STRONG&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;&lt;FONT color=#2222aa&gt;end&lt;/FONT&gt;&lt;/STRONG&gt;;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#009e25&gt;// 파일 매핑 개체의 핸들을 닫기&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CloseHandle(FileMappingHandle);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;&lt;FONT color=#2222aa&gt;end&lt;/FONT&gt;&lt;/STRONG&gt;;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#009e25&gt;// 파일 핸들을 닫기&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CloseHandle(FileHandle);&lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;&lt;FONT color=#2222aa&gt;end&lt;/FONT&gt;&lt;/STRONG&gt;;&lt;/P&gt;&lt;/div&gt;</description>
                        <pubDate>Tue, 15 Apr 2008 16:40:47 +0900</pubDate>
                                    <slash:comments>1</slash:comments>
                    </item>
                <item>
            <title>char* to wchar_t*</title>
            <dc:creator>김경진</dc:creator>
            <link>http://www.wearethebest.co.kr/zbxe/9847</link>
            <guid isPermaLink="true">http://www.wearethebest.co.kr/zbxe/9847</guid>
                        <comments>http://www.wearethebest.co.kr/zbxe/9847#comment</comments>
                                    <description>&lt;div class=&quot;xe_content&quot;&gt;&lt;P&gt;필요한분들 있을까 해서 올립니다. ^^&lt;BR&gt;즐 코딩 하세요~ ^^&lt;BR&gt;&lt;BR&gt;* 출처 : msdn 포럼&lt;BR&gt;&lt;BR&gt;LPWSTR ConvertLPCSTRToLPWSTR (char* pCstring)&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;LPWSTR pszOut = NULL;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;if (pCstring != NULL)&lt;BR&gt;&amp;nbsp;{&lt;BR&gt;&amp;nbsp; int nInputStrLen = strlen (pCstring);&lt;BR&gt;&amp;nbsp; // Double NULL Termination&lt;BR&gt;&amp;nbsp; int nOutputStrLen = MultiByteToWideChar(CP_ACP, 0, pCstring, nInputStrLen, NULL, 0) + 2;&lt;BR&gt;&amp;nbsp; pszOut = new WCHAR [nOutputStrLen];&lt;/P&gt;
&lt;P&gt;&amp;nbsp; if (pszOut)&lt;BR&gt;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp; memset (pszOut, 0x00, sizeof (WCHAR)*nOutputStrLen);&lt;BR&gt;&amp;nbsp;&amp;nbsp; MultiByteToWideChar (CP_ACP, 0, pCstring, nInputStrLen, pszOut, nInputStrLen);&lt;BR&gt;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp;}&lt;/P&gt;
&lt;P&gt;&amp;nbsp;return pszOut;&lt;BR&gt;}&lt;/P&gt;
&lt;P&gt;[사용]&lt;/P&gt;
&lt;P&gt;char * str = new char[strlen(&quot;ASHOK&quot;) + 1];&lt;/P&gt;
&lt;P&gt;strcpy(str, &quot;ASHOK&quot;);&lt;/P&gt;
&lt;P&gt;WCHAR * pwStr = ConvertLPCSTRToLPWSTR(str);&lt;/P&gt;
&lt;P&gt;//Use this pwStr&lt;/P&gt;
&lt;P&gt;......&lt;/P&gt;
&lt;P&gt;.....&lt;/P&gt;
&lt;P&gt;//delete the wide char pointer.&lt;/P&gt;
&lt;P&gt;delete []pwStr;&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&amp;nbsp;&lt;/P&gt;&lt;/div&gt;</description>
                        <pubDate>Mon, 14 Apr 2008 11:12:27 +0900</pubDate>
                                    <slash:comments>1</slash:comments>
                    </item>
                <item>
            <title>(Delete, Insert, Home, End, PageUp, PageDown) KeyPress 이벤트 처리가 안될때</title>
            <dc:creator>김경진</dc:creator>
            <link>http://www.wearethebest.co.kr/zbxe/8261</link>
            <guid isPermaLink="true">http://www.wearethebest.co.kr/zbxe/8261</guid>
                        <comments>http://www.wearethebest.co.kr/zbxe/8261#comment</comments>
                                    <description>&lt;div class=&quot;xe_content&quot;&gt;&lt;P&gt;일단 원인을 정확히 제공 못해드리는 점 사과드립니다.&lt;BR&gt;혹시나 해서 저와 같은 경험이 있으신 분들을 위해 해결 팁만 짧게 적습니다.&lt;/P&gt;
&lt;P&gt;리스트 박스에 항목을 넣고 선택한 항목을 Insert 키 밑에 있는 Delete 키를 눌러 삭제하려는데&lt;BR&gt;ListBox컨트롤의 Kepress 이벤트로 연결이 안되더군요. 혹시나 해서 숫자키 아래 있는 Del 키를 눌러보니 이벤트 연결이 되더군요.&lt;BR&gt;일단 바빠서 정확한 원인은 찾지 못했지만 이럴경우 KeyUp에서 처리하니까 이벤트가 연결 되는군요.&lt;BR&gt;머 별 팁도 아니지만 혹시나 해서 참고 삼아 올립니다.&lt;BR&gt;&lt;BR&gt;다들 좋은 하루 되시고 홍환민 홈피 많이 자주 이용해 주십시오. ^^&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/div&gt;</description>
                        <pubDate>Fri, 28 Mar 2008 15:52:39 +0900</pubDate>
                                    <slash:comments>1</slash:comments>
                    </item>
                <item>
            <title>사용자 참여란이란...</title>
            <dc:creator>홍환민</dc:creator>
            <link>http://www.wearethebest.co.kr/zbxe/7898</link>
            <guid isPermaLink="true">http://www.wearethebest.co.kr/zbxe/7898</guid>
                        <comments>http://www.wearethebest.co.kr/zbxe/7898#comment</comments>
                                    <description>&lt;div class=&quot;xe_content&quot;&gt;안녕하세요? 홍환민입니다.&lt;BR&gt;&lt;BR&gt;이 곳은 사용자 참여란 (사용자 참여 게시판)입니다.&lt;BR&gt;&lt;BR&gt;기본적인 제 개인 홈페이지고, 제가 작성한 글을 서비스하고 있지만,&lt;BR&gt;아에 사용자가 참여할 수 있는 공간 자체가 존재하기 않기에,&lt;BR&gt;혹시나 하는 마음에&amp;nbsp;만들었습니다.&lt;BR&gt;&lt;BR&gt;강좌나 팁, 혹은 관련된 소식이나.. 저에 대한 요청 사항이나.. 다 허용합니다.&lt;BR&gt;잡다한 얘기들은 주로 자유게시판이 있어서 그쪽에다가 올리셔도 되고요.&lt;BR&gt;&lt;BR&gt;강좌/팁란에 올리신 글들은 따로 분류해서 올려드리도록 하겠습니다.&lt;BR&gt;&lt;BR&gt;행복한 하루 되십시오.&lt;BR&gt;&lt;/div&gt;</description>
                        <pubDate>Wed, 26 Mar 2008 22:57:54 +0900</pubDate>
                                </item>
            </channel>
</rss>
