C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[14365] [질문] Disk Format에 관한 질문입니다.
빌더사랑 [] 895 읽음    2002-01-11 00:01
아래의 소스는 Visual C++용 소스를 테스트 한 것 입니다.
이 소스에서 사용자의 입력을 받지않고 저절로 포맷되게 후킹하려면
어찌해야 하나요?
아시는분 꼭 부탁드립니다.

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "FormatSrc.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"

//---------------------------------------------------------------------------
#if !defined(SHFMT_OPT_FULL)

#if defined (__cplusplus)
extern "C" {
#endif

/*****************************************************************
The SHFormatDrive API provides access to the Shell's format
dialog box. This allows applications that want to format disks to bring
up the same dialog box that the Shell uses for disk formatting.

PARAMETERS
hwnd = The window handle of the window that will own the
dialog. NOTE that hwnd == NULL does not cause this
dialog to come up as a "top level application"
window. This parameter should always be non-null,
this dialog box is only designed to be the child of
another window, not a stand-alone application.

drive = The 0 based (A: == 0) drive number of the drive
to format.

fmtID = Currently must be set to SHFMT_ID_DEFAULT.

options = There are currently only two option bits defined.

SHFMT_OPT_FULL
SHFMT_OPT_SYSONLY

SHFMT_OPT_FULL specifies that the "Quick Format"
setting should be cleared by default. If the user
leaves the "Quick Format" setting cleared, then a
full format will be applied (this is useful for
users that detect "unformatted" disks and want
to bring up the format dialog box).

If options is set to zero (0), then the "Quick Format"
setting is set by default. In addition, if the user leaves
it set, a quick format is performed. Under Windows NT 4.0,
this flag is ignored and the "Quick Format" box is always
checked when the dialog box first appears. The user can
still change it. This is by design.

The SHFMT_OPT_SYSONLY initializes the dialog to
default to just sys the disk.

All other bits are reserved for future expansion
and must be 0.

Please note that this is a bit field and not a
value, treat it accordingly.

RETURN
The return is either one of the SHFMT_* values, or if
the returned DWORD value is not == to one of these
values, then the return is the physical format ID of the
last successful format. The LOWORD of this value can be
passed on subsequent calls as the fmtID parameter to
"format the same type you did last time".

*****************************************************************/
DWORD WINAPI SHFormatDrive(HWND hwnd,
UINT drive,
UINT fmtID,
UINT options);

//
// Special value of fmtID which means "use the defaultformat"
//

#define SHFMT_ID_DEFAULT 0xFFFF

//
// Option bits for options parameter
//

#define SHFMT_OPT_FULL 0x0001
#define SHFMT_OPT_SYSONLY 0x0002

//
// Special return values. PLEASE NOTE that these are DWORD values.
//

#define SHFMT_ERROR 0xFFFFFFFFL // Error on last format,
// drive may be formatable
#define SHFMT_CANCEL 0xFFFFFFFEL // Last format wascanceled
#define SHFMT_NOFORMAT 0xFFFFFFFDL // Drive is not formatable

#if defined (__cplusplus)
}
#endif
#endif
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  SHFormatDrive (Handle, 0 /* A: */, SHFMT_ID_DEFAULT, 0);
}
//---------------------------------------------------------------------------


+ -

관련 글 리스트
14365 [질문] Disk Format에 관한 질문입니다. 빌더사랑 895 2002/01/11
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.