logicaldriver.cpp

来自「自动寻找可移动设备」· C++ 代码 · 共 83 行

CPP
83
字号
// LogicalDriver.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"

typedef struct _MyDriverType{
	UINT type;
	TCHAR *Str;
}MyDriverType;

DWORD *save;

MyDriverType fuck[]={{DRIVE_UNKNOWN,	L"DRIVE_UNKNOWN"},
					{DRIVE_NO_ROOT_DIR,	L"DRIVE_NO_ROOT_DIR"},
					{DRIVE_REMOVABLE,	L"DRIVE_REMOVABLE"},
					{DRIVE_FIXED,		L"DRIVE_FIXED"},
					{DRIVE_REMOTE,		L"DRIVE_REMOTE"},
					{DRIVE_CDROM,		L"DRIVE_CDROM"},
					{DRIVE_RAMDISK,		L"DRIVE_RAMDISK"}
					};

#define ToFind DRIVE_REMOVABLE

unsigned int reDrives;
TCHAR buffer[] = L"A:\\";
TCHAR buffer_2[] = L"a:\\";
#define Flag (buffer_2[0])
char cTemp;
int i,k;

char fucking[] = "可移动设备自动寻找\nFlag\tType\n";

int _tmain(int argc, _TCHAR* argv[])
{
	save = new DWORD[32];
	reDrives = GetLogicalDrives ();
	
	printf ("%s", fucking);

	for(i=0; i<32; i++)
	{
		cTemp = 'A'+i;
		wsprintf (buffer, L"%c:\\", cTemp);
		if( ( (reDrives>>i) & 0x01 ) == 0x01)
			save[i] = GetDriveType (buffer);
		else
			save[i] = 0xff;
	}
	
	for(i=0; i<32; i++)
		if(save[i] != 0xff)
			wprintf (L"%c\t%s\n", 'A'+i, fuck[save[i]].Str);
	fputc ('\n', stdout);

	printf ("可移动设备是:");
	k = 0;
	for(i=0; i<32; i++)
		if(save[i] == ToFind)
		{
			printf (" %c", 'A'+i);
			k++;
		}
	if(k==0){
		printf ("不存在可移动设备\n");
		goto end;
	}else fputc ('\n', stdout);

	printf ("试图打开他们\n");
	for(i=0; i<32; i++)
		if(save[i] == ToFind)
		{
			Flag = 'A'+i;
			ShellExecute(NULL, L"explore", buffer_2, NULL, NULL, SW_SHOW);
			wprintf (L"%s\n", buffer_2);
		}
end:
	printf ("按任意键退出...");
	_getwch();
	delete  [] save;
	return 0;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?