2014/12/02

dumbpin을 이용하여 dll, exe가 32bit인지 64bit인지 확인하기


dumpbin은 MS에서 제공하는 COFF/PE의 내용을 확인할 수 있는 CLI 프로그램으로 /HEADERS 옵션으로 파일의 헤더를 확인할 수 있다.






Header를 확인해 보면 해당 Dll 이나 Exe 파일이 32bit인지 64bit인지 확인할 수 있다.



32비트의 경우

D:\>dumpbin /HEADERS cv100.dll | more
Microsoft (R) COFF/PE Dumper Version 11.00.61030.0
Copyright (C) Microsoft Corporation. All rights reserved.


Dump of file cv100.dll

PE signature found

File Type: DLL

FILE HEADER VALUES
14C machine (x86)
6 number of sections
45366940 time date stamp Thu Oct 19 02:49:52 2006
0 file pointer to symbol table
0 number of symbols
E0 size of optional header
210E characteristics
Executable
Line numbers stripped
Symbols stripped
32 bit word machine
DLL

OPTIONAL HEADER VALUES
10B magic # (PE32)
6.00 linker version
-- More --





64비트의 경우

D:\>dumpbin /HEADERS cv100_64.dll | more
Microsoft (R) COFF/PE Dumper Version 11.00.61030.0
Copyright (C) Microsoft Corporation. All rights reserved.


Dump of file cv100_64.dll

PE signature found

File Type: DLL

FILE HEADER VALUES
8664 machine (x64)
6 number of sections
457E6508 time date stamp Tue Dec 12 17:15:04 2006
0 file pointer to symbol table
0 number of symbols
F0 size of optional header
2022 characteristics
Executable
Application can handle large (>2GB) addresses
DLL

OPTIONAL HEADER VALUES
20B magic # (PE32+)
8.00 linker version
-- More --

<

Original Post : http://neodreamer-dev.tistory.com/731

2014/11/07

다른 편집기에서 .rc 파일을 열지 않았음에도 "Opened in another editor" 메시지가 나올 때.


프로젝트의 .rc 파일을 다른 편집기에서 열지 않았음에도 Resource View에서 보고자 하는데 "Opened in another editor" 메시지가 출력되면서 열리지 않을 때.




Solution Explorer 에서 해당 리소스 파일(.rc)을 찾아 오른쪽 버튼을 눌러 View Code 메뉴로 열었다가 닫고 리소스 헤더(resource.h) 파일도 같은 방법으로 열었다 닫는다.

마지막으로 Solution 을 Clean한 후 다시 Resource View에서 트리 확장하여 리소스파일을 연다.<

Original Post : http://neodreamer-dev.tistory.com/730

2014/09/25

경로 관련 함수 (Shell Path Handling Functions)

MSDN에 소개된 Path 관련 함수들을 소개해 놓은 페이지 이다.


http://msdn.microsoft.com/en-us/library/bb773559%28VS.85%29.aspx


위 페이지에 포함되어 있는 함수를 사용하기 위해서는 아래와 같이 헤더파일과 라이브러리를 링크 해 주어야 한다.

#include <shlwapi.h>

#pragma comment(lib, "shlwapi")



PathAddBackslash

Adds a backslash to the end of a string to create the correct syntax for a path. If the source path already has a trailing backslash, no backslash will be added.

Note  Misuse of this function can lead to a buffer overrun. We recommend the use of the safer PathCchAddBackslash or PathCchAddBackslashEx function in its place.

PathAddExtension

Adds a file name extension to a path string.

Note  Misuse of this function can lead to a buffer overrun. We recommend the use of the safer PathCchAddExtension function in its place.

PathAppend

Appends one path to the end of another.

Note  Misuse of this function can lead to a buffer overrun. We recommend the use of the safer PathCchAppend or PathCchAppendEx function in its place.

PathBuildRoot

Creates a root path from a given drive number.

PathCanonicalize

Simplifies a path by removing navigation elements such as "." and ".." to produce a direct, well-formed path.

PathCombine

Concatenates two strings that represent properly formed paths into one path; also concatenates any relative path elements.

Note  Misuse of this function can lead to a buffer overrun. We recommend the use of the safer PathCchCombine or PathCchCombineEx function in its place.

PathCommonPrefix

Compares two paths to determine if they share a common prefix. A prefix is one of these types: "C:\\", ".", "..", "..\\".

PathCompactPath

Truncates a file path to fit within a given pixel width by replacing path components with ellipses.

PathCompactPathEx

Truncates a path to fit within a certain number of characters by replacing path components with ellipses.

PathCreateFromUrl

Converts a file URL to a Microsoft MS-DOS path.

PathCreateFromUrlAlloc

Creates a path from a file URL.

PathFileExists

Determines whether a path to a file system object such as a file or folder is valid.

PathFindExtension

Searches a path for an extension.

PathFindFileName

Searches a path for a file name.

PathFindNextComponent

Parses a path and returns the portion of that path that follows the first backslash.

PathFindOnPath

Searches for a file.

PathFindSuffixArray

Determines whether a given file name has one of a list of suffixes.

PathGetArgs

Finds the command line arguments within a given path.

PathGetCharType

Determines the type of character in relation to a path.

PathGetDriveNumber

Searches a path for a drive letter within the range of 'A' to 'Z' and returns the corresponding drive number.

PathIsContentType

Determines if a file's registered content type matches the specified content type. This function obtains the content type for the specified file type and compares that string with the pszContentType. The comparison is not case-sensitive.

PathIsDirectory

Verifies that a path is a valid directory.

PathIsDirectoryEmpty

Determines whether a specified path is an empty directory.

PathIsFileSpec

Searches a path for any path-delimiting characters (for example, ':' or '\' ). If there are no path-delimiting characters present, the path is considered to be a File Spec path.

PathIsHTMLFile

Determines if a file is an HTML file. The determination is made based on the content type that is registered for the file's extension.

PathIsLFNFileSpec

Determines whether a file name is in long format.

PathIsNetworkPath

Determines whether a path string represents a network resource.

PathIsPrefix

Searches a path to determine if it contains a valid prefix of the type passed by pszPrefix. A prefix is one of these types: "C:\\", ".", "..", "..\\".

PathIsRelative

Searches a path and determines if it is relative.

PathIsRoot

Determines whether a path string refers to the root of a volume.

PathIsSameRoot

Compares two paths to determine if they have a common root component.

PathIsSystemFolder

Determines if an existing folder contains the attributes that make it a system folder. Alternately, this function indicates if certain attributes qualify a folder to be a system folder.

PathIsUNC

Determines if a path string is a valid Universal Naming Convention (UNC) path, as opposed to a path based on a drive letter.

PathIsUNCServer

Determines if a string is a valid UNC for a server path only.

PathIsUNCServerShare

Determines if a string is a valid UNC share path, \\server\share.

PathIsURL

Tests a given string to determine if it conforms to a valid URL format.

PathMakePretty

Converts an all-uppercase path to all lowercase characters to give the path a consistent appearance.

PathMakeSystemFolder

Gives an existing folder the proper attributes to become a system folder.

PathMatchSpec

Searches a string using a MS-DOS wildcard match type.

PathMatchSpecEx

Matches a file name from a path against one or more file name patterns.

PathParseIconLocation

Parses a file location string that contains a file location and icon index, and returns separate values.

PathQuoteSpaces

Searches a path for spaces. If spaces are found, the entire path is enclosed in quotation marks.

PathRelativePathTo

Creates a relative path from one file or folder to another.

PathRemoveArgs

Removes any arguments from a given path.

PathRemoveBackslash

Removes the trailing backslash from a given path.

Note  This function is deprecated. We recommend the use of the PathCchRemoveBackslash or PathCchRemoveBackslashEx function in its place.

PathRemoveBlanks

Removes all leading and trailing spaces from a string.

PathRemoveExtension

Removes the file name extension from a path, if one is present.

Note  This function is deprecated. We recommend the use of the PathCchRemoveExtension in its place.

PathRemoveFileSpec

Removes the trailing file name and backslash from a path, if they are present.

Note  This function is deprecated. We recommend the use of the PathCchRemoveFileSpec function in its place.

PathRenameExtension

Replaces the extension of a file name with a new extension. If the file name does not contain an extension, the extension will be attached to the end of the string.

Note  Misuse of this function can lead to a buffer overrun. We recommend the use of the safer PathCchRenameExtension function in its place.

PathSearchAndQualify

Determines if a given path is correctly formatted and fully qualified.

PathSetDlgItemPath

Sets the text of a child control in a window or dialog box, using PathCompactPath to ensure the path fits in the control.

PathSkipRoot

Retrieves a pointer to the first character in a path following the drive letter or UNC server/share path elements.

PathStripPath

Removes the path portion of a fully qualified path and file.

PathStripToRoot

Removes all file and directory elements in a path except for the root information.

Note  Misuse of this function can lead to a buffer overrun. We recommend the use of the safer PathCchStripToRoot function in its place.

PathUndecorate

Removes the decoration from a path string.

PathUnExpandEnvStrings

Replaces certain folder names in a fully qualified path with their associated environment string.

PathUnmakeSystemFolder

Removes the attributes from a folder that make it a system folder. This folder must actually exist in the file system.

PathUnquoteSpaces

Removes quotes from the beginning and end of a path.

SHSkipJunction

Checks a bind context to see if it is safe to bind to a particular component object.

UrlApplyScheme

Determines a scheme for a specified URL string, and returns a string with an appropriate prefix.

UrlCanonicalize

Converts a URL string into canonical form.

UrlCombine

When provided with a relative URL and its base, returns a URL in canonical form.

UrlCompare

Makes a case-sensitive comparison of two URL strings.

UrlCreateFromPath

Converts a MS-DOS path to a canonicalized URL.

UrlEscape

Converts characters or surrogate pairs in a URL that might be altered during transport across the Internet ("unsafe" characters) into their corresponding escape sequences. Surrogate pairs are characters between U+10000 to U+10FFFF (in UTF-32) or between DC00 to DFFF (in UTF-16).

UrlEscapeSpaces

A macro that converts space characters into their corresponding escape sequence.

UrlGetLocation

Retrieves the location from a URL.

UrlGetPart

Accepts a URL string and returns a specified part of that URL.

UrlHash

Hashes a URL string.

UrlIs

Tests whether a URL is a specified type.

UrlIsFileUrl

Tests a URL to determine if it is a file URL.

UrlIsNoHistory

Returns whether a URL is a URL that browsers typically do not include in navigation history.

UrlIsOpaque

Returns whether a URL is opaque.

UrlUnescape

Converts escape sequences back into ordinary characters.

UrlUnescapeInPlace

Converts escape sequences back into ordinary characters and overwrites the original string.

<

Original Post : http://neodreamer-dev.tistory.com/729

Chrome 자간 문제 해결하기

언젠가부터 Chrome 브라우저에서 폰트의 자간이 이상하게 출력이 되었다. 아마 64비트를 적용한 시점 같은데 정확한 원인은 알 수 없었고 그냥 사용하다가 해결책을 찾았다. 아래는 늘씬(?)님의 블로그(http://jungle-e.tistory.com/332)에서 소개한 해결 방법이다.


우선 Chrome 브라우저에서  chrome://flags/ 주소로 접근은 한다.


그리고 많은 설정 중  "DirectWrite 사용 중지" 항목이 사용으로 되어 있는데 이를 사용중지로 변경한다.




그리고 좌측 하단의 다시시작 버튼을 선택한다. 다시시작 해도 이전의 Tab들은 그대로 유지가 된다.


다시시작하고 확인을 해 보면 자간이 정상으로 된다.




위 이미지의 위쪽이 자간에 문제가 있는 것이고 아래쪽이 설정 변경으로 정상으로 되돌아 온 모습니다.

 

<

Original Post : http://neodreamer-dev.tistory.com/728

2014/06/10

MFC 프로그램에 Console 대화상자 띄우기

#ifdef _DEBUG
# ifdef UNICODE
# pragma comment(linker, "/entry:wWinMainCRTStartup /subsystem:console")
# else
# pragma comment(linker, "/entry:WinMainCRTStartup /subsystem:console")
# endif
#endif


#ifdef _DEBUG
cout << "test consol out by cout\n";
printf("test consol out by printf\n");
#endif // _DEBUG
<

Original Post : http://neodreamer-dev.tistory.com/727

2014/05/20

Dialog 기반 Application 에서 Accelerator 구현하기

// Header
class CMyDialog : public CDialogEx
{
:
HACCEL m_hAccel;
:
}

// Source
BOOL CMyDialog::OnInitDialog()
{
:
m_hAccel = LoadAccelerators(AfxGetInstanceHandle()
, MAKEINTRESOURCE(IDR_ACCELERATOR));
:
}

BOOL CMyDialog::PreTranslateMessage(MSG* pMsg)
{
:
if ( m_hAccel )
{
if (::TranslateAccelerator(m_hWnd, m_hAccel, pMsg))
{
return(TRUE);
}
}
:

return CDialogEx::PreTranslateMessage(pMsg);
}
<

Original Post : http://neodreamer-dev.tistory.com/726

2014/04/08

StarUML의 Cannot focus a disabled or invisible window 에러 문제

어느 순간부터 StartUML을 실행하거나 편집 작업중에 "Cannot focus a disabled or invisible window" 에러가 발생하고 있어 원인을 찾아 보았다.


이 문제는 StarUML의 Model Explorer를 자동 감추기를 설정해 두니 발생하는 문제였다. 넓은 작업 공간을 위해 자동 감추기를 한 것이 문제였다.

버그로 보이지만 개발이 중단되어 수정이 되지 않을테느 적어도 Model Explorer는 항상 고정해 놓고 사용해야 겠다.&

Original Post : http://neodreamer-dev.tistory.com/725

2014/03/25

Visual Studio 2012의 Preview 기능 비활성화 하기

Preview 기능은 Visual Studio 2012 버전부터 추가되 기능으로 보이는데(2010버전에는 설정이 없었으므로) 이전버전 사용하다가 갑자기 접하니 많이 불편했다. 솔루션 탐색기에서 파일만 선택하며 해당 파일을 Preview 창에 보여주고 검색 후 해당 항목을 선택하면 해당 위치를 보여주는데 검색의 경우 실제 값을 보기 위한 행동 보다는 단순 검색 결과의 확인을 위한 행동이다보니 클릭시 마다 Preview 가 보여지는 것이 불편 하였다. 기본 기능으로 알고 있어 참고 있다가 검색을 해 보니 설정이 가능한 기능 이였다.



Visual Studio 의 Option 설정중에서 Environment 의 Tabs and Windows 항목에서 이 기능을 설정할 수 있다.

Preview Tab 항목을 선택하지 않으면 해당 기능을 비활성화 할 수 있다.



&

Original Post : http://neodreamer-dev.tistory.com/724

2014/01/10

Bitnami의 WAMP를 이용하여 PHP와 Firebird 연동하기

간단한 PHP 테스트를 위해 환경을 구축하는데 Firebird 연동에서 고생을 좀 했다.

별도의 구성이 필요 없고 PHP 와 Firebird와의 연동 테스트로 Bitnami 의 WAMP 패키지를 이용하였다.

아주 오랫만에 해보는 거이고 Firebird에 대한 정보가 많지 않아 고생한 것 같다.


PHP에서는 Firebird와 연동하는 방법으로 두 가지를 지원한다.

하나는 오래전 방법으로 php_interbase.dll 이고 다른 하나는 PHP 5 부터인가 지원하는 PDO(PHP Data Objects)를 이용하는 방법이 있다.


이 두가지 방법 모두 활성화 해 보았다.


우선 Bitnami 가 설치된 경로에서 php폴더에 php.ini내용 중에서 주석으로 처리되어 있는 아래 두 줄의 주석을 해제한다.

extension=php_interbase.dll

extension=php_pdo_firebird.dll


그리고 Firebird 32비트 버전에 포함되어 있는 fbclient.dll 파일을 Bitnami 에 포함되어있는 Apache 폴더의 bin 디렉토리에 복사를 하고 Apache 서버를 재 시작한 후 phpinfo(); 함수를 이용하여 확인 한다. 

phpinfo() 함수의 결과중에서 PDO 등록된 드라이버 목록에 Firebird가 보여지고 PDO_Firebird가 enable 된다. <

Original Post : http://neodreamer-dev.tistory.com/723