2009년 12월 23일 수요일

CD-ROM 외장하드 USB 메모리 자동실행 방지

목적 :  CD ROM 외장하드 USB 메모리 자동실행 방지 하게 하여서 바이러스및 스파이웨어 접근성을 적게 한다.

 

시작->제어판->관리도구->서비스

ShellHWDetection (Shell Hardware Detection)  : 자동 재생 하드웨어 이벤트에 대해 알림을 제공합니다.

 

을 사용 안 함 으로 바꾸고 재부팅한다.

 

http://frank.nextios.com/entry/CD-ROM-외장하드-USB-메모리-자동실행-방지

2009년 10월 30일 금요일

GDIpluse 사용 Image 저장

#include <gdiplus.h>

 

 "image/bmp",
 "image/jpeg",
 "image/png",
 "image/gif"

 

using namespace Gdiplus;

 

saveImage

{

CLSID pngClsid;
 GetFormatClsid("image/jpeg", &pngClsid);

 

 HPALETTE hpal;

///팔레트 설정
 hpal = (HPALETTE)GetStockObject(DEFAULT_PALETTE);
 Bitmap bitmap(hbitmap,hpal);

 

/// image 저장

Gdiplus::Status status = bitmap.Save(path, &pngClsid, NULL);

}

 

/// 저장 데이터의 format 설정

int GetFormatClsid(const WCHAR* format, CLSID* pClsid)

{

UINT  unImageNumber = 0;
 UINT  unImageSize = 0; 

 ImageCodecInfo* pImageCodecInfo = NULL;

/// Image 크기
 GetImageEncodersSize(&unImageNumber, &unImageSize);
 if(unImageSize == 0)
  return -1;

/// Image 속성

 pImageCodecInfo = (ImageCodecInfo*)(malloc(unImageSize));
 if(pImageCodecInfo == NULL)
  return -1;

 GetImageEncoders(unImageNumber, unImageSize, pImageCodecInfo);

 for(UINT uCount = 0; uCount < unImageNumber; ++uCount)
 {
  if( wcscmp(pImageCodecInfo[uCount].MimeType, format) == 0 )
  {
   *pClsid = pImageCodecInfo[uCount].Clsid;
   free(pImageCodecInfo);
   return uCount;
  }   
 }

 free(pImageCodecInfo);
 return -1;

 

}

2009년 10월 28일 수요일

CString => char* CString => WCHAR*

VC++ 2008에서 유니코드 사용을 선택하면

(LPTSTR)(LPCTSTR) 또는 GetBuffer를 이용한 변환 이 않된다.

 

그럴때는

char* 변환

char chrPath[MAX_PATH]

WideCharToMultiByte(CP_ACP, 0, CString, -1, chrPath, sizeof(ch), NULL, NULL );

 

이걸 사용 ^^

 

 

WCHAR* 변환

WCHAR m_wPath[MAX_PATH];
 MultiByteToWideChar( CP_ACP,  0, strFile, int(strlen(strFile) + 1),  m_wPath, sizeof(m_wPath) / sizeof(m_wPath[0] ));

 

또는 : wsprintf(chrPath, L"%s", CString);

 

내용은 찾아보면 다나옴..

2009년 10월 8일 목요일

CListctrl Report 에서 열간의 높이 조절 하는 방법

간단히 CListctrl Report 에서 열간의 높이 조절 하는 방법

 

Image 크기를 이용하여 행간의 높이를 조절 한다.

 

         CImageList m_image;
    ....
         CListCtrl &m_list=GetListCtrl();
    m_image.Create(1,20,ILC_COLORDDB,1,0);
    list.SetImageList(&m_image,LVSIL_SMALL);

 

출처: http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=51&MAEULNO=20&no=2731

2009년 8월 20일 목요일

System Millissecond

시스템 Millsec time 얻기

 

 SYSTEMTIME systemTime;
 FILETIME fileTime;
 GetLocalTime(&systemTime);
 SystemTimeToFileTime(&systemTime, &fileTime);
 int nMillSec = systemTime.wMilliseconds;
 TRACE(_T("###### start %d \n"), nMillSec);

2009년 7월 29일 수요일

CString ASCII 변환 Key 찾기

 

CString을 한글자씩 잘라내 char* 로 변환 __toascii를 사용 ASCII로 변환

Key 13의 수량을 찾아 Enter key 를 확인한다.

 

CString strcomment;

 

for(int nSize = 0 ; nSize < strcomment.GetLength() ; nSize++)
 {
   CString strTemp = strcomment.Mid(nSize, 1);
   char* chrTemp;
   chrTemp = (LPSTR)(LPCTSTR)strTemp;
   int iAscii = __toascii(*(chrTemp));
   if(iAscii == 13)
    nCount = nCount+1;
 }

2009년 7월 28일 화요일

CDC 배경 삭제 이미지

 

dc 의 특정 색을 배경으로 삭제하고 사용 할 때

 

/// CRect rect  : DC rect

/// barSize : memDC. Size

/// COLOREEF : rgbBKColor (RGB 0, 0, 0) 배경 색상

 

 

pDC->TransparentBlt(rect.left, rect.top, rect.width(), rect.hight(), &memDC, 0, 0, barSize.cx, barSize.cy, rgbBKColor);

CDC bitmap Image 사용

DC에 그린 내용을 bit map Image 로 변환하여 제어한다.

 

CDC* pDC = GetDC(); /// 화면 DC

 

CDC memDC;

memDC.CreateCompatibleDC(pDC);  /// 메모리 DC

 

HBITMAP memBM = ::CreateCompatibleBitmap(pDC->m_hDC, stSize.x, stSize.y); /// Bitmap 생성

SelectObject(memDC, memBM);  /// 메모리 DC 에 Bitmap 적용

 

memDC.FilsolidRect(0, 0, stSize.x, stSize.y, RGB(200, 200, 200) ); /// 메모리 DC 에 그리기

 

pDC->SetStretchBltMode(COLORONCOLOR);  /// Color 변경없이

/// 이미지 늘리기

pDC->StretchBlt(10, 10, stSize.x-10, stSize.y-10, &memDC, 0, 0, m_stSize.x, stSize.y, SRCCOPY  );

 

/// 생성 객체 소멸

DeleteObject(memDC);

DeleteObject(memBM);

ReleaseDC(pDC);

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 - 공원님의 ┣ ★ 알아두면 편리한 것통

DCom 이용하기

SAP 에서 RFC 통신을 이용하여 Web와 데이터를 공유하도록 지원한다.

 

Web와 데이터를 공유하는 방식중 jdk 를 이용하는 방법과 DCom connector 을 이용하는 방법

 

jdk를 이용하여 JAVA 또는 C#이나 .net을 이용하는 방법이 있는데

 

여기서는 DCom을 이용하는 방법을 정리한다.

 

SAP 640 이하버전은 SAP 싸이트를 이용하여 DCom connector를 다운 받아

 

Dll을 생성하여 사용할수 있다.

 

Dcom connector 생성 방법은 따로 설명할 예정이다 (알아두면 편리한것)

 

여기서는 web와의 연결 방법에 대하여 이야기 하겠다.

 

DCom Connector를 사용하기 위해 가장기본이 되는 거는 Web 서비시를 하는 곳에

 

SAP GUI가 깔려 있어야 편하다.

 

우선 Dcom connector에서 생성한 Dll 파일을 구성요소 서비스에 등록한다 (이부분도 따로 설명 하겠다 - 알아두면 편리한것)

 

등록한 Dcom connector의 이름을 이용하여 객체를 생성한다.

 

객체 생성은 기존의 방식과 동일하나 파라미터로 넘겨주는 내용만 맞추면 된다.

 

      Set obj = server.CreateObject("구성요소 서비스에 등록된 DCom connector 이름")

      obj.Destination = "연결한 SAP 서버 이름" // 또는 IP

      obj.Client = "Client 번호"

      obj.UserID = "RFC 통신을 위한 ID"

      obj.Password = "UserID 의 암호"

      obj.Language = "KO" // 사용할 언어

 

위 내용의 대부분은 SAP을 연결하기 위한 SAP GUI에 설정된 내용과 동일하다.

 

이제 생성된 객체를 이용하여 특정의 Function을 호출하는 방법을 보면

 

        Call obj.Zxxxx_xxxx(a, b, c, d, return, sA, Table) // Zxxxx_xxxx 호출 function, a, b, c, d 전송 파라미터, return, sA 구조체, Table 필요 데이터

 

Call 을 이용하여 function을 호출하면 바로 데이터를 얻을수 있다. 참 간단하지 않은가.

 

여기서 주의 할 점이 있다. Table 및 전송 또는 리턴되는 데이터 형을 어떻게 선언할 것인가.

 

Table은 RecodeSet으로 설정하여야 한다.

 

METADATA TYPE="typelib" FILE="C:\program Files\Common Files\System\ado\msado15.dll

 

RecodeSet으로 선언하기 위해서는 반듯이 METADATA TYPE가 선언되어 사용해야 한다.

 

        Dim table   // table 선언

        Set table = Server.Create("ADODB.Recordset")  // 객채 생성

        obj.DimAS "Zxxxx_xxxx", "Table", table   // 형 변환

 

DimAS라는 Function 이 나온다 이전에 생성한 Dll의 .h 파일을 보면 DimAS는 Zxxxx_xxxx Function 에서 사용하는

 

Table 이라는 형태로 table의 형을 변환하여 보내준다.

 

여기서 주의 해야할 점은 "Zxxxx_xxx" 와 "Table"은 SAP에 정의된 이름과 동일해야 한다.

 

그럼 구조체는 어떻게 정의 할 것인가. 사실 구조체는 따로 정의할 필요가 없다. Dim 으로 선언하여 사용하면 된다.

 

다만 구조체 내부의 데이터를 읽어 올때만 틀려진다.

 

위 코드 내용중 sA를 구조체를 선언하였다.

 

sA의 값을 받기 위해서는

 

         Dim sA

         ....

         ....

         response.write(sA("구조체 내부 변수명"))

 

이런식으로 받아 오면 된다.

 

전체 Code

 

      Dim table, obj, a, b, c, d, return, sA

 

     Set obj = server.CreateObject("구성요소 서비스에 등록된 DCom connector 이름")

      obj.Destination = "연결한 SAP 서버 이름"

      obj.Client = "Client 번호"

      obj.UserID = "RFC 통신을 위한 ID"

      obj.Password = "UserID 의 암호"

      obj.Language = "KO"

 

      Set table = Server.Create("ADODB.Recordset")

      obj.DimAS "Zxxxx_xxxx", "Table", table  

 

      a = "a"

      b = "b"

      c = "c"

      d = "d"

      Call obj.Zxxxx_xxxx(a, b, c, d, return, sA, table)

     

      response.write(return)

      response.write(sA("aa"))

      response.write(sA("bb"))

      response.write(sA("cc"))

      response.write(table("aa"))

      response.write(table("bb"))

      response.write(table("cc"))

 

여기서 주의할 점은 Table 에 데이터가 하나도 없으면 table에는 NULL 이 넘어오기 때문에

 

table에 대이터가 있는지 없는지 먼져 Check 하도록 return 에 Table 데이터의 유무 또는 데이터 수량을 리턴하여 사용하는 것이 편하다.

 

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

2009년 6월 1일 월요일

CSplitterWnd 분할 윈도우 만들기

다시 개발을 시작했다.

개발 않할때는 손가락이 근질 거려 뭐라도 하고 싶었는데 ^^

막상 시작하니 ㅋㅋ 여전이 IT 개발은 빡세게 돌아가고 있구나... 후회가 된다. ㅋㅋㅋ

 

CFormView 에서 CSplitterWnd 사용 화면 분할

/// 물론 h 파일에는

///  CSplitterWnd m_wndSplit;
///  CSplitterWnd m_wndBottomSplit;

/// 분할 Wnd 선언

/// CMainFrame에서 생성
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{

   m_wndSplit.CreateStatic(this, 6, 1); ///  가로 6개 분할

  m_wndBottomSplit.CreateStatic(&m_wndSplit, 1,2, WS_CHILD|WS_VISIBLE|WS_BORDER, m_wndSplit.IdFromRowCol(5, 0) );

  /// 마지막 6번째 화면을 가로로 분할 (화면은 0부터 Count)

 

m_wndSplit.CreateView(0,0,pContext->m_pNewViewClass, CSize(rect.Width(), 60), pContext);
 m_wndSplit.CreateView(1,0,RUNTIME_CLASS(CMiddileFrameWnd), CSize(rect.Width(), 200), pContext);

 m_wndSplit.CreateView(2,0,RUNTIME_CLASS(CKillorFormView), CSize(rect.Width(), 60), pContext);
 m_wndSplit.CreateView(3,0,RUNTIME_CLASS(CKillorFormView), CSize(rect.Width(), 60), pContext);
 m_wndSplit.CreateView(4,0,RUNTIME_CLASS(CKillorFormView), CSize(rect.Width(), 60), pContext);

 

 m_wndBottomSplit.CreateView(0,0, RUNTIME_CLASS(CKillorFormView), CSize(rect.Width()/2, nHight), pContext);

 m_wndBottomSplit.CreateView(0,1, RUNTIME_CLASS(CKillorFormView), CSize(rect.Width()/2, nHight), pContext);

 

 SetActiveView((CView *) m_wndSplit.GetPane(0,0));

 return TRUE; // 완료 반환

// return CFrameWnd::OnCreateClient(lpcs, pContext); 주석처리

}

 

//// 어케 이쁘게 분할 되었나? ^^ CSize를 수정하면 초기 크기 조절도 가능 ^^

/// RUNTIME_CLASS 에서 View Class  뿐 아니라 CFrameWnd 를 생성하여 Toolbar도 사용


/// CFrameWnd  사용시

/// CFrameWnd의 Client 생성시 view point 생성

BOOL CMiddileFrameWnd::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
 CMiddileFormView *pview;

 // Create a context.
 CCreateContext context;
 pContext = &context;

 // Assign custom view.
 pContext->m_pNewViewClass = RUNTIME_CLASS(CMiddileFormView);

 // Create the view.
 pview = (CMiddileFormView *) CreateView(pContext, AFX_IDW_PANE_FIRST);
 if (pview == NULL)
  return FALSE;

 // Notify the view.
 pview->SendMessage(WM_INITIALUPDATE);
 SetActiveView(pview, FALSE);

 return TRUE;//CFrameWnd::OnCreateClient(lpcs, pContext);
}

 

출처 - http://www.codeproject.com/ 


 

2009년 5월 28일 목요일

Windows 명령어 (2000)

1. Internet Explore 6.0 레지스트리에서 삭제하기 
 Internet Explore에 문제가 생겼을때 사용하시면 좋습니다.

작업하기 전에 내보내기 기능으로 레지스트리 백업을 먼저 하세요

 HKEY_LOCAL_MACHINE / SOFTWARE / Microsoft / Active Setup / lnstalled Components /

 

{89820200-ECBD-11CF-8B85-00AA005B4383} 의 키를 삭제해 주세요.

 

삭제하고 나서 다시 Explore를 설치하시면 됩니다.

 

 [주의]Internet Explore 를 삭제할때는 Service Pack 1을 설치하신 분들은 Service Pack 1을 제거하시고
           Internet Explore를 삭제해야 합니다. Service Pack 1을 삭제안하시면 오류가 난다고 합니다
 
 
 
 2. Windows 창 뜨는 속도 향상 
 Windows의 창을 최대화, 최소화 시켰을때 서서히  나타나는 효과를 애니메이션 효과 라고 하는데

레지스트리에서 그걸 제거할 수 있습니다.

기본적으로 페이드효과와 스크롤효과의 두가지를 Windows XP에서 사용할수 있습니다.

이것을 삭제해 주면 창이 뜨는 속도가 빨라집니다. 

HKEY_CURRENT_USER / Control Panel / Desktop / WindowMetrics에서

 

오른쪽의 MinAnimate값을 더블클릭 하세요.

MinAnimate값을 더블클릭하면 문자열 편집창이 나오는데 값 데이터에 0을 넣어주면 됩니다. 
 
 
 
 3. 불필요한 시작프로그램 줄이기 
시작프로그램은 Windows의 부팅과 동시에 실행되기 때문에 부팅속도가 현저히 늦어지고

메모리를 많이 차지하는 원인이 되기도 합니다.

또 시작프로그램이 많으면 메모리가 부족하게 되어 리소스 부족으로 에러가 발생하기도 합니다.

HKEY_LOCAL_MACHINE / SOFTWARE / Microsoft / Windows / CurrentVersion / Run

 

HKEY_CURRENT_USER / SOFTWARE / Microsoft / Windows / CurrentVersion / Run

위의 두개를 클릭하신 다음 오른쪽창에 보시면 시작프로그램이 등록되어 있을 겁니다.

 

아무거나 지우면 부팅에 문제가 생길 수 있으니 주의하시고 확실하지 않은 값은 절대로 삭제하지 마십시요.


 
 
 
 4. 웹 사이트의 암호지우기 
가끔 인터넷을 이용하다보면 로그인할때 암호를 저장할 것인지를 물어오는 사이트가 있는데

아주 조심 하셔야 합니다.

아무생각없이 예를 눌렀다간 암호를 크래킹당할 수 있습니다.

이런 문제를 미연에 방지 하기 위하여 레지스트리를 편집해 암호 노출을 막아야 합니다.

HKEY_CURRENT_USER / Software / Microsoft / Windows / CurrentVersion / Internet / Settings 로 들어가

 

오른쪽 창에서 마우스 오른쪽 버튼을 누르고 새로만들기-DWORD 를 선택하세요.

 

값이 나오면 이름을 Disable Password Caching으로 수정.

 

새로 만든 Disable Password Caching 값을 더블클릭하여 나타나는 DWORD 값 편집창에서

 

값 데이터에 1을 입력하고 단위는 16진수로 설정을 해야 합니다.
 
 
 
 5. 시스템 오류시 자동으로 재부팅되는 현상 
 윈도우가 시스템 오류시 자동으로 재부팅되는 현상을 제어하는 방법입니다

   제어판 - 시스템 - 고급 - 시작및 복구 - 시스템오류 - 자동으로 다시 시작에 체크를 없애줄것
 
 
 
 6. 무응답 응용프로그램 타임아웃 시간줄이기 
 응용프로그램을 사용하다 보면 정지하여 응답이 기다리게 되는 시간이 있습니다.

 이 타임아웃시간을 조절해서 윈도우 정지시간을 줄여 보세요

  시작-실행-regedit - HKEY_CURRENT_USER - Control Panel - Desktop - HungAppTimeout

  다음 값이 기본적으로 5000(5초)으로 설정되어있을 것이다. 이 값을 1000 (1000 = 1초)로 설정해줍니다
 
 
 
 7. 제한된 다운로드 파일개수 늘리기 
 익스플로러를 이용하는 경우에 일반적으로 하나의 서버에서 한번에 2개의 파일만 다운로드 할수 있습니다.

개수를 원하는 만큼 늘리는 편집방법입니다.

HKEY_CURRENT_USER / Software / Microsoft / Windows / CurrentVersion / Internet

 

Settings 로 들어가 오른쪽 창에서 마우스 오른쪽 버튼을 누르고 새로만들기-DWORD 를 선택하세요.

 

값이 생기면 이름을 MaxConnectionsPerServer 로 수정합니다.

 

새로 만든 MaxConnectionsPerServer 값을 더블클릭하여 나타나는 DWORD 값 편집창에서 값 데이터에

 

원하는 다운로드 파일의 갯수를 입력하고 확인버튼을 누릅니다. 아래사진에서는 5개를 선택했네요.
 
 
 
 8. 윈도우 자동 로그인 방법 
 HKEY_LOCAL_MACHINE\SOFTWARE - Microsoft - Windows NT - CurrentVersion - Winlogon

    문자열 값:

   AutoAdminLogon ----> 1

   DefaultUserName ----> UserName(로그인 계정)

   DefaultPassword ----> Password(로그인 계정의 패스워드)          시스템을 재시동 합니다
 
 
 
 9. 느려진 인터넷속도 향상시키기 
 인터넷 속도가 점점 느려지는거 같으면 TCP/IP가 사용하는 버퍼크기를 늘려보는 것도 하나의 

방법이 될 수 있습니다.

HKEY_LOCAL_MACHINE / System / CurrentControlSet / Services / lanmanserver /

 

parameters 로 가서 오른쪽 창에서 마우스 오른쪽 버튼을 클릭하여 새로만들기-DWORD를 선택합니다.

 

새 값이 만들어지면 값의 이름을 SizReqBuf 로 수정합니다

 

새로 만든 SizReqBuf 값을 더블클릭하면 나오는 DWORD 값 편집창에서 단위를 10진수로 설정하고

 

값 데이터에 14596이라고 입력한 후 확인버튼 누릅니다.


 
 
 
 10. 프로그램 설치시 에러 
" windows가 안전모드에서 실행중이거나 windows installer가 제대로 설치되지 않았습니다 "

위의 메시지 에러가 뜨면서 설치가 안될는 경우가 있습니다.

이런 현상 일어나는 분들은 제어판 >관리도구>서비스의 Windows Installer 항목을 더블클릭해 보시면

나오는 속성창에서 실행파일경로를 유심히 살펴 볼 필요가 있습니다.

원래 \WINDOWS\System32\msiexec.exe /V 로 되어 있어야 할 경로가

어떤 이유에선지 다른 곳으로 지정이 되어 있는 경우가 있습니다

실행시키면 Installer 버전은 그대로 2.0.2600.1106으로 복구됩니다.

System32폴더의 msi.dll파일을 오른쪽버튼으로 속성검사해보시면 확인하실수 있습니다.


 
 
 11. 인터넷 속도 높이기 
 [트리]  : HKEY_CURRENT_USER/Sofware/Microsoft/InternetExplorer/Setting

 [이름]  : DontUseDNSLoadBalancing

 [속성]  : 이진값

 [ 값 ]  : 01 00 00 00
 
 
 
 12. DOS모드에서 XP설치하는 방법  
XP cd의 i386아래에 있는 winnt.exe라는 프로그램이 있는데  dos모드에서 XP를 설치하는 프로그램이다.
도스모드 부팅시 smartdrv.exe 프로그램을 실행후 XP를 설치하면 더 빠른 속도로 진행된다.

도스모드 XP인스톨방법에 질문이 많아서 쉽게 정리해본다.
1.Win98/me부팅디스켓이나 XP에서 포맷시 만들 수 있는 Dos부팅 디스켓으로 부팅.
2.smartdrv.exe를 실행.
3.윈도우XP CD의 winnt.exe가 있는 위치를 지정.
4.실행한다.


그러면 윈도우가 알아서 설치 할 겁니다. 푹 쉬세요
 
 
 
 13. 인터넷 로딩속도 향샹법 
1) DNS캐쉬수정으로 브라우저속도 높이는 방법 입니다


HKEY_LOCAL_MACHINE\System\CurrentControlset\Services\Dnscache\Parameters에서
다음항목의 값을 입력합니다.
(없으면 새로 오른쪽 마우스 클릭하여 새로만들기->DWORD값-10진수로 만들면 됩니다.)
    CachehHashTableBucketSize---->1
    CachehHashTableSize---------->384
    MaxCacheEntryTtlLimit-------->64000
    MaxSOACacheEntryTtlLimit---->301

2)HKEY_USER\.Default\Software\Microsoft\Windows\CurrentVersion


\InterSettings에서 새로만들기-->DWORD값을 다음과 같이 만든다(값은 16진 수로 선택한다)
    MaxConnectionsPerSever------>20
    MaxConnectionsPer1_0Sever--->20

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\InterSettings에서도
    위와 같이 값을 만든다
    MaxConnectionsPerSever------>20
    MaxConnectionsPer1_0Sever--->20

3)HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
    \Explorer\RemoteComputer\NameSpace
    에서 {D6277990-4C6A-11CF-8D87-00AA0060F5BF} 폴더 자체를 삭제


 
 
 14. 오류 보고(MS전송)창 나타나지 않게 하기  
인터넷을 하다보면 에러가 나서 오류를 보고 한다고 뜨지요.
그걸 해결해 보겠습니다.

1) 시작->제어판->성능 및 유지 관리->시스템 을 선택 합니다.


2) 시스템 등록정보창이 나타나면 [고급]탭에서 가장 아래에 있는 오류보고 버튼을 클릭을 합니다.


3) 오류보고 대화상자에서 `오류 보고 사용 안 함`을 선택하고 확인버튼을 누르면 끝.


 
 
 15. 폴더창 속도향상하기 
제어판에서 ``폴더옵션``을 실행한 다음, ``보기`` 메뉴탭을 선택하고

``고급설정`` 부분에서 ``폴더 및 바탕화면 항목에 팝업 설명 표시``와

``압축된 파일과 폴더를 다른 색으로 표시`` 그리고 ``독립된 프로세스로

폴더창 실행``의 체크를 해제하여 속도 향상


 
 
 16. 윈도우 IME 감추기 
 화면 우측 하단에 있는 IME(한 영 변환버튼) 을 감추려면

트리 : HKEY_CURRENT_USER\Control Panel\Input Method

이름 : Show Status       속성 : REG_SZ 값 : 0
 
 
 
 17. <시작>에서 도움말메뉴 삭제하기 
도움말 항목을 안보이게하기 위해서는 아래와 같은 단계를 거친다
1.시작-실행-REGEDIT

2.[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer]

이 경로에서 [새로만들기]에서 [DWORD값]을 하나 만들고 이름을 [NoSMHelp]으로 한다

3.더블 클릭해서 데이터 값을 1로 지정하고 재부팅하거나 로그오프하면 설정이 적용된다

4.복원하시려면 값을 0으로 한다


 
 
 18. 멀티부팅 끄는 방법 
 윈도우 2000은 최초로 유니코드를 채택한 운영체제입니다.

그러므로 별도의지역판이 아니어도 60개국의 언어를 표시할 수 있는데..

 위치 : Control Panel \ Regional Options

방법 : 1. General탭에 Your locate(lacation)과 Language settings for the system을 추가하려는 국가로 선택합니다.

(locate는 운영체제가 사용하는 날짜, 시간, 숫자 표기법 같은걸설정하는 것이고, Lang...는 윈도우에서 사용할 언어)

 2. Input Locales에서도 그 국가의 언어를 Add버튼을 클릭하여 선택 하면됩니다.

 3. 참고로 언어팩은 윈도우 2000 CD의 i386\LANG에 있습니다.
 
 
 
 19. 윈도우 창이 뜨는 속도 높이기 
윈도우즈의 속도를 조금이라도 높이고 싶은 사람들에게는 창의 최대화 , 최소화에 따른 애니메이션 효과도
속도를 저하 시키는 원인이 될 것이다. 여기서는 그 속도를 높여주는 방법을 소개한다.


*레지스트리 편집기를 실행한다.
변경 할 사항: HKEY_CURRENT_USER\Control Panel\desktop\windowmetrics로이동 우측 화면에서
마우스 오른쪽 버튼을 누른후 ``문자열 값``을 선택하고 MinAnimate라고 입력한다.
그다음 이 값을 더블클릭하여 값을 ``0``으로 설정 한다.
이것으로 창이 열리거나 닫힐때 최대화 , 최소화 애니메이션 표시가 되지 않아 창의 표시속도가 눈에 띄게 빨라진다.


 
 
 20. L2캐쉬 지정으로 속도향상 시키기  
Secondlevel Datacache(L2Cache) 는 CPU의 작업속도에 매우 중요한 기능을 담당한다.
펜3코퍼마인에 내장된 CPU와 같은 속도로 동작하는 이 빠른 L2캐쉬에 데이타를 일정량 올려놓을 수 있기 때문에

상대적으로 엄청 느린 메모리로만 데이터를 처리할때보다 작업효율이 더욱 뛰어날 수 밖에 없다.

일반적으로 xp가 cpu와 L2Cache의 값을 자동으로 인지하게 된다. 그러나, 종종 xp가 이것을 할 수 없을 경우가

발생한다. 그래서 cpu의 작업속도를 향샹시키기 위해서는 레지스트리 값을 조작해줘야 한다.

1.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory
Management에서 오른쪽에 SecondLevelDataCache항목을 고른다
2.자신의 cpu에 맞는 10진수 값을 다음과 같이 수정한다.

AMD Duron → 64입력
CeleronA/celeron2 → 128입력
PII mobile/PIII E(EB)(칩형태 256K L2캐쉬내장 펜3 코퍼마인)/P4/AMD K6-3/AMD THUNDERBird/Cyrix III → 256입력
AMD K6-2/PII/PIII katmai(초기 카트리지형식 펜3 카트마이)/AMD Athlon → 512입력
PII Xeon/PIII Xeon → 1024입력

3. 재시작한다.


 
 
 21. 윈도 xp 시작페이지 고정하기 
인터넷 익스플로러의 시작페이지가 바뀌는 경우가 있습니다.

시작페이지를 고정시는 방법을 알려드리겠습니다.

한번 바꾸어 놓기만 하면 다른 어떤 프로그램(성인사이트 광고같은거..)도 전혀 바꿀 수가 없습니다..

1. 먼저 홈페이지로 쓸걸 지정해주시고요.. (도구메뉴 - 인터넷 옵션에서 지정해 주세요.)

2. 시작 - 실행에 gpedit.msc 입력 후 확인 누르면 그룹정책창이 뜨는데

3. 거기서 사용자구성 - 관리탬플릿 - 윈도우 구성요소에 보시면

4. 인터넷 익스플로러가 있습니다...(영어로 쓰여있음)

5. 거기서 옆에 + 를 누르지말고 익스플로러 폴더를 클릭하시면

6. 우측창에 홈페이지를 변경할수없음이 있어요..

7. 거기에 마우스 우클릭 - 등록정보에 " 사용 " 으로 체크해 주시면 시작 페이지가 고정이 됩니다..

다시 바꿀일이 있으면 사용안함으로 하신담에 바꾸시면 되겠죠..

이렇게 해놓으시면 죽었다 깨도 절대 시작페이지가 바뀌지 않게 됩니다.

윈도 2000 이나 XP Pro 만 소용있습니다..
(죄송합니다.. 윈도 XP 홈버젼은 되지 않습니다..그룹정책이 아예 안깔려 있꺼든요..)

단, EasyWinCleaner 프로그램의 경우 직접 건드리는 것이 되어 이 프로그램을 설치하는 경우는 해당 사항이 없습니다.

그래서 전 절대 EasyWinCleaner 안씁니다..

편하고 좋은 프로그램입니다만, 시작페이지가 바뀌어서요..


 
 
 22.빠른 웹서핑을 위한 인터넷 익스플로러 최적셋팅법 
도구 - 인터넷 옵션 - 고급에서 다음과 같이 해 보세요.


탐색에서 "예약시 동기화할 오프라인 항목 표시" 해제 (선택하지 않음)


특정파일이(이름이 한글로 된 파일) 안열린경우 " URL을 항상 UTF-8로 보냄" 해제 (선택하지 않음)


탐색에서 "프록시 연결을 통해 HTTP 1.1 사용" 해제 (선택하지 않음)


연결항목 랜설정항목에서... 자동구성과 프록시 서버를 모두 해제 (선택하지않음)


 
 
 23. msconfig에서 필요없는 서비스항목 해지하여 부팅속도 올리기 
 (그만큼 윈도우시작시 불필요한 인식을 안해서 좋음....)


Automatic Updates
자동업데이트 기능. 해제하시면 수동으로만 업데이트 됩니다.
Help and Support
도움말 및 지원센터... 윈도우 도움말이 불필요하다고 여겨지면 해제.
NetMeeting Remote Desktop Sharing
인터넷외의 인트라넷, 원격제어등을 사용하지 않는다면 해제
Performance Logs and Alerts
원격제어시 원격 컴퓨터의 정보등을 수집하는 서비스... 원격제어 사용하지 않는다면 해제
Portable Media Serial Number
컴퓨터에 연결된 휴대용 음악장치의 시리얼넘버검색(-_-;)무슨말인지 필자도 이해 안되지만...
아무짝에 쓸모없어 보임...
Secondary Logon
다른 계정을 사용하지 않는다면(단독으로 사용하는 컴퓨터라면) 해제.
Smart Card Helper
플러그 앤 플레이를 지원하지 않는 레거시 스마트 카드를 지원하도록 설정.
레거시 스마트 카드를 사용하지 않는다면 당근 해제.
System Restore Service
시스템 복원 서비스... 시스템 복원 사용하지 않는다면 해제.
Telnet
원격사용자가 이 컴퓨터에 로그온하여 프로그램을 실행하고 UNIX 및 Windows 기반
컴퓨터를 포함한 다양한 TCP/IP 텔넷 클라이언트를 지원. 말그대로... 이런 기능을 사용하지 않으려면 해제.


 
 
 24. 익스플로러 시작시 풀스크린으로 항상 시작  
1. HKEY_CURRENT_USER\Software\Microsoft\internet Explorer\Main

2. Main 항목 오른쪽 창에서 FullScreen 항목을 찾으세요.


3. 이젠 FullScreen 를 더블 클릭해서 no를 yes 바꿉니다.


4. 레지스트리 프로그램을 종료 후 재부팅 하시면 됩니다.


 
 
 25. 멀티부팅 메뉴 없애기  
우선 수정하기 전에 부팅 디스켓, backup용 디스켓을 만들어 두세요

 만약 잘못되었을 때를 생각해서요

boot.ini " 파일은 숨겨진 화일이라서 탐색기의 메뉴바에 있는

"도구" 클릭하시고 "폴더옵션" 선택-> "보기" 선택-> "숨김 파일 및 폴더 표시 안함" 을 "숨김 파일 및 폴더 표시" 로


수정해 주시고 재 부팅하면 c:\안의 " boot.ini "이 보입니다.

우선 a: 드라이브에 backup을 받아 놓으시고 부팅 디스켓으로 다시 부팅합니다.

부팅이 되면 backup받은 boot.ini 화일을 아래와 같이 수정 하세요.

◆ 기존 boot.ini 화일 내용

[Boot Loader]

timeout=10
Default=C:[Operating Systems]
multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="Microsoft Windows XP Home Edition" /fastdetect
C:\="Microsoft Windows Millennium"

◆새로바꾼 boot.ini 화일 내용

[Boot Loader]

timeout=0
Default=C:[Operating Systems]
C:\="Microsoft Windows Millennium"

다 바꾸셨으면 c:\안에 " boot.ini "를 카피하고 재 부팅 하면 됩니다
 
 
 
 26. DMA 설정을 반드시 해야 하는 이유/조건 
하드디스크와 시디드라이브를 DMA 모드로 설정하는 것이 좋습니다.
디스크의 성능을 높여주기 때문이지요

DMA 모드를 이용하기 위해선 메인보드 지원여부나 운영체제 지원여부,

그리고 드라이브 자체 최대지원등 조건이 맞아야 합니다

메인보드 바이오스 상에서 DMA 설정을 확인한후 사용하는 메인보드 칩셋에 따라 드라이버를 설치해야 합니다

예를 들어 인텔사의 칩셋을 사용하는 메인 보드는 Intel Application Accelerator 프로그램을,

VIA 칩셋을 사용하는 메인 보드는 VIA 4-in-1을 사용하셔야 합니다.


 
 
 27. BootVis 를 이용한 부팅 최적화  
BootVis는 MS에서 제공하는 부팅최적화프로그램입이다.

1. Trace - Next Boot + Driver Delays를 선택합니다.


2. OK 버튼을 누르면 자동으로 재부팅이 이루어 집니다. (재부팅후 기다리시면 BootVis 가 자동으로 실행됨)
그래프를 통해 부팅소요시간에 대한 자세한 설명이 나옵니다.

3. 이번엔 최적화를 위해서 Optimize System을 선택하고 지시에 따라 하시고 재부팅후 BootVis 최적화를

마칠 때까지 기다리셔야 합니다. 시스템에 따라서 반응 및 작업시간이 길어 질 수 있습니다.


 
 
 28. 윈도우XP정품인증 받는법  
 실행에서regedit를 치고 다음에 경로로 이동합니다

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\WPAEvents 


보면oobetimer라는게있을 것입니다


그걸더블클릭하면편집이뜨는데첫째줄에보면0000하고 몆칸띄웠고그다음숫자하고영어하고섞여있는게보일겁니다


멘앞에ca를붙여주면 끝


이제 oobe/msoobe /a를 실행하여  정품인증 됐다고 나오는지 보세요.  나오면성공

방법1. jjangwarez.com 유틸에 가시면 xp wow 버젼에 인증 받을 수 있게 크랙과 케젠이 함계 동봉돠어 있습니다.

그걸 깔면 되구요. 설명서를 잘읽어 보고 설치하면 됩니다.


방법2.xp인증 크랙 다운 받아 설치하세요.(단, 홈에디션만 가능하며 xp까시고 마지막에 크랙설치)

두가지 방법 다 해서 설치 ok!
 
 
 
 29. 구버전 프로그램을 윈XP에서 쓰기 
윈9X 에서 쓰던 프로그램인데 윈XP 에선 못쓴다고 하는 프로그램들을 쓸 수 있게 하는 방법인데
모든 프로그램이 작동하지 않을 수 있습니다

먼저 9X용 실행파일을 선택하시구요
오른쪽키를 눌러서 속성을 클릭합니다
그래고 호환성탭을 클릭하세요

호환성 모드에서 다음에대한 호환성모드로 쓰시고자하는 프로그램을
실행 이체크박스를 클릭하여 목록에서 해당운영체제를 선택합니다.
그리고 디스플레이설정에서 해당 프로그램 실행되는 해상모드를 선택합니다.
마지막으로 확인을 누른후 해당 프로그램을 실행하시면 됩니다.
 
 
 
 30. 오류보고 창 안뜨게 하기 
1) 시작 - 제어판 - 성능 및 유지 관리 - 시스템

2) 시스템 등록 정보창의 [고급]탭에서 가장 아래에 있는 오류보고 버튼을 클릭한다.

3) 오류 보고 대화상자에서 `오류 보고 사용 안함`을 선택 하고 확인을 클릭 하시면 됩니다.

조금만 노력하면 컴퓨터가 쉬워집니다
 

문득 IME가 보기 싫어 졌다는 생각이 들어 여기저기 뒤지다 찾아낸 이야기 ..


출처 : http://blog.naver.com/hotfeel7?Redirect=Log&logNo=150000574420 

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

2009년 5월 25일 월요일

모니터 위치 확인

EnumDisplayMonitors(NULL, NULL, MyInfoEnumProc, 0);

BOOL CALLBACK MyInfoEnumProc(HMONITOR hMonitor, HDC hdcMonitor, LPRECT lprcMonitor,
LPARAM dwData)
{
MONITORINFO lpmi ;
memset(&lpmi,0,sizeof(MONITORINFO));
lpmi.cbSize = sizeof(MONITORINFO);
if(!GetMonitorInfo(hMonitor, &lpmi ))
return FALSE;

////////////////////// 이것이 모니터 위치 ////////////////////
lpmi.rcWork;
}

위에 EnumDisplayMonitors(NULL, NULL, MyInfoEnumProc, 0);
쓰시면
BOOL CALLBACK MyInfoEnumProc(HMONITOR hMonitor, HDC hdcMonitor, LPRECT lprcMonitor,
LPARAM dwData)
가 호출됩니다.

모니터의 갯수만큼 차례대로.. 그럼 각 모니터의 위치를 알수 있습니다.
그 다음 다이알로그의 rect가 포함되어 있는 모니터를 찾으면 됩니다.
-------------------------------------- Devipia 161357 답변

 

출처 -------------------

www.devipia.com

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

네트워크 명령어

그냥 인터넷 돌아 다니다가 찾았어여..
편할거 같아소 올려 봅니다..
pC 방같은 경우는 netstat -an 으로 다른 사람이 computer를 모니터링하고 있지 않나 확인을 하고 사용하시는 것이 좋겠지요.
ping
- 서버 상태 확인
예) C:\>ping www.ihelpers.co.kr
nslookup
- DNS 확인
예) C:\>nslookup -type=mx ihelpers.co.kr
ifconfig
- 현재 자신의 Network 상태 확인
netstat
- 현재 자신의 통신하고 상태 확인
예) C:\>netstat
Active Connections
Proto Local Address Foreign Address State
TCP smson:1030 LINUX:netbios-ssn ESTABLISHED
TCP smson:1032 WWW:netbios-ssn ESTABLISHED
TCP smson:1036 64.12.25.207:5190 ESTABLISHED
TCP smson:1511 CDHWAN:netbios-ssn ESTABLISHED
TCP smson:1540 IS~NODE1:1755 TIME_WAIT
TCP smson:1548 I! S~NODE1:1755 TIME_WAIT
TCP smson:1554 IS~NODE1:1755 TIME_WAIT
TCP smson:1558 IS~NODE1:1755 ESTABLISHED
* netstat -an 으로 모든 상태를 볼수 있습니다.
racert
- 상대방의 IP까지의 경로 확인

출 처 : 아이진

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

232 통신

//////////////////////////////////////////////////////////////

//

// 언제쯤인지 ㅋㅋㅋ 생각해보니 좀 됬나? 어데서 봐서 넣었던거 같은데 ㅡ.ㅡ;;

// 그래도 통신은 잘 되더군..

//

//////////////////////////////////////////////////////////////

 

#include "./serialctl.h"

CSerialCtl::CSerialCtl(void)
{
 m_hSerialPort = NULL;
 m_bPortState = false;
}

CSerialCtl::~CSerialCtl(void)
{
}

//////////////////////////////////////////////////////////////////////////
// Serial Pont를 연다
bool CSerialCtl::OpenSerialPort(DCB dcbSet, char* pchrPortName)
{
 if( isOpenPort() == false)
 {
  m_hSerialPort = CreateFile(pchrPortName, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);

  if(GetCommState(m_hSerialPort, &m_dcbconfig) == 0)
  {
   AfxMessageBox("Serial Port를 생성실패 \n");
   return false;
  }
  m_dcbconfig.BaudRate = dcbSet.BaudRate;
  m_dcbconfig.StopBits = dcbSet.StopBits;
  m_dcbconfig.Parity = dcbSet.Parity;
  m_dcbconfig.ByteSize = dcbSet.ByteSize;

        if(SetCommState(m_hSerialPort, &m_dcbconfig) == 0)
  {
   AfxMessageBox(" Serial Port를 초기화 실패 \n");
   return false;
  }

  COMMTIMEOUTS comTimeOut;
  comTimeOut.ReadIntervalTimeout = 3;
  comTimeOut.ReadTotalTimeoutMultiplier = 3;
  comTimeOut.ReadTotalTimeoutConstant = 2;
  comTimeOut.WriteTotalTimeoutMultiplier = 3;
  comTimeOut.WriteTotalTimeoutConstant = 2;
  SetCommTimeouts(m_hSerialPort, &comTimeOut);
  SetOpenPort(TRUE);
  return TRUE;
 }

 return false;
}

//////////////////////////////////////////////////////////////////////////
// Open 한 Port를 닫는다.
bool CSerialCtl::ClosePort()
{
 if(isOpenPort())
 {
  SetOpenPort(false);
  if(CloseHandle(m_hSerialPort) == 0)
  {
   AfxMessageBox("Close 실패");
   return false;
  }
  return true;
 }
 return false;
}

//////////////////////////////////////////////////////////////////////////
// 현재 Port 상태 리턴
bool CSerialCtl::isOpenPort()
{
 return m_bPortState;
}

//////////////////////////////////////////////////////////////////////////
// Port Open 성공
void CSerialCtl::SetOpenPort(bool bOpenState)
{
 m_bPortState = bOpenState;
}

//////////////////////////////////////////////////////////////////////////
// Port를 읽는다.
bool CSerialCtl::ReadPort(char* pchrInputData, const unsigned long& unsizeBuffer, unsigned long& unLength)
{
 if(ReadFile(m_hSerialPort, pchrInputData, unsizeBuffer, &unLength, NULL) == 0 )
 {
  AfxMessageBox("Reading False \n");
  return false;
 }

 if(unLength > 0)
 {
  pchrInputData[unLength] = NULL;
  return true;
 }
 return true;
}

//////////////////////////////////////////////////////////////////////////
// Write the Port
bool CSerialCtl::WritePort(LPCVOID lpOutputData, const unsigned int& unsizeBuffer, unsigned long& unLength)
{
 if(unLength > 0)
 {
  if(WriteFile(m_hSerialPort, lpOutputData, unsizeBuffer, &unLength, NULL) == 0)
  {
   AfxMessageBox("WritePort FALSE \n");
   return false;
  }
  return true;
 }
 return false;
}

XP 스타일 정의

resource.h

#define IDR_MANIFEST    1

 

 

xxx.rc

rc 파일에 넣기

/////////////////////////////////////////////////////////////////////////////
//
// RT_MANIFEST
//

IDR_MANIFEST            RT_MANIFEST             "res\\SPS95KServer.manifest"

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

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

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++)통