Путь к файлу с USB-камеры

Здравствуйте, я использую GDI + для обработки изображений. Я запускаю его из командной строки с двумя аргументами. Причина этого в том, что программа вызывается из VBA Excel 2007. Диалоговое окно открытия файла запускается из VBA и дает первый аргумент.

Первый аргумент - это исходное изображение, которое нужно обработать, а второй - где сохранить образ. Все работает нормально, когда два аргумента приходят с диска с буквой, то есть C :.

Он не работал с сетевыми папками, например \ server \ folder. Я преодолел это, подключив папку к букве диска, прежде чем загружать образ.

У меня проблема сейчас, когда входящее изображение идет на usb камеру. Путь к файлу на камере оказывается COMPUTER \ Canon \ DCIM \ image.jpg. Windows не устанавливает камеру на диск с буквами, поэтому у меня она работает некорректно.

Перед тем, как загрузить изображение, я добавляю '\', чтобы все они были двойными \.

Я вообще не знаю, как заставить это работать, и просмотрел все. Спасибо.

int main(int argc, char* argv[])
{
GdiplusStartupInput gdiplusStartupInput;
ULONG_PTR           gdiplusToken;

// INITIALIZE GDI+
GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);

wchar_t tin[200] = L"";
wchar_t in[200] = L"";
wchar_t out[200] = L"";
wchar_t tout[200] = L"";

NETRESOURCE nr;
DWORD dwRetVal;

nr.dwType = RESOURCETYPE_DISK;
nr.lpLocalName = "M:";
nr.lpRemoteName = "\\\\server\\folder";
nr.lpProvider = NULL;
// Map the mugshots folder
dwRetVal = WNetAddConnection2(&nr, NULL, NULL, CONNECT_TEMPORARY);

// Convert to a wchar_t* from command line argument
size_t origsize = strlen(argv[1]) + 1;
mbstowcs( tin, argv[1], origsize);

//Add an extra \ for directory
int j = 0;
for (int i = 0 ; i < int(origsize) ; i++)
{
    if(tin[i] == '\\')
    {
        in[j] = '\\';
        j++;
        in[j] = '\\';
        j++;
    }
    else
    {
        in[j] = tin[i];
        j++;
    }
}

// Convert to a wchar_t* from command line argument
origsize = strlen(argv[2]) + 1;
mbstowcs(tout, argv[2], origsize);
//Add an extra \ for directory

out[0] = 'M';
out[1] = ':';
out[2] = '\\';
out[3] = '\\';
j = 4;
for (int i = 0 ; i < int(origsize) ; i++)
{
    if(tout[i] == '\\')
    {
        out[j] = '\\';
        j++;
        out[j] = '\\';
        j++;
    }
    else
    {
        out[j] = tout[i];
        j++;
    }
}

Bitmap b(in);

Process image

CLSID pngClsid;
GetEncoderClsid(L"image/jpeg", &pngClsid);
image2->Save(out, &pngClsid, NULL);

return 0;
}
10
задан reuben 19 February 2012 в 22:46
поделиться