Download Pelles C here: http://www.smorgasbordet.com/pellesc/
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <stdio.h>
#include "dshow.h"
#pragma comment(lib, "ole32.lib")
#pragma comment(lib, "oleaut32.lib")
#pragma comment(lib, "uuid.lib")
//#pragma comment(lib, "strmiids")
const GUID CLSID_SystemDeviceEnum = {0x62be5d10,0x60eb,0x11d0,{0xbd,0x3b,0x0,0xa0,0xc9,0x11,0xce,0x86}};
const GUID CLSID_AudioInputDeviceCategory = {0x33d9a762,0x90c8,0x11d0,{0xbd,0x43,0x0,0xa0,0xc9,0x11,0xce,0x86}};
const GUID CLSID_VideoInputDeviceCategory = {0x860bb310,0x5d01,0x11d0,{0xbd,0x3b,0x0,0xa0,0xc9,0x11,0xce,0x86}};
const GUID IID_ICreateDevEnum = {0x29840822,0x5b84,0x11d0,{0xbd,0x3b,0x0,0xa0,0xc9,0x11,0xce,0x86}};
HRESULT EnumerateDevices(REFGUID category, IEnumMoniker **ppEnum)
{
// Create the System Device Enumerator.
ICreateDevEnum *pDevEnum;
HRESULT hr = CoCreateInstance(&CLSID_SystemDeviceEnum, NULL,
CLSCTX_INPROC_SERVER, &IID_ICreateDevEnum, (void**)&pDevEnum);
if (SUCCEEDED(hr))
{
// Create an enumerator for the category.
hr = pDevEnum->lpVtbl->CreateClassEnumerator(pDevEnum, category, ppEnum, 0);
if (hr == S_FALSE)
{
hr = VFW_E_NOT_FOUND; // The category is empty. Treat as an error.
}
pDevEnum->lpVtbl->Release(pDevEnum);
}
return hr;
}
void DisplayDeviceInformation(IEnumMoniker *pEnum)
{
IMoniker *pMoniker = NULL;
while (pEnum->lpVtbl->Next(pEnum, 1, &pMoniker, NULL) == S_OK)
{
IPropertyBag *pPropBag;
HRESULT hr = pMoniker->lpVtbl->BindToStorage(pMoniker, 0, 0, &IID_IPropertyBag, (void**)&pPropBag);
if (FAILED(hr))
{
pMoniker->lpVtbl->Release(pMoniker);
continue;
}
VARIANT var;
VariantInit(&var);
// Get description or friendly name.
hr = pPropBag->lpVtbl->Read(pPropBag, L"Description", &var, 0);
if (FAILED(hr))
{
hr = pPropBag->lpVtbl->Read(pPropBag, L"FriendlyName", &var, 0);
}
if (SUCCEEDED(hr))
{
printf("%ls\n", var.bstrVal);
VariantClear(&var);
}
//hr = pPropBag->lpVtbl->Write(pPropBag, L"FriendlyName", &var);
// WaveInID applies only to audio capture devices.
hr = pPropBag->lpVtbl->Read(pPropBag, L"WaveInID", &var, 0);
if (SUCCEEDED(hr))
{
printf("WaveIn ID: %d\n", var.lVal);
VariantClear(&var);
}
hr = pPropBag->lpVtbl->Read(pPropBag, L"DevicePath", &var, 0);
if (SUCCEEDED(hr))
{
// The device path is not intended for display.
printf("Device path: %ls\n", var.bstrVal);
VariantClear(&var);
}
pPropBag->lpVtbl->Release(pPropBag);
pMoniker->lpVtbl->Release(pMoniker);
}
}
int main(void)
{
HRESULT hr = CoInitializeEx(NULL, COINIT_MULTITHREADED);
if (SUCCEEDED(hr))
{
IEnumMoniker *pEnum;
hr = EnumerateDevices(&CLSID_VideoInputDeviceCategory, &pEnum);
if (SUCCEEDED(hr))
{
DisplayDeviceInformation(pEnum);
pEnum->lpVtbl->Release(pEnum);
}
hr = EnumerateDevices(&CLSID_AudioInputDeviceCategory, &pEnum);
if (SUCCEEDED(hr))
{
DisplayDeviceInformation(pEnum);
pEnum->lpVtbl->Release(pEnum);
}
CoUninitialize();
}
return 0;
}
icspring camera
Device path: \\?\usb#vid_32e6&pid_9005&mi_00#7&11de6da0&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global
I can't find an old WebCAM code right now.Quote from: ddainelis1 on December 21, 2025, 05:33:09 PMthe explanation above sounds what I expected Pelles C should do. I was hoping there would be a menu choice similar to the add files to delete files. However, I need to figure out how to do a right click on the MacBook Air.
again thank-yo for your help
Page created in 0.062 seconds with 15 queries.