':: ALL'에 해당되는 글 114건
2008/09/11 Classic ASP 요약 (1)
2008/02/28 바코드 폰트
2007/12/06 PL/SQL Developer 7.1.3 (2)

FairUse 프로그램을 이용하면 DVD를 동영상 파일로 쉽게 변환 할 수 있습니다.

옵션 및 수동 모드로 진행하면 이것저것 설정 할 수 있는 항목이 많긴한데, 몇 번의 실패를 거치며 결국 "Full auto mode"로 자리 잡았습니다.

참고로 아래 그림대로 "Full auto mode"로 진행했을 때 1:08 분량의 DVD를 변환하는데 2시간 좀 넘게 걸렸고 최종 변환 파일은 MP4 확장자로 약 1.4GB 크기로 만들어졌습니다.
(Windows7, Intel Core i3 540 3.07GHz, 4GB)
"H.264/AAC/MP4, Slow"로 진행하면 약 4시간...

사용자 삽입 이미지


사용자 삽입 이미지

DVD 원본의 해상도는 720x396인데 위 옵션으로 변환하니 1312x720로 만들어졌습니다.

원본 해상도 그대로 변환하려고 몇 번 시도했었으나 시간도 오래 걸리고 에러 나는 경우도 있고해서 결국 다음팟인코더로 변환 파일을 한 번 더 변환했습니다.

사용자 삽입 이미지


FairUse 옵션 설정 잘 아시는 분 있으시면 설정 알려주세요.

2011/08/24 00:02 2011/08/24 00:02
TAG , ,

회사에서 사용하는 특정 사이트의 UI가 너무나 불편한데, 개선이 쉽지 않아 자바스크립트로 가공(?)해서 사용하기 위해 오랫만에 VB6으로 BHO를 만들어봤습니다.
사용중인 BHO 소스는 회사 업무와 관련된 내용이 있어 공개 할 수 없지만, BHO를 만들면서 수집했던 자료를 정리해서 공개합니다.
 

BHO(Browser Helper Object)란?


http://en.wikipedia.org/wiki/Browser_Helper_Object

MS Internet Explorer에서 작동하는 플러그인 형태의 DLL로, IE의 인스턴스가 실행 될 때마다 로딩된다.

또한 Windows Explorer에서도 작동한다.


레지스트리 정보


다음의 레지스트리 위치에 BHO에 해당하는 DLL의 CLSID를 키로 추가한다.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects


ex) 레지스트리 예제

Windows Registry Editor Version 5.00


[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects]


[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects\{0AFD85AC-EBCE-4502-AAAA-E6098B71DCFC}]

@="TestBHO.BHO"

"NoExplorer"=dword:00000001


구현 (대략적인 설명)


  1. 클래스 모듈에서 IObjectWithSite Interface를 구현한다.
  2. ActiveX DLL을 레지스트리에 등록(regsvr32.exe)한다.
  3. 위에서 등록한 DLL의 CLSID 정보를 Browser Helper Objects 레지스트리 위치에 등록한다.
  4. Internet Explorer를 실행해서 확인한다.


구현 (VB6)


1) 새 프로젝트 만들기

프로젝트 > 속성 > 구성요소에서 "버전 호환성"을 "이진 호환성"으로 선택

[참고] 프로젝트 버전호환성3가지(호환없음,프로젝트,이진)용도 http://support.microsoft.com/kb/600844/ko

2) 프로젝트 > 참조에 추가

  • Microsoft HTML Object Library
  • Microsoft Internet Controls
  • VB IObjectWithSite Interface (또는 VBSHELL.TLB.tlb 등의 IObjectWithSite Interface를 포함하고 있는 TLB 사용)

3) 클래스 모듈 추가 (Class1)

4) Class1 모듈에 다음 문장 추가

' IObjectWithSite Interface 구현을 위한 선언

Implements IObjectWithSiteTLB.IObjectWithSite


' 클래스 모듈 변수

Private WithEvents m_ie     As InternetExplorer    ' BHO를 로드한 IE Browser Object

Private m_Site              As IUnknownVB


''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

' GetSite / BHO Interface

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Private Sub IObjectWithSite_GetSite(ByVal priid As IObjectWithSiteTLB.GUIDPtr, ppvObj As IObjectWithSiteTLB.VOIDPtr)

    m_Site.QueryInterface priid, ppvObj

End Sub


''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

' SetSite / BHO Interface

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Private Sub IObjectWithSite_SetSite(ByVal pSite As IObjectWithSiteTLB.IUnknownVB)

    Set m_Site = pSite

    Set m_ie = pSite

End Sub

5) m_ie를 이용한 이벤트 핸들러 추가

m_ie 변수를 WithEvents로 선언했으므로 InternetExplorer 이벤트를 받을 수 있다.

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

' DocumentComplete Event

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Private Sub m_ie_DocumentComplete(ByVal pDisp As Object, URL As Variant)

'    MsgBox "m_ie_DocumentComplete => " & URL

'    MsgBox "m_ie_DocumentComplete => " & m_ie.LocationURL

End Sub

6) 파일 > DLL 만들기 실행

7) Browser Helper Objects 레지스트리 등록

[참고] CLSID는 레지스트리 HKEY_CLASSES_ROOT 위치에서 프로젝트명으로 검색하면 후 클래스명 하위 Clsid 키 값에서 알 수 있다.

Windows Registry Editor Version 5.00


[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects]


[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects\{0AFD85AC-EBCE-4502-AAAA-E6098B71DCFC}]

@="TestBHO.BHO"

"NoExplorer"=dword:00000001

8) Internet Explorer 실행 후 테스트

[참고] BHO가 실행되지 않으면 IE > 도구 > 추가 기능 관리에서 해당 BHO가 "사용 함"으로 되어있는지 확인한다.



샘플 프로젝트 (VB6)





참고 URL



☞ 본문 출처 : http://www.enjoydev.com/blog/bho(새 창으로 열기)
☞ 담비노트 1.5에서 작성 후 옮긴 글입니다. http://www.dambisoft.co.kr/(새 창으로 열기)

☞ 본인의 글 입니다. 이 글을 다른 곳에 게재하는 경우 본문 출처를 밝혀주시기 바랍니다.

2011/08/17 16:31 2011/08/17 16:31

ES500 이전에 네비게이션 사용 경험은 아이나비 스마트 뿐입니다.
그러다보니 경험을 바탕으로 한 ES500에 대한 비교 대상은 아이나비 스마트밖에 없습니다.
이 글은 아이나비 스마트와의 차이점을 기준으로 정리한 내용입니다.

참고로...

  • 네비게이션 S/W에 대한 성능 비교는 안함.
  • 게임, 노래방, 차계부 등의 부가적인 S/W는 사용하지 않으므로 제외.
  • ES500 이틀 정도 사용해보고 정리한 내용이라는거...

▣ 2011/05/15 추가
사용해보니 ES500의 단점들이 좀 더 보입니다.

  • IBox 프로그램에서 순서를 변경하더라도 저장되지 않는 문제점. (패치 적용 후 해결됨)
  • 2박3일로 해남 다녀왔는데 그 동안 3번 아이나비 먹통되었었음.
  • TCON+ 사용하려면 아이나비 매니저로 펌웨어 업데이트 해야 함.
  • 메모리에 아이나비 아이디, 비밀번호가 암호화되지 않은 상태로 저장됨 ㅡㅡ;;
    (아이나비 신고 후 당일 밤 바로 수정됨)



▣ 아이나비 스마트 보다 안좋은거 (아쉬운 순서대로...)

  • 배터리가 없다.
    • 시동 끄면 네비도 꺼진다.
    • 다시 키 꼽으면 자동으로 켜지기는 하지만 배터리 없는게 좀 아쉽긴하네요.
    • 배터리 없는 대부분의 네비는 시동 켜고나서 네비를 직접 다시 켜야되지요? ES500은 시동 켜면 자동으로 켜져요~ ^^
    • 2011/03/28 추가// 키 꼽으면 자동 부팅. 부팅 중 시동 켜면 다시 꺼졌다가 부팅... 자동으로 켜져서 좀 낫긴하지만, 배터리 없는게 많이 아쉽네요.
  • 외장메모리(Micro SD) 넣고 빼기가 쉽지 않다.
    • 어제 어플 깔고 테스트하느라 열 번이상 넣고 빼기를 반복했었는데, 넣을 때마다 느끼는게 "쉽지 않다"입니다.
    • 그런데 오늘 손톱 깎고나서 메모리를 빼면서 느낀건 "빼기도 쉽지 않다"입니다.
    • Micro SD 입구가 너무 뒷면에 붙어있어서 넣고 빼기가 쉽지 않습니다.
    • 거치대에 ES500을 고정한 상태에서 메모리를 빼고 넣을 수는 있겠지만, 성격에 따라 네비를 부실지도 모르겠습니다.
    • 스마트 사용 할 때는 외장 메모리에 영화, 드라마, MP3 넣고 다니느라 수시로 넣고 빼고했었는데 이제는 그러지 못하겠네요.
    • 스마트는 오른쪽으로 바로 돌출되있어서 쉬웠는데...
  • 외장메모리가 Micro SD
    • 스마트에서 SDHC 16GB를 사용하고 있었기 때문에, 스마트와 메모리를 바꿔 끼울 생각으로 당연히 4GB 모델을 선택했던건데 막상 받아보니 Micro SD여서 순간 당황했습니다.
    • 장기적으로 봤을 때는 Micro SD가 더 좋을지 모르겠지만 지금 당장은 많이 아쉽네요.
    • 추가// SD 메모리를 카드리더에 연결해서 USB에 꼽으니까 인식되네요.
  • TCPMP, CorePlay 실행에서 자주 에러가 발생한다.
    • Win CE MIPS 용으로 TCPMP, CorePlay 설치해봤지만 자주 에러로 종료되고, 재생 속도가 못 봐줄 정도로 많이 느립니다. 
    • 옵션 등을 적절히 손봐주면 나을지 모르겠지만 옵션이 너무 많아서...
    • 아이나비에서 제공하는 플레이어는 화질 좋고 속도 빠른데 이상하게 TCPMP, CorePlay 재생 속도는 너무 느리네요.
    • 2011/03/28 추가// CorePlay 다시 구해서 옵션 좀 만졌더니 플레이 잘 되네요. 하지만 화질은 아이나비 플레이어가 더 좋네요. 옵션을 좀 더 만져봐야 될 것 같습니다.
    • 2011/04/28 추가// TCPMP는 실행은 되지만 옵션 메뉴를 선택하면 네비가 죽어버립니다. ㅡㅡ; CorePlay는 이전 동영상을 다시 보기 시작할 때 종종 죽습니다. 그리고 다음팟을 이용해서 800x600 해상도로 인코딩하더라도 빠른 화면 부분에서는 끊김이 있습니다. 하지만 아이나비에서 제공하는 비디오 플레이어에서는 끊기지 않고 CorePlay 보다 화질이 훨씬 좋게 잘 나옵니다.
  • 메인 메뉴 화면 개조(?)가 쉽지 않다.
    • 스마트는 kDesk 등의 프로그램을 이용해서 그림 파일 몇 개 변경하면 바꿀 수 있었는데
    • ES500은 메인 메뉴 구조를 좀 분석해보니 메인 메뉴 화면을 바꾸기 위해서 필요한 파일들이 상당히 많아 보입니다.
  • 화면이 너무 크다.
    • 7인치 네비의 장점이자 단점.
    • 화면 큰 건 좋지만 운전 시야를 많이 가립니다.
  • 가정용 AC 어댑터 안주네.
    • 스마트 구입할 때는 가정용 AC 어댑터가 포함되어있었는데 이제는 안네요.
    • 사실 스마트 때도 구입 후 초반에만 몇 번 사용했을 뿐 그리 활용도는 없었습니다.
    • 가~끔 아쉬울 때는 있지만,, 나는 스마트 때 받았던 어댑터 사용한다는거^^
    • 참고로 스마트는 5V/2A, ES500은 5V/3A. 사용해도 문제 없나??
  • I-BOX 버그  (2011/04/28 추가)
    • I-BOX라는 일종의 런처 프로그램이 있는데, 설정한 정보가 저장되지 않아 고객센터에 문의했더니 다음 버전에서 수정하겠다는 답변을 받았습니다.


▣ 아이나비 스마트 보다 좋은거 (만족도 순서대로...)

  • 속도가 빠르다.
    • 부팅 속도 빠르고 고화질 동영상을 끊김 없이 볼 수 있다.
    • 2011/04/28 추가// 아이나비 동영상 플레이어에서는 끊김없이 재생되는데 CorePlay, TCPMP에서는 끊김 현상이 있습니다.
  • USB 포트가 2개 있다.
    • USB 메모리를 연결 할 수 있고, TCON+ 동글을 연결 할 수 있고, 외장 하드를 연결 할 수 있고, ...
    • 이전 모델들은 대부분 USB가 1개 있는걸로 알고 있는데 ES500은 2개입니다.
    • TCON+ 동글과 함께 USB 메모리를 동시에 사용 할 수 있습니다.
  • 멀티태스킹
    • 네비게이션 화면과 함께 DMB 또는 동영상 화면을 같이 볼 수 있네요.
  • 기본 동영상 플레이어 성능이 좋습니다.
    • 스마트에 포함된 아이나비 동영상 플레이어는 지원 코덱도 적고 UI, 기능이 별로여서 사용 안했는데
    • ES500에 포함된 동영상 플레이어는 화질 좋고 속도 빠르고 기능 좋고...
    • 굳이 TCPMP, CorePlay를 사용 할 필요가 없어 보입니다.  
  • TCON+ 동글 연결하면 인터넷 접속 및 교통 정보를 받을 수 있다.
    • TCON+ 서비스 종류에 대해서는 아직 사용해보지 못해서...
  • 화면이 크다.
  • 전원 버튼을 짧게 누르면 화면 캡쳐.
    • 메뉴얼을 봤을 때는 "이건 왜 있는거야?"라고 생각했었는데
    • 어제 오늘 테스트하면서 잘 써먹고 있습니다.
  • 아이나비 SE 4.0을 사용 할 수 있다.
    • 스마트의 아이나비 SE 최신 버전은 3.6이다.
  • 화면이 선명하고 메뉴 UI가 좋아졌다.
  • 스마트는 Win CE 5.0 Core, ES500은 Win CE 6.0 Core
    • 둘 다 오래되고 사양길에 들어선 OS긴 하지만...
  • 출시 일주일만에 구입한 새거^^

▣ ES500 메인 메뉴 화면

사용자 삽입 이미지

원문 출처 : http://www.enjoydev.com/blog/entry/inavi_es500_vs_smart(새 창으로 열기)

2011/03/27 01:47 2011/03/27 01:47

아이나비 스마트를 4년 6개월 정도 사용하고 다시 네비게이션을 알아보던 중에 때마침 아이나비에서 신제품이 나와 구입했습니다.


▣ 아이나비 ES500(4GB) 구입 정보

  • 구입일자 : 2011/03/23 (출시일자 : 2011/03/15)
  • 구입처 : GS SHOP
  • 판매가격 : 4GB 299,000원, 8GB 339,000원 (모든 쇼핑몰 가격 동일)
  • 구입가격 : 299,000 - 19,950 - (5%청구할인) = 265,098원 (3.5% 신한포인트 포함)
  • 가격 참고 : 모든 쇼핑몰에서 299,000원 동일하게 판매하고 있어서 할인을 가장 많이 받을 수 있는 GS SHOP에서 구입했습니다.
    • 슈퍼 할인 5% + 5,000원 할인 Double 쿠폰 + 신한카드 5% 청구 할인 + 신한카드 3.5% 적립
    • 최종적으로 할인 및 적립을 적용하면 255,820원, 약 14.5%의 할인을 받은셈입니다


▣ 아이나비 ES500(4GB) 제품 정보

  • 아이나비 제품 소개 http://www.inavi.com/_Menu/Product/ES500/feature.asp(새 창으로 열기)
  • 아이나비 제품 소개 화면 보관 파일 : <아이나비HW_아이나비ES500.mht>
  • 1.43Ghz 급 CPU
  • 256MB RAM, Micro SD 4GB
  • 7인치(17.8cm, 800x480) Display
  • TCON+ (동글 유료)
  • L-Sensor LCD밝기 자동 조절 기능
  • AVC(Auto Volume Control) 자동 볼륨 조절 기능
  • Real CAM 겸용 AV-in 단자
  • USB 2.0 Host 2개 (동글, 외장하드, 블랙박스 등 외부장치 연결)
  • TPEG (유료)
  • DMB
  • Multimedia : Xvid, AVI, MP3, SMI 자막 지원
  • 기타 S/W : 디지털 액자, 사진앨범, 노래방, 차계부, 게임, 아이나비 전자 매뉴얼, 알기 쉬운 자동차 상식, ...


▣ 아이나비 ES500(4GB) 사양

  • 크기 : 179mm(W) x 121.6mm(H) x 21mm(D)
  • 무게 : 약 405g
  • Display : 17.8cm(7인치), WVGA, 800x480, TFT LCD
  • Package : 본체, 전자메뉴얼, 제품보증서, Micro SD 메모리, Micro SD 카드 리더, 차량용 전원 케이블, 착탈식 DMB 안테나
  • Processor : AU 1374 1.43Ghz 급 (Core 800Mhz + DSP 630Mhz)
  • GPS : Ublox6 GPS
  • Memory : 64MB NAND, 256 MB RAM, Micro SD 4GB 외장 메모리
  • 운영체제(OS) : Windows CE 6.0 Core
  • T-DMB : 지상파 DMB, MBC TPEG 지원(유료)
  • Interface
    • USB Host 2EA, AV-In 1EA (외부입력/후방카메라 겸용)
    • 리모콘용 IR Controller, 3.5 pie Stereo Ear-jack
    • 외장 DMB/GPS 안테나 포트
    • 20pin Connector
    • 어댑터 전원 : DC5V/3A
  • Multimedia
    • Video : 영상코드 Xvid, 비디오 포멧 AVI, 음원 코덱 MP3
    • SMI 자막 지원 (자막 크기, 싱크 조정 기능)
    • Audio : MP3, WMA 지원
  • 게임 (게임 컨텐츠 별도 구매)
  • Sensor : L-Sensor (조도센서)



▣ 사용자 매뉴얼에 포함된 ES500 제품 정보

사용자 삽입 이미지

원문 출처 : http://www.enjoydev.com/blog/entry/inavi_es500_buying(새 창으로 열기)

2011/03/26 23:29 2011/03/26 23:29
한 동안 살까말까 고민고민하다가 결국 질렀습니다.

구입 기념으로 About 스샷 남깁니다.

구입일자 : 2011/02/23
제품 : MZ-Tools 6.0 Enterprise for VS.NET - Single
금액 : $79.95
홈페이지 : http://www.mztools.com/(새 창으로 열기)

사용자 삽입 이미지
2011/02/23 18:19 2011/02/23 18:19

[PPC] 음력 날짜 Today Plugin

SPH-M4655. 내 생애 첫 번째 PDA.

사용자 삽입 이미지

▣ 프로그램 설명
    - Today 화면에 음력 날짜를 표시해주는 Today Plugin 프로그램입니다.
    - 음력 날짜와 날짜에 따른 달 모양을 아이콘으로 보여줍니다.
    - 그 외 다른 기능은 없습니다.

▣ 옵션 변경 방법
    설정 -> 오늘 -> 항목에서 "LunarToday" 선택 후 "옵션" 버튼 클릭
    또는
    Today 화면에서 "음력 날짜" 부분을 꾸~욱 누르고 있으면 메뉴가 표시됩니다.

▣ 참고
    - PDA 일정관리, Scheduler 프로그램을 사용하고 있는데 Today에 표시되는 기념일의 날짜 계산 오류, 기타 불편 사항 등이
      개선되지 않고 있어서(2008년 03월 최종 업데이트) "내가 만들어쓰자"는 생각으로 "따라잡기"식으로 만들기 시작했습니다.
    - PDA 일정관리, Scheduler 홈페이지 : http://zextor.tistory.com/2669904

▣ 설치 방법
    1. 설치 파일(LunarToday v1.0.6_20100222.cab)을 PDA로 복사한다.
    2. PDA에서 LunarToday v1.0.6_20100222.cab 를 실행한다.
        => 설치 할 위치를 선택하는 단계가 있지만, Today Plugin은 "장치"에 설치되어야하므로
             선택한 설치 위치와 무관하게 무조건 "장치"에 설치됩니다. (\Program Files\LunarToday)
    3. 설정 -> 오늘 -> 항목에서 "LunarToday"의 체크 박스를 선택한다.
        => 설치 과정에서 "Today에 등록하시겠습니까?"에서 "예"를 선택하면 자동으로 Today에 표시됩니다.

▣ v1.0.2 를 사용중인 경우
    설정 -> 오늘 -> 항목에서 "LunarToday"의 체크 박스 선택을 해제 후 설치해야합니다.

▣ 제거 방법 (Ver 1.0.2)
    1. 설정 -> 오늘 -> 항목에서 "LunarToday"의 체크 박스를 해제한다.
    2. 설정 -> 시스템 -> 프로그램 제거에서 "EnjoyDev LunarToday"를 선택하고 "제거" 버튼을 클릭한다.
    ※ 1번 과정없이 2번만 실행하는 경우, PDA 리부팅 후 정상적으로 제거됩니다.

▣ 제거 방법 (Ver 1.0.4 이후)
    1. 설정 -> 시스템 -> 프로그램 제거에서 "EnjoyDev LunarToday"를 선택하고 "제거" 버튼을 클릭한다.
    ※ 프로그램 제거만 실행하면 제거 되도록 설치 프로그램을 개선했습니다.

▣ 시스템 요구사항
    1. Windows Mobile 5 Pocket PC 이상
        ※ 가진게 M4655 밖에 없어서 다른 기기에서는 확인 못했습니다.
            설치해보시고 결과를 남겨주시면 감사하겠습니다^^


▣ 개발 환경
    1. Visual Studio 2008 (VC++, Win32 스마트 장치 프로젝트)
    2. KOR Windows Mobile 6 Professional Emulator
    3. KOR Windows Mobile 5.0 Pocket PC R2 Emulator

▣ 테스트 기기
    1. SPH-M4655

▣ 프로그램 정보
    만든사람 : 용재님 (182cm@korea.com)
    홈페이지 : http://www.enjoydev.com/
    배포일자 : 2010/01/31
    라인센스 : 사용, 배포에 아무런 제한이 없습니다. 가급적 원본 출처 표시 바랍니다.
    원본출처 : http://www.enjoydev.com/blog/entry/LunarToday

▣ 버전 정보
Ver 1.0.2
    +최초 공개

Ver 1.0.4
    - Today 날짜 표시 형식 선택 기능 추가
    - Today 화면에 옵션 메뉴(Context Menu) 기능 추가
    - 폰트 크기에 따라 Today 화면에서의 높이를 조정하도록 수정
    - 설치, 제거, 재설치시 Today 설정 변경없이 진행 가능하도록 수정

Ver 1.0.5
    - 텍스트 정렬 옵션 추가 (왼쪽, 가운데, 오른쪽)
    - SVN을 이용한 프로젝트 및 소스 관리

Ver 1.0.6
    - Windows Mobile 5에서 설치 및 테스트
    - 재설치시 이전 설정 정보 및 Today에서의 순서가 초기화되는 현상에 대해, 기존 설정 정보를 유지하도록 개선
    - Today 화면에서 WM 스킨의 배경색을 사용함.





☞ 본문 출처 : http://www.enjoydev.com/blog/entry/LunarToday

☞ 본인의 글 입니다. 이 글을 다른 곳에 게재하는 경우 본문 출처를 밝혀주시기 바랍니다.

2010/02/22 11:18 2010/02/22 11:18

[PPC] 음력 날짜 Today Plugin

SPH-M4655. 내 생애 첫 번째 PDA.

사용자 삽입 이미지

▣ 프로그램 설명
    - Today 화면에 음력 날짜를 표시해주는 Today Plugin 프로그램입니다.
    - 음력 날짜와 날짜에 따른 달 모양을 아이콘으로 보여줍니다.
    - 그 외 다른 기능은 없습니다.

▣ 옵션 변경 방법
    설정 -> 오늘 -> 항목에서 "LunarToday" 선택 후 "옵션" 버튼 클릭
    또는
    Today 화면에서 "음력 날짜" 부분을 꾸~욱 누르고 있으면 메뉴가 표시됩니다.

▣ 참고
    - PDA 일정관리, Scheduler 프로그램을 사용하고 있는데 Today에 표시되는 기념일의 날짜 계산 오류, 기타 불편 사항 등이
      개선되지 않고 있어서(2008년 03월 최종 업데이트) "내가 만들어쓰자"는 생각으로 "따라잡기"식으로 만들기 시작했습니다.
    - PDA 일정관리, Scheduler 홈페이지 : http://zextor.tistory.com/2669904

▣ 설치 방법
    1. 설치 파일(LunarToday v1.0.4_20100131.cab)을 PDA로 복사한다.
    2. PDA에서 LunarToday v1.0.4_20100131.cab 를 실행한다.
        => 설치 할 위치를 선택하는 단계가 있지만, Today Plugin은 "장치"에 설치되어야하므로
             선택한 설치 위치와 무관하게 무조건 "장치"에 설치됩니다. (\Program Files\LunarToday)
    3. 설정 -> 오늘 -> 항목에서 "LunarToday"의 체크 박스를 선택한다.
        => 설치 과정에서 "Today에 등록하시겠습니까?"에서 "예"를 선택하면 자동으로 Today에 표시됩니다.

▣ v1.0.2 를 사용중인 경우
    설정 -> 오늘 -> 항목에서 "LunarToday"의 체크 박스 선택을 해제 후 설치해야합니다.

▣ 제거 방법 (Ver 1.0.2)
    1. 설정 -> 오늘 -> 항목에서 "LunarToday"의 체크 박스를 해제한다.
    2. 설정 -> 시스템 -> 프로그램 제거에서 "EnjoyDev LunarToday"를 선택하고 "제거" 버튼을 클릭한다.
    ※ 1번 과정없이 2번만 실행하는 경우, PDA 리부팅 후 정상적으로 제거됩니다.

▣ 제거 방법 (Ver 1.0.4 이후)
    1. 설정 -> 시스템 -> 프로그램 제거에서 "EnjoyDev LunarToday"를 선택하고 "제거" 버튼을 클릭한다.
    ※ 프로그램 제거만 실행하면 제거 되도록 설치 프로그램을 개선했습니다.

▣ 시스템 요구사항
    1. Windows Mobile 6 이상 (?)

▣ 개발 환경
    1. Visual Studio 2008 (VC++, Win32 스마트 장치 프로젝트)
    2. KOR Windows Mobile 6 Professional Emulator

▣ 테스트 기기
    1. SPH-M4655

▣ 프로그램 정보
    만든사람 : 용재님 (182cm@korea.com)
    홈페이지 : http://www.enjoydev.com/
    배포일자 : 2010/01/31
    라인센스 : 사용, 배포에 아무런 제한이 없습니다. 가급적 원본 출처 표시 바랍니다.
    원본출처 : http://www.enjoydev.com/blog/entry/LunarToday

▣ 버전 정보
Ver 1.0.2
    +최초 공개

Ver 1.0.4
    - Today 날짜 표시 형식 선택 기능 추가
    - Today 화면에 옵션 메뉴(Context Menu) 기능 추가
    - 폰트 크기에 따라 Today 화면에서의 높이를 조정하도록 수정
    - 설치, 제거, 재설치시 Today 설정 변경없이 진행 가능하도록 수정





☞ 본문 출처 : http://www.enjoydev.com/blog/entry/LunarToday

☞ 본인의 글 입니다. 이 글을 다른 곳에 게재하는 경우 본문 출처를 밝혀주시기 바랍니다.

2010/01/31 17:19 2010/01/31 17:19

2006년 자이 아파트에 입주하면서 이지빌이라는 전용 인터넷을 사용해왔습니다.

2009년 9월 단지내 QOOK 홍보 기간에 인터넷을 이지빌에서 QOOK으로 변경했습니다.

1. 9월 말, 이지빌 해지신청.
2. 10월 말, 9월 요금 정상 처리 (자동이체)
3. 11월 말, 사용하지 않은 10월 요금 자동이체.
4. 12월 초, 계좌 정리 중 이지빌 자동이체 확인 후 고객 센터에 전화.
    이지빌 측에서 오류 인정, 12월 말에 입금해주기로 함.
5. 12월 말, 환급 처리
6. 1월 중, 사용하지 않은 요금 자동이체 (두 번째)
    계좌 정리 중 이지빌 자동이체 금액 발견. 고객 센터에 전화.
    당장 돌려달라고 했으나 환불은 월 말에만 가능하다고함.
    몇 차례 통화 후 포기. 월 말까지 기다리기로 함.
7. 1월 23일 "한국신용평가정보"란 곳으로부터 "채무불이행 정보 등재 및 법적조치예고" 통지서 받음.
    한 달 금액으로 "법적조치예고" 통지서를 보내왔습니다.
    내가 보내야 할 통지서를 이지빌에서 보내왔네요.
    내 계좌에서 돈 빼간건 이지빌인데, 적반하장. 어이가 없습니다.


9월 말 이지빌 해지 신청 후 두 차례나 사용하지 않은 금액을 빼갔습니다.
그럼에도 이지빌로부터 먼저 연락받은 적이 없습니다.

매번 제가 통장 확인을 통해 오류를 확인하고 전화했습니다.

이달 말까지 입금해준다는 담당자 말 듣고 기다렸더니 돌아온건 "법적조치예고" 통지서였습니다.

이지빌 측에서는 "전산 오류"로 인해 발생한 문제라고하는데, 저에게만 발생한 문제일까요?

그 동안 얼마나 많은 사용자들로부터 "눈 먼 돈"을 빼갔을지... 어이 없습니다.


PS. 무조건 월 말까지 기다리라하더니, 본사로 찾아가 직접 받아내겠다 윽박 질렀더니 오늘 바로 입금해주겠다고 하네요. ㅎㅎㅎ
좋게 말하면 안되고, 큰 소리치고 지랄을 해야만 바로 처리되는 더러운 세상.

사용자 삽입 이미지

2010/01/25 10:57 2010/01/25 10:57

[PPC] 음력 날짜 Today Plugin

SPH-M4655. 내 생애 첫 번째 PDA.

사용자 삽입 이미지

▣ 프로그램 설명
    - Today 화면에 음력 날짜를 표시해주는 Today Plugin 프로그램입니다.
    - 음력 날짜와 날짜에 따른 달 모양을 아이콘으로 보여줍니다.
    - 그 외 다른 기능은 없습니다.

▣ 참고
    - PDA 일정관리, Scheduler 프로그램을 사용하고 있는데 Today에 표시되는 기념일의 날짜 계산 오류, 기타 불편 사항 등이
      개선되지 않고 있어서(2008년 03월 최종 업데이트) "내가 만들어쓰자"는 생각으로 "따라잡기"식으로 만들기 시작했습니다.
    - PDA 일정관리, Scheduler 홈페이지 : http://zextor.tistory.com/2669904

▣ 설치 방법
    1. 설치 파일(LunarToday v1.0.2_20100120.cab)을 PDA로 복사한다.
    2. PDA에서 LunarToday v1.0.2_20100120.cab 를 실행한다.
        => 설치 할 위치를 선택하는 단계가 있지만, Today Plugin은 "장치"에 설치되어야하므로
             선택한 설치 위치 무관하게 무조건 "장치"에 설치됩니다. (\Program Files\LunarToday)
    3. 설정 -> 오늘 -> 항목에서 "LunarToday"의 체크 박스를 선택한다.

▣ 제거 방법
    1. 설정 -> 오늘 -> 항목에서 "LunarToday"의 체크 박스를 해제한다.
    2. 설정 -> 시스템 -> 프로그램 제거에서 "EnjoyDev LunarToday"를 선택하고 "제거" 버튼을 클릭한다.
    ※ 1번 과정없이 2번만 실행하는 경우, PDA 리부팅 후 정상적으로 제거됩니다.

▣ 시스템 요구사항
    1. Windows Mobile 6 이상 (?)

▣ 개발 환경
    1. Visual Studio 2008 (VC++, Win32 스마트 장치 프로젝트)
    2. KOR Windows Mobile 6 Professional Emulator

▣ 테스트
    1. SPH-M4655

▣ 프로그램 정보
    만든사람 : 용재님 (182cm@korea.com)
    홈페이지 : http://www.enjoydev.com/
    배포일자 : 2010/01/20
    라인센스 : 사용, 배포에 아무런 제한이 없습니다. 가급적 원본 출처 표시 바랍니다.
    원본출처 : http://www.enjoydev.com/blog/entry/LunarToday

▣ 버전 정보
v1.0.2
    +최초 공개




☞ 본문 출처 : http://www.enjoydev.com/blog/entry/LunarToday

☞ 본인의 글 입니다. 이 글을 다른 곳에 게재하는 경우 본문 출처를 밝혀주시기 바랍니다.

2010/01/20 11:12 2010/01/20 11:12
  • 제품명 : 멜로즈 U50 8G
  • 제조사 : 엠엘테크 (http://www.imltech.co.kr(새 창으로 열기))
  • 구입일자 : 2009/07/17
  • 구입가격 : 28,700 + 1,500 (개별인쇄요금)


사용자 삽입 이미지

사용자 삽입 이미지

* 첨부파일
SMI_UFD_Utility.zip : U50에서 CD영역을 생성할 수 있는 프로그램

2009/07/17 09:47 2009/07/17 09:47
TAG

모델명 : X-Note M1 P332K
LCD : 15.1인치 (해상도 1400x1050)

약 3년째 사용중인 노트북인데 지난 2월 노트북 가방에 넣은채 떨어뜨려서 모니터 왼쪽 위 귀퉁이에 약간의 금이 가고 멍이들었다.

처음에는 2~3cm 정도여서 작업표시줄을 왼쪽으로 옮겨 사용해왔으나, 덮개를 열고 닫다보니 멍든 자국이 점점 커지면서 깨진 부분이 모니터 아래 부분까지 이어지게되었다.

LG서비스센터에 물어보니 수리비 포함 31만원이 좀 넘는단다.

3년전 200만원에 구입한 노트북이나, 현재 중고 가격으로 볼 때 50만원 정도(?)의 몸값을 지닌 노트북에 30만원 넘는 돈을 투자하기에는 아깝단 생각이 들었다.

1. LG서비스에서 수리한다.
    => 31만원 이상의 비용 발생.

2. 동급 노트북 가격이 50만원 정도이니, 중고로 구입하고 현재 노트북은 일반 모니터와 연결해서 사용한다.
    => 약 50만원의 비용 발생

3. 새로운 노트북을 산다. 다나와에서 노트북 가격 알아보니 120~130정도?
    => 실제적으로 알아보면 눈높이가 높아지므로 약 150정도의 비용 발생.

4. X전자 공장에서 등급(반품) 제품으로 구입한다.
    => 70~80이면 살 수 있겠지만 제품 선택 및 A/S가 제한적이다.

5. 일반 수리점에서 수리한다.
    => 몇 군데 알아보니 13~20만원.


몇 가지 케이스를 두고 고민해봤지만 LCD 때문에 잘 돌아가는 노트북을 바꾸는 것은 아깝다는 생각에 다달았다.

1. LG서비스에서 수리한다.
    => 비싸지만 일반 수리점에 비해 믿을 수 있다.

2. 일반 수리점에서 수리한다.
    - 수리점1 : 15인치 LCD 교체 문의하니 13만원이란다. 해상도 1400이라고하니 17만원이란다.
    - 수리점2 : 중고 제품으로 교체하면 17만원인데 지금 맞는게 없으니 1주일정도 기다려야한다.
    => 몇 군데 전화해보니 13~20만원 정도의 금액에 중고 제품으로 교체하는 곳도 더러있었다. LG서비스에 비해 가격은 저렴하지만 몇 번의 전화 통화로인해 오히려 신뢰감이 떨어졌다.


하지만 결국 일반 수리점 선택.

용산으로 다녀오기에는 시간이 부족하여 테크노마트로 결정.

금요일. 검색으로 몇 군데 리스트를 뽑고 대략적인 금액을 문의했다. 20만원 예상.

가장 평이 좋은 곳이 있었으나 전화번호를 몰라서 그냥 찾아가보기로했다.

토요일. 테크노마트 8층으로 갔다. 15인치 1400 해상도 LCD 교체 비용과 작업 시간이 얼마나 걸릴까요?

    "현금으로하면 15만원이고 약 15분 걸립니다."

그 동안 알아본 바로는 작업시간 1시간~반나절이고, 좀 괜찮아 보이는(?) 곳에서의 금액이 20만원이었는데... 다른 곳은 가보지도 않고 바로 맡겼다.


얼마되지 않은 시간에 LCD 교체 작업이 완료되었고, 쿨러 부분의 청소와 함께 키보드, LCD 등을 닦아주셨다.

노트북을 전달 받고 윈도우 부팅, LCD 정상 확인하고 있는데 아저씨께서 말씀하셨다.

    "지금 노트북 청소해준것만 5만원입니다."

감사감사~

수리비 15만원이 나간다는 생각보다는 LG서비스의 절반 이하 금액에, 예상했던 금액&시간보다 적고 빠르게 완료됐다는 생각에 기분 좋았다.

2009/07/12 11:30 2009/07/12 11:30

[PPC] ASyncRun - ActiveSync 수동으로 실행

SPH-M4655. 내 생애 첫 번째 PDA.

▣ 프로그램 설명
    PDA(SPH-M4655)를 PC와 연결 할 때마다 ActiveSync가 자동으로 실행되는데, 이것을 막기 위한 프로그램입니다.

1. ASyncToggle.exe
    - ActiveSync 자동 연결 설정을 변경합니다. (On ↔ Off)

2. ASyncRun.exe
    - ActiveSync를 수동으로 실행합니다.
    - ActiveSync 자동 연결을 Off로 설정하면 PDA를 PC와 연결하더라도 ActiveSync가 실행되지 않습니다.
    - PC와 연결 된 상태에서 이 프로그램을 실행시키면 ActiveSync가 실행되고 동기화가 진행됩니다.
    - ActiveSync 자동 연결을 On 상태로 사용하신다면 전혀 필요 없는 프로그램입니다.
    - ActiveSync 실행 파일(\windows\repllog.exe)을 실행시키는 기능밖에 없습니다.

▣ 사용 방법
1. 첨부 파일을 풀면 2개의 실행 파일(ASyncToggle.exe, ASyncRun.exe)이 있습니다.
2. 이 파일들을 PDA(M4655)의 임의의 폴더로 복사합니다.
3. ASyncToggle.exe를 실행해서 "자동 연결 Off" 상태로 만듭니다.
4. USB 케이블을 이용해서 PC와 연결합니다.
    ☞ ActiveSync가 실행되지 않겠죠??
5. ASyncRun.exe를 실행합니다.
    ☞ ActiveSync가 실행되고 사용자 확인, 동기화가 진행됩니다.

※ "자동 연결 Off"로 설정 후 ActiveSync 동기화가 필요한 상황에서 ASyncRun.exe를 실행하면 됩니다.

※ 2009/04/03 추가.
    ActiveSync 연결에 문제가 있는 경우, 설정 -> 연결 -> USB-PC 연결 에서 "고급 네트워크 기능 사용"을 바꿔서 확인해보시기 바랍니다.


▣ 만든 이유
(간혹 이 프로그램이 필요한 이유를 묻는 분들이 있어서...)
1. 저는 USB 충전 겸용 데이터 케이블을 이용해서 충전합니다.
   하루에 수 차례 연결 합니다.
   단지 "충전"을 위해 PC와 연결했을 뿐인데 ActiveSync가 실행되고 아웃룩과의 동기화가 진행됩니다.
   동기화가 진행되는 동안에서는 PC가 약간 버벅대고, M4655는 심하게 버벅댑니다.
   이 상태에서 전화가 오면 수~초 동안 "응답" 버튼을 눌러야 통화가 가능해집니다.

2. USB 충전 속도는 느립니다.
  USB 충전 케이블로 충전하면 일반 충전기에 비해 충전 속도가 느립니다.
  게다가 ActiveSync를 통해 주기적으로 동기화가 이루어지면? 화면이 계속 켜지고, 충전 속도는 매~우 느립니다.
  화면을 끄고 충전하면 훨씬 빠릅니다.

3. ActiveSync 잘못 실행하면 데이터 삭제됩니다.
  M4655 구입 후 한 달쯤 지났었나?
  다른 PC에서 USB로 연결했더니 PC에 "연결 설정"이 나타났습니다.
  별 다른 생각 없이 "확인" 등을 클릭했더니 M4655의 연락처, 메모 등이 모두 사라졌습니다.

4. 내 의도와 무관하게 ActiveSync가 실행 되는게 싫습니다.

▣ 시스템 요구사항
1. Windows Mobile 5 이상
2. Microsoft .Net Compact Framework 2.0

▣ 개발 환경
1. Visual Studio 2008
2. .NET Compact Framework v2.0
3. KOR Windows Mobile 5.0 Pocket PC R2 Emulator

▣ 테스트
1. SPH-M4655

▣ 프로그램 정보
만든사람 : 용재님 (182cm@korea.com)
홈페이지 : http://www.EnjoyDev.com(새 창으로 열기)
배포일자 : 2009/04/01
라인센스 : 사용, 배포에 아무런 제한이 없습니다. 가급적 원본 출처 표시 바랍니다.
원본출처 : http://www.enjoydev.com/blog/ASyncRun(새 창으로 열기)

▣ 버전 정보
v1.0.0
    +최초 공개
    +AutoCnct.exe 프로그램으로 만들었다가 편의성이 떨어져서 새롭게 만듬.


▣ 첨부파일





☞ 본문 출처 : http://www.enjoydev.com/blog/entry/ASyncRun(새 창으로 열기)

☞ 본인의 글 입니다. 이 글을 다른 곳에 게재하는 경우 본문 출처를 밝혀주시기 바랍니다.

2009/04/01 15:23 2009/04/01 15:23
ASP 프로젝트를 진행하게되서 요약 자료를 만들었습니다.

ASP 기본 내용과 Visual Studio(Web Developer)를 이용한 디버그 방법에 대해 정리했습니다.

잘못된 부분, 추가 할 내용에 대한 댓글 달아주시면 업데이트하겠습니다.





☞ 본문 출처 : http://www.EnjoyDev.com/blog/143

☞ 본인의 글 입니다. 이 글을 다른 곳에 게재하는 경우 본문 출처를 밝혀주시기 바랍니다.
2008/09/11 14:02 2008/09/11 14:02


사용자 삽입 이미지


윈도우 자동 로그인 프로그램입니다.

VB 6.0으로 개발되었으며, 레지스트리 편집을 통한 자동 로그인 방법을 자동화한 프로그램입니다.


▣ 참고 사이트
http://support.microsoft.com/kb/315231(새 창으로 열기)


☞ 본문 출처 : http://www.enjoydev.com/blog/141(새 창으로 열기)

☞ 본인의 글 입니다. 이 글을 다른 곳에 게재하는 경우 본문 출처를 밝혀주시기 바랍니다.
2008/04/08 18:47 2008/04/08 18:47
불펌 금지의 이유 때문인지 오른쪽 마우스 클릭, 텍스트 선택 등에 대해 막아놓은 사이트가 많은데, 글을 읽을 때 마우스로 텍스트를 선택해가면서 읽는 내 입장에서는 여간 불편한게 아니다.

게사다 복사도 안되니....


"오른쪽 마우스 해제"로 검색해보면 여러가지 방법이 나와있는데, 그 중에서 별도의 프로그램 설치 없이 "즐겨찾기" 추가만으로 해결되는 방법을 선호한다.

javascript:function r(d){d.oncontextmenu=null;d.onselectstart=null;d.ondragstart=null;d.onkeydown=null;d.onmousedown=null; d.body.oncontextmenu=null;d.body.onselectstart=null;d.body.ondragstart=null;d.body.onkeydown=null; d.body.onmousedown=null;};function unify(w){r(w.document);if(w.frames.length>0){for(var i=0;i<w.frames.length;i++){try{unify(w.frames[i].window);}catch(e){}};};};unify(self);
1. 웹 브라우저를 열고 "즐겨찾기" 추가를 한다.
2. 추가한 즐겨찾기에서 오른쪽 버튼 클릭 후 "URL"에 위의 자바스크립트 소스를 입력한다.
3. 저장 버튼을 누르면 "오류" 경고 메세지가 나타나는데 무시하고 저장한다.
4. 오른쪽 마우스 사용이 막혀 있는 사이트 방문 후 추가한 즐겨찾기를 클릭한다.

아래는 위 자바스크립트를 보기 쉽게 수정한 내용이다.
javascript:
function r(d)
{
    d.oncontextmenu=null;
    d.onselectstart=null;
    d.ondragstart=null;
    d.onkeydown=null;
    d.onmousedown=null;
    d.body.oncontextmenu=null;
    d.body.onselectstart=null;
    d.body.ondragstart=null;
    d.body.onkeydown=null;
    d.body.onmousedown=null;
}
function unify(w)
{
    r(w.document);
    if(w.frames.length>0)
    {
        for(var i=0;i<w.frames.length;i++)
        {
            try
            {
                unify(w.frames[i].window);
            }
            catch(e)
            {
            }
        }
    }
}
unify(self);


☞ 본문 출처 : http://www.enjoydev.com/blog/139(새 창으로 열기)
☞ 참고 자료 :

2008/03/26 17:31 2008/03/26 17:31
사용자 삽입 이미지


웹 호스팅 업체에서 제공해주는 MySQL이 EUC-KR인 관계로 별 다른 고민없이 EUC-KR로 개발을 진행하고 있었는데, AJAX를 적용하는 과정에서 한글 깨짐의 문제가
발생했다.
 
현재 상황은 이렇다.
1. HTML 메타 태크에서의 문자셋 : EUC-KR
2. PHP 파일의 문자셋 : ANSI
3. DB의 문자셋 : EUC-KR
4. PHP Response Header의 문자셋 : EUC-KR
AJAX + Charset 관련 구글링해보니 AJAX에서 사용되는 XMLHttpRequest Object는 UTF-8로만 통신한단다.

Client
ó WAS ó DB 문제셋을 맞춰야는데, MySQL의 문자셋을 바꿀 수 없는 상황에서 어떻게 처리해야할지 고민중이다.

방법
1. 모든 Charset UTF-8로 맞추고, UTF-8 환경의 MySQL을 제공해주는 호스팅 업체로 바꾼다.
  è 장기적으로 봤을 가장 좋은 방법이 있겠으나, 문제 해결 아닌 돌아가기 방법이므로 제외.

방법
2. 모든 Charset UTF-8로 맞추고, DB 핸들링 부분에서 각 컬럼값들을 컨버전한다.
  è Insert, Update, Select SQL 실행마다 컨버전을 해야하므로 불필요(?)한 자원이 낭비된다.
 Insert, Update SQL 실행 전에 각 컬럼 값 컨버전  ex) $col = iconv("utf-8", "euc-kr", $col);
Select SQL 실행 컬럼 컨버전  ex) $col = iconv(euc-kr, utf-8, $col);

방법3. EUC-KR을 기본으로하되, XMLHttpRequest로부터 데이터를 받는 부분의 PHP에서만 각 컬럼값들을 컨버전한다.
  è XMLHttpRequest 한글을 전송하는 경우에만 컨버전하면 되므로 방법2에 비해 훨씬 적은 자원으로 해결 가능.
 $_REQUEST['text1'] = iconv("utf-8", "euc-kr", $_REQUEST['text1']);



☞ 본문 출처 : http://www.enjoydev.com/blog/138(새 창으로 열기)
☞ 참고 자료 :

2008/03/24 14:15 2008/03/24 14:15
▣ AcroEditor를 수년째 사용해왔음에도 코드 템플릿 기능을 거의 사용하지 않았었는데, 단축키(Ctrl-J)로 사용해보니 좋더군요.

아크로에디터에서의 템플릿 파일은 다음과 같은 간단한 구조의 텍스트 파일입니다.
<N>코드1</N><D>설명1</D>
<C>코드1내용</C>
<N>코드2</N><D>설명2</D>
<C>코드2내용</C>


처음에는 템플릿 파일을 텍스트 에디터로 열어 추가/수정 했었는데 "<N></N><D></D><C></C>" 구조를 맞추면서 편집하는게 상당히 귀찮은 작업이었고, "단순 반복적인 일"을 싫어하는 개발자적인 마인드가 발동해서 좀 더 쉽게 입력할 수 있는 방법으로 "엑셀 + 매크로" 기능을 이용했습니다.

코드1, 설명1, 코드1내용
코드2, 설명2, 코드2내용

엑셀에서 코드, 설명, 코드내용을 입력하고, "저장" 버튼을 누른 후 파일을 선택하면 템플릿 구조의 텍스트 파일로 저장됩니다.

입력한 코드 순서와 상관없이 아크로에디터에서는 "코드"를 기준으로 오름차순 정렬로 보여집니다.
엑셀 입력에서도 순서를 맞출 수 있도록 "정렬" 버튼을 달아놨습니다.


PS1. 매크로를 이용하기 때문에 엑셀에서 불러오는 과정에서 "보안" 관련 경고가 나타날겁니다.
"도구 -> 매크로 -> 보안"에서 보안 수준을 낮추시거나, 또는 엑셀 파일에 포함된 인증서를 설치하시면됩니다.

PS2. 엑셀 파일에서 사용된 인증서는 개인적인 용도의 "테스트 인증서"입니다.

PS3. 매크로 소스 잠금 기능을 설정했습니다. 비밀번호는 "0000"입니다.



☞ 본인의 글 입니다. 이 글을 다른 곳에 게재하는 경우 본문 출처를 밝혀주시기 바랍니다.


2008/03/14 18:35 2008/03/14 18:35
▣ ActiveX 디지털 인증과 달리, VBA 디지털 인증에서의 타임스탬프 정보는 레지스트리를 이용합니다.

HKEY_Current_User\Software\Microsoft\VBA\Security\TimeStampURL
HKEY_Current_User\Software\Microsoft\VBA\Security\TimeStampRetryCount
HKEY_Current_User\Software\Microsoft\VBA\Security\TimeStampRetryDelay
  • TimeStampURL : TimeStamp 서버 주소 입력
  • TimeStampRetryCount : 서버 연결 실패시 재시도 횟수
  • TimeStampRetryDelay : 서버 연결 실패시 재시도 Delay 시간

: 위의 레지스트리 정보를 저장한 파일입니다.



▣ 엑셀에서의 VBA 디지털 인증
    엑셀 -> 도구 -> 매크로 -> Visual Basic Editor -> 도구 -> 디지털 서명

▣ 참고 사이트
http://www.microsoft.com/technet/prodte ··· r%3Dtrue(새 창으로 열기)
http://wiki.cacert.org/wiki/TimeStamping(새 창으로 열기)



☞ 본문 출처 : http://www.enjoydev.com/blog/135(새 창으로 열기)

☞ 본인의 글 입니다. 이 글을 다른 곳에 게재하는 경우 본문 출처를 밝혀주시기 바랍니다.

☞ 위 내용은 정식 문서 번역이 아닌, 실무 적용에 따른 경험을 바탕으로 어느정도 자의적인 설명이 포함되어있습니다.
   잘못된 내용이 있는 경우 지적 바랍니다.

2008/03/14 18:01 2008/03/14 18:01

사용자 삽입 이미지

바코드 폰트입니다.

출처 : 모름

2008/02/28 11:22 2008/02/28 11:22
Eclipse's Favorite Plugin. Add a Favorite view to your eclipse. It Give you the ability to store resources in favorite tree like structure, just like you do in your internet browser. Just Drag Resources from your project explorer to the Favorite View.

사용자 삽입 이미지

Favorite View는 이클립스 개발 환경에서 Project 관련 리소스를 별도의 트리 구조로 관리할 수 있도록 지원하는 플러그인이다.

설치는 다음의 Favorite.1.0.1.zip 다운로드 후 이클립스의 plugins 폴더에 압출을 풀어 넣으면된다.

소스 출처 : http://sourceforge.net/projects/favoriteplugin/(새 창으로 열기)

□ Plugin 설치 방법 (2009/01/08 추가)
1. eclipse/plugins 폴더에 압축 파일을 풀어 넣는다.

2. 다음의 Plugin들이 추가로 필요하니, 확인 후 없는 것은 추가로 설치한다.
org.eclipse.core.resources,
org.eclipse.core.runtime,
org.eclipse.help,
org.eclipse.ui
org.eclipse.ui.ide
org.eclipse.xsd,

3. Eclipse 실행 후 Window -> Show View -> Other에서 Aviv Levin -> Favorite를 선택한다.



: 플러그인 프로그램

: 플러그인 소스

2008/02/25 13:37 2008/02/25 13:37

ERWin에서 Reverse Engineer 기능을 이용하면 Database의 스키마 정보를 쉽게 가져올 수 있는데, 다음은 MS Access MDB파일에서 스키마 정보를 가져오는 순서이다.

1. Tools -> Reverse Engineer 메뉴를 선택한다.

2. Select Template 화면에서 Database, Version 콤보 박스에서 각각 Access, 2000 을 선택하고 Next 버튼을 클릭한다.

사용자 삽입 이미지

3. Set Options 가져올 정보를 선택하고 Next 버튼을 클릭한다.

사용자 삽입 이미지

4. Access Connection에서 User Name에 "admin"을 입력하고 Database Browse 버튼을 눌러 MDB 파일 선택 후 Connect 버튼을 클릭한다.

사용자 삽입 이미지

User Name을 입력하지 않은 경우에는 다음의 에러가 발생하므로 반드시 "admin"을 입력한다.

사용자 삽입 이미지

2007/12/06 14:02 2007/12/06 14:02

사용자 삽입 이미지

지난 4월에 PL/SQL Developer 7.1.x 버전이 발표되면서 유니코드 지원, 편집창 분할 기능, 코드 Folding 등이 추가되었다.

이 중에 가장 맘에 드는 것은 Function, Procedure, Package 등의 개발에 있어 상당한 도움을 주는 코드 Folding이었다.

사용자 삽입 이미지


또한 20,000 줄 이상의 큰 소스 코드를 수정하는 경우 7.0.3의 편집창에서는 너무 느린 속도 때문에 답답함을 느꼈었는데, 7.1.x 버전에서는 이전과 비교할 수 없을 정도로 빨라졌다.

지금(2007/12/05 현재)은 7.1.4 버전으로 꾸준히 업데이트가 이루어지고 있다.


하지만... 난 아직도 7.0.3 버전을 사용하고 있다.

소스 코드 입력에서는 고정폭 폰트를 사용해야만 보기가 편하기 때문에 주로 "돋움체" 또는 "굴림체"를 사용하는데(Courier New, System 등의 영문 폰트는 한글 표현이 맘에 안든다), 7.0.3에서는 없던 다음의 문제가 나타났기 때문이다.


사용자 삽입 이미지
사용자 삽입 이미지

첫번째 그림은 7.0.3 버전, 두번째는 7.1.3 버전에서 Syntax Highlighting 기능이 적용된 상태인데, 키워드 등에 대해 Bold로 표시하는 경우 7.1.3 버전에서는 글자 폭이 약간 넓어짐으로 인해 고정폭 폰트의 역할을 제대로 하지못하고 있다.

이 문제는 영문 고정폭 폰트인 Courier New, System를 사용하거나 또는 Bold 속성을 사용하지 않도록 설정하면 되지만, 난 "돋움체" + 키워드 Bold 로 사용하는게 좋다.

▣ 7.0.3 vs 7.1.3
    좋아진점
        - Code Folding
        - 유니코드 지원
        - 편집창 분할
        - 2만 줄 이상의 Package 소스를 수정하는 경우, 월등히 빨라진 속도

    나빠진점
        - Synctax Highlighting에서 "Bold"를 사용하는 경우 고정폭 폰트가 적용되지 않는점

2007/12/06 08:40 2007/12/06 08:40

데이터 원본(ODBC) - System DSN 등록 방법

#1. API를 이용하는 방법

Option Explicit

' Declare SQLConfigDataSource Constants.

Const ODBC_ADD_DSN = 1          ' Add File DSN
Const ODBC_CONFIG_DSN = 2       ' Configure (edit) File DSN
Const ODBC_REMOVE_DSN = 3       ' Remove File DSN
Const ODBC_ADD_SYS_DSN = 4      ' Add System DSN
Const ODBC_CONFIG_SYS_DSN = 5   ' Configure (edit) System DSN
Const ODBC_REMOVE_SYS_DSN = 6   ' Remove System DSN
Const vbAPINull As Long = 0&    ' NULL Pointer

Const DEFAULT_SERVERNAME = "MyServer"
Const DEFAULT_DATABASENAME = "MyDatabase"
Const DEFAULT_SQL_DRIVER = "SQL Server"

Public Enum DSNTypeConstants
    SystemDSN = ODBC_ADD_SYS_DSN
    UserDSN = ODBC_ADD_DSN
End Enum

Private Declare Function SQLConfigDataSource Lib "ODBCCP32.DLL" _
(ByVal hwndParent As Long, ByVal fRequest As Long, _
ByVal lpszDriver As String, ByVal lpszAttributes As String) As Long

'============================================================

Public Function RegisterDSN(ByVal DataSourceName As String, _
    Optional ByVal DSNType As DSNTypeConstants = SystemDSN, _
    Optional ByVal TrustedConnection As Integer = 1) As Boolean

    Dim strAttributes As String
    Dim lngReturnCode As Long

    On Error GoTo RegisterDSN_Error

    strAttributes = "SERVER=" & DEFAULT_SERVERNAME & Chr$(0)
    strAttributes = strAttributes & "DESCRIPTION=" & DataSourceName & " DataSource " & Chr$(0)
    strAttributes = strAttributes & "DSN=" & DataSourceName & Chr$(0)
    strAttributes = strAttributes & "DATABASE=" & DEFAULT_DATABASENAME & Chr$(0)

    '   Setting the TrustedConnection value to '0' does not work!!
    '   Just exclude the attribute!!

    If TrustedConnection = 1 Then
        strAttributes = strAttributes & "TRUSTED_CONNECTION=" & TrustedConnection & Chr$(0)
    End If

    If SQLConfigDataSource(vbAPINull, DSNType, _
            DEFAULT_SQL_DRIVER, strAttributes) Then RegisterDSN = True

Quit_RegisterDSN:
        Exit Function

RegisterDSN_Error:
        Beep
        MsgBox Err.Description, vbCritical, "Error Registering " & DataSourceName & " Data Source"
        Resume Quit_RegisterDSN

End Function


Private Sub Command1_Click()
    RegisterDSN "Test"
End Sub



#2. 레지스트리 등록을 이용하는 방법
Dim wshShell</P>
<P>Set wshShell = CreateObject("WScript.Shell")
wshShell.RegWrite "HKLM\SOFTWARE\ODBC\ODBC.INI\MyDSN_Name\Driver", _
 wshShell.ExpandEnvironmentStrings("%SystemRoot%") & "\System32\SQLSRV32.dll"
wshShell.RegWrite "HKLM\SOFTWARE\ODBC\ODBC.INI\MyDSN_Name\Database", "DatabaseName"
wshShell.RegWrite "HKLM\SOFTWARE\ODBC\ODBC.INI\MyDSN_Name\Description", "Проверка DSN"
wshShell.RegWrite "HKLM\SOFTWARE\ODBC\ODBC.INI\MyDSN_Name\Server", "ServerName"
wshShell.RegWrite "HKLM\SOFTWARE\ODBC\ODBC.INI\MyDSN_Name\Trusted_Connection", "Yes"
wshShell.RegWrite "HKLM\SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources\MyDSN_Name","SQL Server"



원본출처 : http://www.sql.ru/forum/actualthread.aspx?tid=163403(새 창으로 열기)

2007/11/27 09:29 2007/11/27 09:29

VB에서 EXE, DLL 등의 문자열, 이미지 리소스를 편집을 위한 예제 프로그램

Private Type BITMAP
  bmType As Long      ' this must be zero
  bmWidth As Long     ' bitmap width
  bmHeight As Long     ' bitmap height
  bmWidthBytes As Long   ' bytes in horiz raster line
  bmPlanes As Integer   ' number of color planes
  bmBitsPixel As Integer  ' number of bits per pixel
  bmBits As Long      ' address of pixel data in memory
End Type
Private Type StringTable
  id As Long
  Text As String
End Type
Private Const IMAGE_ARCHIVE_START_SIZE = 8
Private Const IMAGE_BITMAP = 0
Private Const LR_CREATEDIBSECTION = &H2000
' Predefined Resource Types
Private Const DIFFERENCE = 11
Private Const RT_ACCELERATOR = 9&
Private Const RT_ANICURSOR = (21)
Private Const RT_ANIICON = (22)
Private Const RT_BITMAP = 2&
Private Const RT_CURSOR = 1&
Private Const RT_DIALOG = 5&
Private Const RT_DLGINCLUDE = 17
Private Const RT_ICON = 3&
Private Const RT_FONT = 8&
Private Const RT_FONTDIR = 7&
Private Const RT_GROUP_CURSOR = (RT_CURSOR + DIFFERENCE)
Private Const RT_GROUP_ICON = (RT_ICON + DIFFERENCE)
Private Const RT_HTML = 23
Private Const RT_MENU = 4&
Private Const RT_MESSAGETABLE = 11
Private Const RT_PLUGPLAY = 19
Private Const RT_RCDATA = 10&
Private Const RT_STRING = 6&
Private Const RT_VERSION = 16
Private Const RT_MYOWN_TYPE1 = 10001
Private Const RT_MYOWN_TYPE2 = 10002
Private Const ENGLISH_US = 1033

Private Declare Function BeginUpdateResource Lib "kernel32" Alias "BeginUpdateResourceA" ( _
    ByVal pstrFileName As String, ByVal bDeleteExistingResources As Long) As Long
Private Declare Function UpdateResource Lib "kernel32" Alias "UpdateResourceA" ( _
    ByVal hUpdate As Long, ByVal lpType As Long, ByVal lpName As Long, _
    ByVal wLanguage As Integer, lpData As Any, ByVal cbData As Long) As Long
Private Declare Function EndUpdateResource Lib "kernel32" Alias "EndUpdateResourceA" ( _
    ByVal hUpdate As Long, ByVal fDiscard As Long) As Long
Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" ( _
    ByVal lpLibstrFileName As String) As Long
Private Declare Function FindResourceEx Lib "kernel32" Alias "FindResourceExA" ( _
    ByVal hModule As Long, ByVal lpType As Long, ByVal lpName As Long, _
    ByVal wLanguage As Long) As Long
Private Declare Function LoadResource Lib "kernel32" ( _
    ByVal hInstance As Long, ByVal hResourceInfo As Long) As Long
Private Declare Function LockResource Lib "kernel32" ( _
    ByVal hResourceData As Long) As Long
Private Declare Function SizeofResource Lib "kernel32" ( _
    ByVal hInstance As Long, ByVal hResourceInfo As Long) As Long
Private Declare Function FreeLibrary Lib "kernel32" ( _
    ByVal hLibModule As Long) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" ( _
    Destination As Any, Source As Any, ByVal Length As Long)
'//APIs to display Bitmap from Resource
Private Declare Function BitBlt Lib "gdi32.dll" ( _
    ByVal hDestDC As Long, _
    ByVal x As Long, _
    ByVal y As Long, _
    ByVal nWidth As Long, _
    ByVal nHeight As Long, _
    ByVal hSrcDC As Long, _
    ByVal xSrc As Long, _
    ByVal ySrc As Long, _
    ByVal dwRop As Long) As Long
Private Declare Function CreateCompatibleDC Lib "gdi32.dll" ( _
    ByVal hdc As Long) As Long
Private Declare Function DeleteDC Lib "gdi32.dll" ( _
    ByVal hdc As Long) As Long
Private Declare Function DeleteObject Lib "gdi32.dll" ( _
    ByVal hObject As Long) As Long
Private Declare Function LoadImage Lib "user32.dll" Alias "LoadImageA" ( _
    ByVal hInst As Long, _
    ByVal lpsz As String, _
    ByVal un1 As Long, _
    ByVal n1 As Long, _
    ByVal n2 As Long, _
    ByVal un2 As Long) As Long
Private Declare Function SelectObject Lib "gdi32.dll" ( _
    ByVal hdc As Long, _
    ByVal hObject As Long) As Long
Private Declare Function GetObjectAPI Lib "gdi32" Alias "GetObjectA" (ByVal _
    hObject As Long, ByVal nCount As Long, lpObject As Any) As Long
'//API To display string item from resource
Private Declare Function LoadString Lib "user32.dll" Alias "LoadStringA" ( _
    ByVal hInstance As Long, _
    ByVal wID As Long, _
    ByVal lpBuffer As String, _
    ByVal nBufferMax As Long) As Long
'//1033=ENGLISH (US)
Public Function StringResourceModify(strResExePath As String, id As Integer, _
  ByVal strText As String, Optional LangID As Long = ENGLISH_US) As Boolean
  Dim ret As Long
  Dim hResource As Long
  Dim x As Long
  Dim iGroup As Integer
  Dim hObject As Long
  Dim hResourceData As Long
  Dim lpResourceData As Long
  Dim cbResource As Long
  Dim hModule As Long
  Dim lpData() As Byte
  Dim lpReadData() As Byte
  Dim cbText As Integer
  If id < 1 Then Exit Function
  'Calculate # of groups of strings
  iGroup = Int(id / 16&) + 1
  'Open the file
  hModule = LoadLibrary(strResExePath)
  hObject = FindResourceEx(hModule, RT_STRING, iGroup, LangID)  '//6=StringType
  hResourceData = LoadResource(hModule, hObject)
  lpResourceData = LockResource(hResourceData)
  cbResource = SizeofResource(hModule, hObject)
  If cbResource <= 32 Or hObject = 0 Then
    cbResource = 32& + Len(strText) * 2&
    ReDim lpData(cbResource - 1)
    cbText = Len(strText)
    CopyMemory lpData(2& * (id - (iGroup - 1) * 16&)), cbText, 2&
    If Len(strText) Then
      CopyMemory lpData(2& + 2& * (id - (iGroup - 1) * 16&)), ByVal StrPtr(strText), Len(strText) * 2
    End If
  Else
    ReDim lpReadData(cbResource - 1)
    CopyMemory lpReadData(0), ByVal lpResourceData, cbResource
    Dim countX As Long
    Dim CHECKLNG As Integer
    For x = 0 To (id - (iGroup - 1) * 16&) - 1
      CopyMemory CHECKLNG, lpReadData(countX), 2&
      countX = countX + 2 + CHECKLNG * 2
    Next
    CopyMemory CHECKLNG, lpReadData(countX), 2&
    ReDim lpData(countX + 2 + Len(strText) * 2 + (cbResource - (countX + 2 + CHECKLNG * 2)) - 1)
    CopyMemory lpData(0), lpReadData(0), countX
    cbText = Len(strText)
    CopyMemory lpData(countX), cbText, 2&
    If Len(strText) Then
      CopyMemory lpData(countX + 2), ByVal StrPtr(strText), Len(strText) * 2
    End If
    If (cbResource - (countX + 2 + CHECKLNG * 2)) > 0 Then
      CopyMemory lpData(countX + 2 + Len(strText) * 2), lpReadData(countX + 2 + CHECKLNG * 2), (cbResource - (countX + 2 + CHECKLNG * 2))
    End If
  End If
  'Free the loaded exe/dll file
  FreeLibrary hModule
  'Start resource update to the exe/dll
  hResource = BeginUpdateResource(strResExePath, ByVal 0&)
  'Update the ressource iGroup
  ret = UpdateResource(hResource, 6&, CLng(iGroup), CInt(LangID), lpData(0), UBound(lpData) + 1)
  'This will actually write the update to the disk and end the resource update process
  ret = EndUpdateResource(hResource, ByVal 0&)
  StringResourceModify = ret
End Function
Private Function StringResourceList(strFileName As String, Optional LangID As Long = ENGLISH_US) As StringTable()
  Dim ret As Long
  Dim hResource As Long
  Dim x As Long
  Dim iGroup As Integer
  Dim hObject As Long
  Dim hResourceData As Long
  Dim lpResourceData As Long
  Dim cbResource As Long
  Dim hModule As Long
  Dim lpData() As Byte
  Dim lpReadData() As Byte
  Dim Out() As StringTable
  Dim countX As Long
  Dim CHECKLNG As Integer
  Dim temp As String
  ReDim Out(0)
  hModule = LoadLibrary(strFileName)
  For iGroup = 1 To 4096
    hObject = FindResourceEx(hModule, 6&, iGroup, LangID)
    hResourceData = LoadResource(hModule, hObject)
    lpResourceData = LockResource(hResourceData)
    cbResource = SizeofResource(hModule, hObject)
    If cbResource >= 31 And hObject <> 0 Then
      ReDim lpReadData(cbResource - 1)
      CopyMemory lpReadData(0), ByVal lpResourceData, cbResource
      countX = 0
      x = 0
      Do While countX < UBound(lpReadData)
        CopyMemory CHECKLNG, lpReadData(countX), 2&
        countX = countX + 2
        If CHECKLNG Then
          ReDim Preserve Out(UBound(Out) + 1)
          Out(UBound(Out)).id = (iGroup - 1) * 16& + x
          temp = Space(CHECKLNG * 2)
          CopyMemory ByVal StrPtr(temp), lpReadData(countX), CHECKLNG * 2
          Out(UBound(Out)).Text = temp
          countX = countX + CHECKLNG * 2
        End If
        x = x + 1
      Loop
    End If
  Next
  FreeLibrary hModule
  StringResourceList = Out
End Function

Private Function BitmapResourceModify(strResExePath As String, strFileToLoad As String, _
  Optional nResType As Long = RT_BITMAP, Optional nID As Long = 101, Optional bDelete As Boolean = False) As Boolean
  Dim nFile As Long
  Dim Data() As Byte
  Dim arrSize As Long
  Dim ret As Long
  Dim Handle As Long
  nFile = FreeFile
  '//We need to pass byte buffer so create a ByteArry from file
  Open strFileToLoad For Binary As nFile
  arrSize = LOF(nFile) - 14
  ReDim Data(0 To arrSize - 1)
  Get nFile, 15, Data
  Close nFile
  Handle = BeginUpdateResource(strResExePath, 0)  '//0=Dont delete existing resource items
  If Handle = 0 Then Exit Function
  If bDelete = False Then
    '//Add/Modify
    ret = UpdateResource(Handle, ByVal nResType, ByVal nID, 1033, Data(0), arrSize)
  Else
    '//To Delete Resource item pass lpData=ByVal 0& (NULL) and cbData=0
    ret = UpdateResource(Handle, ByVal nResType, ByVal nID, 1033, ByVal 0&, 0)
  End If
  ret = EndUpdateResource(Handle, 0)
  BitmapResourceModify = ret
End Function
Sub DisplayBitmapRes(hDcDisplay As Long, sResFile As String, ResId As Long)
  Const IMAGE_BITMAP = 0&
  Const LR_CREATEDIBSECTION = &H2000
  Dim hDLL As Long
  Dim sID As String
  Dim sIdent102 As String
  Dim hMemDC As Long
  Dim lret As Long
  Dim hBmp As Long
  Dim oldhBmp As Long
  Dim picwid As Long, pichgt As Long
  Dim BMP As BITMAP
  sID = "#" & ResId    '//Name is in #xxxx format
  hDLL = LoadLibrary(sResFile)
  ' Could use LoadBitmap but it has been superceded by
  ' LoadImage which is more flexible.
  ' Hbmp = LoadBitmap(hDLL, sID)
  ' First bitmap in DLL
  hBmp = LoadImage(hDLL, sID, IMAGE_BITMAP, _
      0, 0, LR_CREATEDIBSECTION)
  GetObjectAPI hBmp, Len(BMP), BMP
  picwid = BMP.bmWidth
  pichgt = BMP.bmHeight
  ' Blit it to a pictureBox
  hMemDC = CreateCompatibleDC(hDcDisplay)
  oldhBmp = SelectObject(hMemDC, hBmp)
  lret = BitBlt(hDcDisplay, 0, 0, picwid, pichgt, _
      hMemDC, 0, 0, vbSrcCopy)
  DeleteObject hBmp
  ' Clean Up
  SelectObject hMemDC, oldhBmp
  DeleteDC hMemDC
  DeleteObject hBmp
  FreeLibrary hDLL
End Sub
Sub DisplayStringRes(sResFile As String, ResId As Long)
  Dim c As Integer, s As String, id As Long, hDLL As Long
  c = 1024
  s = String(c, 0)
  hDLL = LoadLibrary(sResFile)
  c = LoadString(hDLL, ResId, s, c)
  MsgBox s
  FreeLibrary hDLL
End Sub
Private Sub Command1_Click()
  Dim sResExeFilePath As String
  Dim sBMPFileToLoadPath As String
  sResExeFilePath = App.Path & "\test.exe"
  sBMPFileToLoadPath = App.Path & "\bmp_to_load.bmp"
  '//Note: ID Must be unique with in the same group of resource
  '//otherwise resource item will be overwritten by update
  '//Save Bitmap Resource Demo
  MsgBox BitmapResourceModify(sResExeFilePath, sBMPFileToLoadPath, RT_BITMAP, 101), , "BitmapResourceModify"
  '//Delete Bitmap Resource Demo
  '//MsgBox BitmapResourceModify(sResExeFilePath, sBMPFileToLoadPath, RT_BITMAP, 101,True)
  '//Save String Resource Demo
  MsgBox StringResourceModify(sResExeFilePath, 101, "This is test1"), , "StringResourceModify"
  MsgBox StringResourceModify(sResExeFilePath, 102, "This is test2"), , "StringResourceModify"
  MsgBox StringResourceModify(sResExeFilePath, 103, "This is test3"), , "StringResourceModify"
  '//To remove string ID=102 just pass strText=vbNullString
  'MsgBox StringResourceModify(sResExeFilePath, 102, vbNullString)
  Dim st() As StringTable, sMsg As String, i As Long
  st = StringResourceList(sResExeFilePath)
  For i = 0 To UBound(st)
    sMsg = sMsg & st(i).id & " : " & st(i).Text & vbCrLf
  Next
  MsgBox sMsg, , "List of string items"
  DisplayBitmapRes Picture1.hdc, sResExeFilePath, 101
  DisplayStringRes sResExeFilePath, 101
  Me.Caption = "BMP Resource from : " & sResExeFilePath
End Sub
Private Sub Form_Load()
  Command1.Caption = "Modify Resource Demo"
End Sub






원본출처 : http://binaryworld.net/Main/CodeDetail.aspx?CodeId=3778(새 창으로 열기)

2007/11/26 18:00 2007/11/26 18:00
개발 산출물을 ThinkWise 프로그램을 이용해서 마인드맵으로 표현해봤습니다.

사용자 삽입 이미지






PS. 퍼가실 때 본출 출처 표기 바랍니다.
2007/11/23 16:02 2007/11/23 16:02

일시 : 2007년 11월 10일 토요일 오후 2시
장소 : 백설컨벤션웨딩홀 4층 로즈마리홀 (용인시청 맞은편)

[E청첩장]
청첩장~
http://www.eweddingcard.co.kr/ewed/제용 ··· B0-19855

구경하고 축하글 남겨주삼요~ vv(^_^)

혹시라도 팝업창이 안뜨거든 아래 주소로....
http://www.eweddingcard.co.kr/ewed/pop_ ··· %3D19855

사용자 삽입 이미지

사용자 삽입 이미지
2007/10/31 10:51 2007/10/31 10:51
TAG

IE 연동 및 자동 로그인 기능 테스트를 위해 간단히 데브피아 자동 로그인 프로그램을 만들었습니다.

실행중인 IE(HTMLDocument Object) 정보를 구하는 방법은 여러가지가 있겠지만 이 프로그램에서는 FindWindow(), FindWindowEx(), ObjectFromLresult() 등의 API를 사용했습니다.


ObjectFromLresult 함수를 이용하면 HWND로부터 HTMLDocument Object를 구할 수 있습니다.

MSDN 기술자료 : How to get IHTMLDocument2 from a HWND

'===============================================================================
' 함 수 명 : GetHtmlDocFromServerHwnd()
' 설    명 : Internet Explorer_Server 핸들로부터 HTMLDocument Object 구함
' 입 력 값 :
' 결 과 값 :
' 작 성 일 : 2007.05.25
' 작 성 자 : 제용재(<A href="mailto:182cm@korea.com">182cm@korea.com</A>)
'===============================================================================
Public Function GetHtmlDocFromHwnd(ByVal hwnd As Long) As IHTMLDocument2
  Dim ID     As UUID
  Dim lngReg As Long
  Dim lngHnD As Long

  lngHnD = RegisterWindowMessage("WM_HTML_GETOBJECT")

  With ID
    .Data1 = &H626FC520
    .Data2 = &HA41E
    .Data3 = &H11CF
    .Data4(0) = &HA7
    .Data4(1) = &H31
    .Data4(2) = &H0
    .Data4(3) = &HA0
    .Data4(4) = &HC9
    .Data4(5) = &H8
    .Data4(6) = &H26
    .Data4(7) = &H37
  End With

  Call SendMessageTimeout(hwnd, lngHnD, 0, 0, &H2, 2000, lngReg)
  Call ZeroMemory(ID, Len(ID))
  Call ObjectFromLresult(lngReg, ID, 0, GetHtmlDocFromHwnd)
End Function


사용자 삽입 이미지

위에서 파란색으로 표시한 텍스트 부분만 변경한다면 다른 사이트에 적용하기에도 별 어려움이 없을것입니다.





☞ 본문 출처 : http://www.enjoydev.com/blog/123(새 창으로 열기)

☞ 본인의 글 입니다. 이 글을 다른 곳에 게재하는 경우 본문 출처를 밝혀주시기 바랍니다.

2007/05/25 10:57 2007/05/25 10:57

1997년 강릉MT... 2박3일 마지막 날 해변에서 밤 새고, 다들 용인으로 돌아가는 버스에 올라탈때 나는 자전거를 타고 해변 도로를 달렸습니다.

우리나라를 좁은 땅 덩어리라 말하곤하지만 그 때 처음으로 우리나라에도 경치 좋은 곳이 많다는걸 알게됐고, 제주도 처음 가보고, 며칠동안 많은 산을 오르내리면서 "올라가는건 힘들고 괴롭지만 정상에서 내려오는 것은 한 순간, 쉽다"라는걸 수차례 느꼈습니다.

학교에서 자 본적 있나요?
초등학교 주차장에 혼자 텐트치고 잠들었는데, 시끄러운 소리에 깨어보니 장대비 쏟아지고 천둥 번개.. 시계를 보니 밤 11시 57분. 학교 관련된 괴담은 모조리 생각나더군요. ㅎㅎ

자전거 끌고 산에 오르던 중 잠시 쉬었다가 다시 올라가는데 수건을 놓고왔네요.
불과 100미터도 안되는 거리에 수건이 보였는데, 내려갔다 다시 올라오는게 너무나 까마득하게 느껴져서 수건 버렸습니다. ㅡㅡ;;

자전거 타고 터널 통과할 수 있을까요?
그 때는 지식인이 없었기 때문에 마땅히 물어볼 곳이 없어서 파출소 찾아갔습니다. ㅎㅎ
자전거타고 통과해도 상관없답니다. 터널에는 갓길이 없었기 때문에 최대한 벽으로 밀착, 수건으로 얼굴 감싸고 시끄러운 소리, 바로 옆으로 스치는 차들의 살벌함을 감수하며 달렸습니다.

...

그 때는 마산을 종점으로 돌아와야했기에 기차에 자전거와 몸을 실고 올라왔는데 완주 못한게 아쉬움으로 남아있었습니다.

그래서 2002년 친구와 함께 다시 시작했었는데, 4일 달리고 난 후 쏟아지기 시작한 비가 한 달 동안 계속되서 실패로 끝났습니다.


올해는 2007년.

1997, 2002, 2007.... 이번에는 자동차 타고 떠납니다. D-5

2007/05/23 10:49 2007/05/23 10:49

아래의 HoverControl 소스를 약간 응용해서 HyperLink 기능의 Label 컨트롤을 만들었습니다.

배경색, 글자색, Catpion, URL 등의 기본적인 속성만 추가했습니다.

Label 컨트롤로 사용하기에는 부족한 기능(글꼴, 정렬, 투명배경, 글자효과, ...)이 많지만 지금은 HyperLink 기능만이 필요한 관계로 이정도까지만... ^^

사용자 삽입 이미지





☞ 본문 출처 : http://www.enjoydev.com/blog/121(새 창으로 열기)

☞ 본인의 글 입니다. 이 글을 다른 곳에 게재하는 경우 본문 출처를 밝혀주시기 바랍니다.

☞ 잘못된 내용이 있는 경우 지적 바랍니다.

2007/05/15 16:04 2007/05/15 16:04

사용자 정의 컨트롤을 이용한 HoverControl 소스입니다.

VB에서는 MouseOut 이벤트를 제공하지 않기 때문에 불편한 경우가 종종 있는데 이를 해결하기 위해서는 Subclassing을 이용해야합니다.
하지만 SetWindowLong, CallWindowProc 등의 API를 이용해서 처리한다는게 그리 간단한 작업도 아니고, Subclassing, Hooking을 적용한 상태로 개발환경에서 실행하게되면 VB IDE가 강제 종료되어 소스를 분실하게 되는 경우가 종종 발생하므로 소스 관리에도 주의를 기울여야합니다.


http://www.planet-source-code.com/vb/sc ··· %3D64867(새 창으로 열기)

위 링크의 소스에 포함된 Subclass 모듈을 이용하면 Subclassing을 쉽게 적용할 수 있으며 개발환경에서 VB IDE가 강제 종료되는 현상도 크게 줄일 수 있습니다.


HoverControl 소스는 사용자 정의 컨트롤을 이용한 Hover 버튼, MouseOut 이벤트를 가지는 컨트롤 등에 적용하기 위한 기본 구조를 제공합니다.

사용자 삽입 이미지






☞ 본문 출처 : http://www.enjoydev.com/blog/120(새 창으로 열기)

☞ 본인의 글 입니다. 이 글을 다른 곳에 게재하는 경우 본문 출처를 밝혀주시기 바랍니다.

☞ 잘못된 내용이 있는 경우 지적 바랍니다.

2007/05/15 10:36 2007/05/15 10:36