BOOTMGR

Programming 2013. 7. 25. 09:59

1) Diskpart <엔터>

2) list disk <엔터>

아마 디스크0, 디스크1 이런 식으로 하드의 상태가 표시될 것이다. 디스크0이 해당 부분이며, 확인절차상 체크하는 단계입니당.

3) sel disk 0 <엔터> 디스크0의 존재가 확인되었으니 디스크0을 선택하는 단계입니당.

4) sel part 1 <엔터> 디스크0의 파티션1을 선택하는 단계입니당.

5) active <엔터> 파티션1을 활성화 시켜주는 명령어입니당.

6) exit <엔터> distpart 를 종료하고 콘솔모드로 복귀합니당.

7) bcdboot c:windows /l ko-kr <엔터> (영문판 사용자의 경우 en-us를 입력합니당.)

8) 콘솔 창을 닫고 재부팅을 합니당

 

80177617021_6

'Programming' 카테고리의 다른 글

GetModuleFileName, PathRemoveFileSpec 실행파일 경로가져오기 경로만 짤라내기  (0) 2013.07.09
CxImage  (0) 2013.07.05
SHFileOperation  (0) 2013.07.02
코드작성 툴  (1) 2013.06.25
운영체제 비트 수 확인  (0) 2013.06.20
Posted by 굿쏘
,
[-] Collapse
#include <windows.h>
#include <iostream.h>
#include "Shlwapi.h"

void main( void )
{
// Path to include file spec.
char buffer_1[ ] = "C:\\TEST\\sample.txt";
char *lpStr1;
lpStr1 = buffer_1;

// Print the path with the file spec.
cout << "The path with file spec is          : " << lpStr1 << endl;

// Call to "PathRemoveFileSpec".
PathRemoveFileSpec(lpStr1);

// Print the path without the file spec.
cout << "\nThe path without file spec is       : " << lpStr1 << endl;
}

OUTPUT:
==================
The path with file spec is          : C:\TEST\sample.txt

The path without file spec is       : C:\TEST

'Programming' 카테고리의 다른 글

BOOTMGR  (0) 2013.07.25
CxImage  (0) 2013.07.05
SHFileOperation  (0) 2013.07.02
코드작성 툴  (1) 2013.06.25
운영체제 비트 수 확인  (0) 2013.06.20
Posted by 굿쏘
,

CxImage

Programming 2013. 7. 5. 09:43

딱히 설정 할 것도 없는데 할 때마다 실패하는 놀라운 라이브러리 ㅋ

주의사항만 적어놓자 맨날 까먹지 말고

 

1. IDE 버전을 맞추자 가능하면 물론 Standard Library를 사용해서 문제없다고 하지만 컴파일 해서 사용해 보면 문제있다. 특히 상위버전에서 만들어진 라이브러리 버전은 심각한 호환성을 만들어준다

2. 6.0 처럼 몽땅 빌드해서 옮기지 말고 필요한 모듈만 컴파일해서 쓰자. 빌드 솔루션, 리빌드 솔루션 해도 상관없지만 이 때는 Property->Configuration Properties->General 에서 Use of MFC 를 잘봐야 한다. 이게 MFC Libraries 도 있고 Standard Libraries도 있다 사용할 프로젝트와 맞춰줘야 한다.

3. 마찬가지로 Property->Configuration Properties->Code Generation 에 Runtime Library 는 꼬옥~~ 두번확인해라 사용할 프로젝트와 딱 맞아야 링크 에러 없다

4. 코드페이지 호환성 949 나오면 위치와 상관없이 맨위에 주석을 지워라..이 소스를 맹그신 멋진 러시아 사람 이름이 주석문안에서 계속 경고를 띄워준다..

 

정말 할 거 없는데 이것땜에 항상 컴파일에러 링크에러 짜징이야..

'Programming' 카테고리의 다른 글

BOOTMGR  (0) 2013.07.25
GetModuleFileName, PathRemoveFileSpec 실행파일 경로가져오기 경로만 짤라내기  (0) 2013.07.09
SHFileOperation  (0) 2013.07.02
코드작성 툴  (1) 2013.06.25
운영체제 비트 수 확인  (0) 2013.06.20
Posted by 굿쏘
,

SHFileOperation

Programming 2013. 7. 2. 09:57

WinAPI로 파일을 복사 삭제 이동하는 API

[-] Collapse
SHFILEOPSTRUCT fs;
memset(&fs, 0, sizeof(fs));

fs.pFrom = szSource;
fs.pTo = szDest;
fs.wFunc = FO_COPY; // FO_DELETE, FO_RENAME,
fs.fFlags = FOF_FILESONLY;

::SHFileOperation(&fs);

 

fs.fFlags 에 FOF_FILESONLY를 지우면 디렉토리 속성이 포함된다.

즉, XCOPY 처럼 폴더 복사가 가능해진다

BUT 복사나 이동이 다 끝나기 전엔 리턴을 받을 수 없으니 중간에 상태를 표시하기 위해선 결국 FindFirstFile, FindNextFile 을 이용해 파일목록과 폴더목록을 작성해서 직접 구현해 줘야한다.

Posted by 굿쏘
,

코드작성 툴

Programming 2013. 6. 25. 11:17

ㅎㅎ 이건 html Base이다 딴거없이 붙여넣으면 되는데 css도 필요없구 걍 붙여넣으면 된다 devpia 홧팅!!

[-] Collapse
int main(int argc, char** argv[])
{
    printf("Hello world!!\n");

    return 0;
}

'Programming' 카테고리의 다른 글

CxImage  (0) 2013.07.05
SHFileOperation  (0) 2013.07.02
운영체제 비트 수 확인  (0) 2013.06.20
바로가기(.lnk) 파일, 인터넷 바로가기(.url) 파일 생성 함수  (0) 2013.06.20
이 또한 지나가리라  (0) 2013.06.20
Posted by 굿쏘
,
BOOL bIs64BitOS = FALSE;

typedef BOOL (WINAPI *LPFN_ISWOW64PROCESS) (HANDLE, PBOOL); 

LPFN_ISWOW64PROCESS fnIsWow64Process = (LPFN_ISWOW64PROCESS)GetProcAddress( GetModuleHandle("kernel32"),"IsWow64Process");

if( NULL != fnIsWow64Process )
{
	if( !fnIsWow64Process( GetCurrentProcess(),&bIs64BitOS ) )
	{
		//error
	}
}



if( bIs64BitOS == FALSE )
{
	AfxMessageBox( "32" );
}
else
{
	AfxMessageBox( "64" );
}

'Programming' 카테고리의 다른 글

SHFileOperation  (0) 2013.07.02
코드작성 툴  (1) 2013.06.25
바로가기(.lnk) 파일, 인터넷 바로가기(.url) 파일 생성 함수  (0) 2013.06.20
이 또한 지나가리라  (0) 2013.06.20
Sleep(), GetTickCount(), Timer ㅜㅜ  (0) 2013.06.14
Posted by 굿쏘
,
#include <intshcut.h> 
 
 

BOOL CreateShortcut(LPCTSTR szTargetPath,
                    LPCTSTR szShortcutPath,
                    LPCTSTR szDesc = NULL,
                    LPCTSTR szArgument = NULL,
                    LPCTSTR szIconPath = NULL,
                    int iIconIndex = -1,
                    WORD wHotkey = 0,
                    int nShowCmd = SW_SHOW)
{
    // Validate parameters
    ASSERT(szTargetPath);
    ASSERT(szShortcutPath);

    HRESULT hRes;
    IUniformResourceLocator* purl = NULL;
    IShellLink* psl = NULL;
    IPersistFile* ppf = NULL;
    BOOL bRet = FALSE;

    ::CoInitialize(NULL);

    TCHAR szDrive[_MAX_DRIVE], szDir[_MAX_PATH], szExt[_MAX_EXT];
    _tsplitpath(szShortcutPath, szDrive, szDir, NULL, szExt);

    CString sExt = szExt;

    // Shortcut
    if (0 == sExt.CollateNoCase(_T(".lnk")))
    {
        hRes = ::CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER,
                                  IID_IShellLink, (LPVOID*)&psl);
        hRes = psl->QueryInterface(IID_IPersistFile, (LPVOID*)&ppf);
    }

    // URL Shortcut
    else if (0 == sExt.CollateNoCase(_T(".url")))
    {
        hRes = ::CoCreateInstance(CLSID_InternetShortcut, NULL, CLSCTX_INPROC_SERVER,
                                  IID_IUniformResourceLocator, (LPVOID*)&purl);
        if (SUCCEEDED(hRes))
        {
            hRes = purl->QueryInterface(IID_IShellLink, (LPVOID*)&psl);
            if (SUCCEEDED(hRes))
                hRes = purl->QueryInterface(IID_IPersistFile, (LPVOID*) &ppf);
        }
    }
    else
    {
        // Shortcut file extention must be .lnk or .url
        ::CoUninitialize();
        return FALSE;
    }

    if (SUCCEEDED(hRes))
    {
        hRes = psl->SetPath(szTargetPath);
        if (szDesc)
            psl->SetDescription(szDesc);

        if (szArgument)
            psl->SetArguments(szArgument);

        if (szIconPath && iIconIndex >= 0)
            psl->SetIconLocation(szIconPath, iIconIndex);

        if (wHotkey)
            psl->SetHotkey(wHotkey);

        CString sDir;
        sDir.Format(_T("%s%s"), szDrive, szDir);
        psl->SetWorkingDirectory(sDir);
        psl->SetShowCmd(nShowCmd);

        USES_CONVERSION;
        hRes = ppf->Save(T2COLE(szShortcutPath), TRUE);
        if (hRes != S_OK)
            TRACE(_T("IPersistFile::Save Error\n"));
        else
            bRet = TRUE;

        ppf->Release();
        psl->Release();
        if (purl)
            purl->Release();
    }
    ::CoUninitialize();
    return bRet;
}

함수의 파라미터 개수가 많으니 설명이 조금 필요할 것 같네요. 각각의 파라미터의 역할은 다음과 같습니다.

szTargetPath

바로가기의 대상. 파일일 경우 대상 파일의 경로를, 웹페이지 일 경우에 웹페이지 주소를 입력

szShortcutPath

저장하려는 바로가기 파일의 경로. 바로가기의 확장자는 반드시 .lnk 이어야 하며 인터넷 바로가기의 확장자는 .url 이어야함

szDesc

바로가기에 대한 설명

szArgument

바로가기 실행 시 사용할 파라미터. 인터넷 바로가기의 경우는 NULL 전달

szIconPath

바로가기 아이콘의 경로. NULL로 설정할 경우 바로가기 대상의 아이콘을 그대로 사용

iIconIndex

szIconPath에서 설정한 아이콘 파일에서 실제 사용할 아이콘 인덱스

wHotkey

바로가기 키. 하위 바이트에는 Virtual keycode를, 상위바이트에는 modifier flag를 넣어주는 기본적인 핫키 형식

nShowCmd

실행 창의 형태를 지정. 기본은 SW_SHOW이며 SW_MAXIMIZE(최대화), SW_MINIMIZE(최소화) 등 사용 가능

szTargetPath와 szShortcutPath를 제외한 나머지 파라미터는 디폴트 파라미터를 가지고 있으므로 필요한 경우에만 전달해 주면 된니다. 그럼 이 함수를 이용하여 실제 바로가기 파일을 생성하는 코드를 작성해보도록 합시다

 

CreateShortcut(_T("C:\\Windows\\System32\\calc.exe"), _T("D:\\계산기.lnk"));
CreateShortcut(_T("http://devmachine.blog.me"), _T("D:\\DevMachineBlog.url"));

함수 호출이 성공하면 다음과 같이 지정된 경로에 바로가기 파일이 저장됩니다.

 

출처 : DevMachine’s Blog

'Programming' 카테고리의 다른 글

코드작성 툴  (1) 2013.06.25
운영체제 비트 수 확인  (0) 2013.06.20
이 또한 지나가리라  (0) 2013.06.20
Sleep(), GetTickCount(), Timer ㅜㅜ  (0) 2013.06.14
WM_COPYDATA 사용법  (0) 2013.06.13
Posted by 굿쏘
,

슬픔이 그대의 삶으로 밀려와 마음을 흔들고

소중한 것 들을 쓸어가 버릴 때 면

그대 가슴에 대고 다만 말하라

‘이것 또한 지나가리라’

‘Soon it shall also come to pass.’

 

행운이 그대에게 미소 짓고 기쁨과 환희로 가득 할 때

근심 없는 날 들이 스쳐 갈 때면 세속적인 것들에게만 의존 하지 않도록

이 진실을 조용히 가슴에 새기라

‘이것 또한 지나가리라’

‘Soon it shall also come to pass.’

 

유대인의 경전 주석서 Midrash 중 ‘다윗반지’ 에 나오는 구절

 

약1:10

롬8:18

벧전1:24

 

어느 블로그에 저미는 말을 써놔서 펌..

Posted by 굿쏘
,

아무생각없이 쓰다가 대략 난감해지는 우리의 Timer

이 녀석은 정말 대단하다 처음엔 잘돌아가는듯 눈속임을 하다가 윈도우가 바뻐지면 자기도 바뻐져서 이벤트를 발생하지 않는다. 또는 지 맘대로 늦어진다. 잘되다 안되다 디버깅하기 정말 어려운 문제발생.

 

Sleep() 얘는 millisecond 단위로 조작이 가능하지만 실제로는 엄청난 오차를 가지고 있는 놈이다.

   1:  Sleep(1);
   2:  Sleep(10);

이 두개는 별차이 없다 얼만큼 잘지도 모르고 그냥 운명에 맡겨야할 정도다.

 

   1:  GetTickCount();

millisecond도 관리못하는 윈도우가 Tick!!! 이라니..웃긴다 그저.

 

   1:  LARGE_INTEGER freq = {0,};
   2:  LARGE_INTEGER beforeCount = {0,};
   3:  LARGE_INTEGER afterCount = {0,};
   4:  LARGE_INTEGER thirdCount = {0,};
   5:   
   6:  QueryPerformanceFrequency(&freq);
   7:   
   8:  QueryPerformanceCounter(&beforeCount);
   9:  Sleep(10);
  10:  QueryPerformanceCounter(&afterCount);
  11:  double timeBusy = (double)(afterCount.QuadPart - beforeCount.QuadPart) / freq.QuadPart;
  12:  printf("timeBusy = %g(msec)\n", timeBusy * 1000);
  13:  Sleep(1);
  14:  QueryPerformanceCounter(&thirdCount);
  15:  double timeDelay = (double)(thirdCount.QuadPart - afterCount.QuadPart) / freq.QuadPart;
  16:  printf("timeDelay = %g(msec)\n", timeDelay * 1000);

 

결과가 궁금하면 돌려봐야징~~

Posted by 굿쏘
,

WM_COPYDATA 사용법

Programming 2013. 6. 13. 20:23

Builder를 사용하는 중이니 Builder를 기준으로..

뭐 MFC도 별차이 없다.

 

메시지맵에 아래와 같이 넣어주고

  1: BEGIN_MESSAGE_MAP
  2:    MESSAGE_HANDLER(WM_COPYDATA, TMessage, OnCopyData)
  3: END_MESSAGE_MAP(TForm)
  4: 

 

헤더파일에 함수선언하고

  1:     void __fastcall OnCopyData(TMessage &Message);
  2: 

 

소스에 코드작성하면 끝..

  1: void __fastcall TNeoADTSScoreMain::OnCopyData(TMessage &Message)
  2: {
  3:     COPYDATASTRUCT *pcds = (COPYDATASTRUCT*)Message.LParam;
  4: 
  5:     int iLength = pcds->cbData;
  6:     BYTE *pData = new BYTE[iLength];
  7:     memset(pData, 0, iLength);
  8:     memcpy(pData, (BYTE*)pcds->lpData, iLength);
  9: 
 10:     aprintf("iLength = %d, pData = %s\n", iLength, pData);
 11:     delete pData;
 12: }
 13: 

 

뭐 설명이 필요없이 간단하다.

Posted by 굿쏘
,