2009년 6월 23일 화요일

프로세스 실행 경로

프로그램이 실행하는 경로를 찾아온다.

 

프로그램이 실행될때 상대 경로를 사용하게 되면 주 실행되는 프로세스에 해당하는 위치점부터 경로가 시작되게 된다.

 

이때 다른 프로세스가 실행되면 기존에 사용하던 프로세스의 경로를 잃게 된다.

 

프로세스가 실행되는 위치점부터 경로를 찾기 위해 사용한다.

 

TCHAR szBuffer[MAX_PATH];
 int nPathLengh = GetModuleFileName(NULL, szBuffer, MAX_PATH);
 CString strTemp = (LPTSTR)szBuffer;
 int nFindcount = strTemp.ReverseFind('\\');
 strTemp = strTemp.Left(nFindcount+1);

상대 경로로 설정된 파일은

 

파일을 읽고 쓸때 실행되는 프로그램의 경로에 따라 파일을 못찾는 경우가 발생한다.

 

그때는 파일이 위치하고 있는 절대경로로 바꾸어 실행하면 된다.

 

실행중인 프로그램의 절대 경로를 얻는다.

 

 

DWORD GetModuleFileName(
  HMODULE hModuleLPTSTR lpFilenmae,  DWORD nSize

);

 

TCHAR szPath[MAX_PATH]; /// 저장될 파일 경로 (실행된 프로그램의 파일 이름까지 저장)
   
    if( !GetModuleFileName( NULL, szPath, MAX_PATH ) )
    {
        printf("GetModuleFileName failed (%d)\n", GetLastError());
        return FALSE;
    }

 

 CString strTemp = (LPTSTR)szPath;

 int nFindcount = strTemp.ReverseFind('\\'); /// 뒤의 마직막에 위치한 파일명까지의 String 수

 strTemp = strTemp.Left(nFindcount+1); /// 왼쪽 부터 짤라내기 (파일 이름 제외)

 

출처 : MSDN 2006, 10


 

출처 : Tong - 공원님의 ┣ ★ 먹고사는일(VC++)통

2009년 6월 19일 금요일

.bat 파일 만들기

.bat 파일은 도스상의 명령어를 조합하여 간편이 실행 하도록 만든 배치 파일

 

파일 만들기

1) 파일 이름.bat 파일을 새로 만든다

2) 필요한 명령을 1)에서 만든 파일에 저장한다.

3) 파일 이름.bat 파일을 실행한다.

얼마나 간단한가

 

사용되는 명령어를 간단히 정리하면

@ 이후 내용은 내용 표시 않됨

@echo off : 실행 내용 표시 않됨

@eocho : 실행 내용 표시

 

@Net Use : 네트워크 딜렉토리 설정

연결 예 :  P: IP\D$  /User:사용자ID /Persistent:NO (연결드라이브:연결할 IP와 드라이브 패스워드/사용자  ID /

연결 해제 예 :  P: IP\D$ /delete (연결드라이브:연결한 IP와 드라이브/ 취소)

 

@Path : 환경 설정

@path = %PATH%; 패스경로명 (기존에 있던 패스 실행 후 래로운 패스경로 실행)

 

출처 : Tong - 공원님의 ┣ ★ 알아두면 편리한 것통

2009년 6월 16일 화요일

drwtsn 닥터와슨 설정

닥터와슨은 셀록홈즈를 따라 다니는 의사의 이름이다.

 

홈즈가 의문의 사건을 해결할때 옆에서 도움도 주고 조언도 해주는 ^^

 

프로그램에도 셀록홈즈의 와슨의사와 같은 역할을 해주는 프로그램이 있다.

 

이프로그램은 exe 파일내용을 검사하여 덤프 또는 오류가 난 펑션이나 파라미터를

 

정리해 파일로 보여준다..

 

약간의 설정만 하면 ^^ 쉽게 사용 가능하다..

 

우선 실행에서 와슨을 실행한다.

 

1. drwtsn32.exe 을 실행

2. 로그파일 경로 및 덤프 경로를 설정한다.

 심폼/스레드 등 선택하고 크래시 덤프 파일을 만든다.

 

3. 실행에서 drwtsn32.exe -i 을 이용하여 설정하면 끝..

 

릴리즈 모드에서도 덤프를 확인 할수 있어서 편하게 확인 할 수 있다.

 

 

 

2009년 6월 12일 금요일

Doxygen 1.5.9 한글 설정

Doxygen 을 한글로 설정하는 방법입니다..

 

기존에 사용하는 1.5.0 또는 1.5.7 버젼은 한글이 잘 나왔는데

 

1.5.9 부터는 한글이 깨지는 경우가 있습니다.

 

기본 설정이 UTF-8 로 되어 있어 그런데요.. UTF-8이 있는 부분을 EUC-KR 로 변환해주면 됩니다.

 

 

1. Export /Project 설정

Doxyfile_encodeing : UTF-8 => EUC-KR 로변경

Output_Language : Korean-en 선택

 

2. Export /Input 설정

Input_Language : EUC-KR 로변경

 

이렇게 설정하면 HTML 로 보는 내용은 한글이 않깨질 꺼여요 ^^

2009년 6월 10일 수요일

2009 부산벡스코 Raillog 물류전

회사 와서 첫번째 출장을 2009년 부산벡스코 Raillog 물류전 (20090203~20090206) 에 갔다왔다.

물론 운영요원으로 갔었다.

 

부산의 벡스코는 서울 코엑스 처럼 전시회 및 행사를 위주로 진행 하는 곳 같았다.

넓은 홀과 지하에 식당까지 ^^ 코엑스보다는 작았지만 쓰임새 있게 만들어 졌다.

 

다만 주변에 아직 공사 하는 곳이 많아 먹고 쉴 만한 곳이 많이 않았다.

 

전철을 타고 해운대 역에서 3정거장 가면 센텀시티라는 역이 있는데 그곳 1번 출구쪽으로 걸어 오면 벡스코로 들어 갈수 있다.

벡스코 전시장 입구

전시장 입구

전시장 입구는 1번 과 2번으로 나뉘어 지는데 1번은 출구 쪽이 가깝고 2번은 입구 쪽이 가깝다. 아침 8시 전에 출근하면서 전경을 찍었다.

 

설치 장비

반송선 PTS

운영 요원으로 가면 조금은 편하게 전시회를 구경할 수 있지 않을 까하는 방심을 했다. 호되게 혼이 났다. 전시회 Open 전에 시스템 점검과 끝나고 마무리 또한 전시회 중간 중간에 문의 사항 대응 ^^ 정말 화장실 갈 시간도 모자를 정도였다.

반송선 PTS

시스템 점검 완료 후

내가 운영 하던 장비가 있던 부스 ^^ Open 하기 직전 한 컷..

반송선 실장비 ^^

 

코레일 부스

코레일 부스 뒷모습

한군데 더 ^^ 회사 장비가 들어가 있는 곳..
KTX 시뮬레이터

벡스코 코레일 전시 시뮬레이터

KTX 시뮬레이터 ^^ 앞으로 내가 만들어야 할것.

코레일에 전시되어 있는 기차.. 생각보다 정교하게 잘 만들어 져있다.

해운대 6월 초의 야경 전시회 끝나고 처음 가는 부산 해운대에서 야경을 보면서

 아직 추운데 사람은 정말 많구나 ^^

마지막 부산을 떠나면서 길고긴 5박 6일의 벡스코 전시회를 떠나면서 역에서 한컷..

 

숙소를 해운대로 잡으면 바다도 구경하고 전시회도 구경하는 좋은 기회가 될거 같다.

 - 참 해운대 숙박비는 이야기 하기 나름인거 같다. 기본 모텔이 4만에서 8만언 수준이고

 - 하급은 3만5천에서 5만언 선

 - 주말에는 만언씩 더받는다고

 

해운대에 가면 해운대 시장 쪽에 꼭 먹어보라는 소고기 국밥이 있다.

전부 원조라고 써있는데 가보면 맛이 비슷비슷하다. 반찬만 틀리게 나온다.

2000 에서 투명 다이얼로그 만들기

Windows2000에서 지원되며, 먼저 아래 방법대로 해보고 안될 경우 MSDN홈페이지에서 최신 SDK를 다운 받으시면
될것입니다.(user32.dll이 최신것이면 될 것 같음)

먼저 필요한 상수들을 정의 하시고,
#define WS_EX_LAYERED 0x00080000
#define LWA_COLORKEY 0x00000001
#define LWA_ALPHA 0x00000002
#define ULW_COLORKEY 0x00000001
#define ULW_ALPHA 0x00000002
#define ULW_OPAQUE 0x00000004

타입선언,
typedef BOOL(WINAPI *SLWA)(HWND, COLORREF, BYTE, DWORD);
위에서 선언한 함수포인터 타입은 실제 투명 윈도우를 만드는 역할을 하는
SetLayeredWindowAttributes 함수를 user32.dll에서 직접 끄집어내서 사용하기 위해서임

그리고 OnInitDialog()정도에서 아래와 같이 기술합니다.

SLWA pSetLayeredWindowAttributes = NULL;
HINSTANCE hmodUSER32 = LoadLibrary("USER32.DLL");
pSetLayeredWindowAttributes=(SLWA)GetProcAddress(hmodUSER32,"SetLayeredWindowAttributes");

HWND hwnd = this->m_hWnd;
SetWindowLong(hwnd, GWL_EXSTYLE,GetWindowLong(hwnd, GWL_EXSTYLE) | WS_EX_LAYERED);
pSetLayeredWindowAttributes(hwnd, 0, (255 * 70) / 100, LWA_ALPHA);

-----------------------------------------

BOOL SetLayeredWindowAttributes(
HWND hwnd, // handle to the layered window
COLORREF crKey, // specifies the color key
BYTE bAlpha, // value for the blend function
DWORD dwFlags // action
);

Requirements
Windows NT/2000: Requires Windows 2000.
Windows 95/98: Unsupported.
Header: Declared in Winuser.h; include Windows.h.
Library: Use User32.lib

하도 오래되서 어데서 출처가 어데인지 잊어 버렸네요 ㅡ.ㅡ;;

출처 : Tong - 공원님의 ┣ ★ 먹고사는일(VC++)통

2009년 6월 9일 화요일

DCom 등록하기

Windows 시작 메뉴의 관리도구 아래 구성요소 서비스를 선택한다.

 



프로그램이 시작되면 왼쪽 트리에서 "구성 요소 서비스" 를 펼쳐

 

"COM+ 응용 프로그램" 에서 오른쪽 버튼을 선택한다.

 


* 새로운 응용 프로그램을 생성한다.




 

만약 아래와 같이 대화형 사용자가 아닌 사용자를 지정하여 사용 가능하다.

다음 사용자를 선택한후 권한에 맞는 사용자를 선택하여 입력한다.


 


생성된 응용 프로그램 내에 "구성요소", 레거시 구성요소", 역할등의 폴더가 생성된다.

 

만약에 기존에 생성된 응용 프로그램에 등록할 예정이면 위 단계를 생략해도 된다.

 

등록할 DLL 파일을 드래그하여 선택한 응용 프로그램의 구성요소에 넣는다.

 



등록이 완료되면 등록된 DCom에 오른쪽 버튼을 눌러 등록 정보를 선택한다.

 


등록정보를 보면 등록한 내용에 대하여 자세히 설명되어 있다.

 

그중에 일반탭의 이미지 옆에 있는 이름은 Web에서 호출하여 사용할 이름이다.

 


이렇게 하면 등록이 완료 된다.

 

마지막으로 등록된후에 DCom을 사용할때 권한이 없다던가 제대로 실행 않되는 현상이 있는데 그거는

 

등록한 DLL의 등록 정보중 보안 탭을 선택하여 "권한 부여" 내부에 선택되어 있는 "구성 요소 수준 액세스 검사 수행"

 

선택 취소하면 된다.

 

 

출처 : Tong - 공원님의 ┣ ★ 알아두면 편리한 것통