static void test_assoc_one(const struct assoc_test_struct* test) { LPWSTR extension, type_expected, type_returned; PERCEIVED perceived; HRESULT hr; INT flags; /* if SHStrDupA receives a nullptr as input, it will null the output */ SHStrDupA(test->extension, &extension); SHStrDupA(test->type, &type_expected); perceived = 0xdeadbeef; flags = 0xdeadbeef; hr = pAssocGetPerceivedType(extension, &perceived, &flags, NULL); expect_hr(type_expected ? S_OK : test->hr, hr); ok(perceived == test->perceived, "%s: got perceived 0x%x, expected 0x%x\n", test->extension, perceived, test->perceived); ok(flags == test->flags, "%s: got flags 0x%x, expected 0x%x\n", test->extension, flags, test->flags); type_returned = (void *)0xdeadbeef; perceived = 0xdeadbeef; flags = 0xdeadbeef; hr = pAssocGetPerceivedType(extension, &perceived, &flags, &type_returned); expect_hr(type_expected ? S_OK : test->hr, hr); ok(perceived == test->perceived, "%s: got perceived 0x%x, expected 0x%x\n", test->extension, perceived, test->perceived); ok(flags == test->flags, "%s: got flags 0x%x, expected 0x%x\n", test->extension, flags, test->flags); if (!type_expected) { ok(type_returned == (void *)0xdeadbeef || broken(type_returned == NULL) /* Win 8 */, "%s: got type %p, expected 0xdeadbeef\n", test->extension, type_returned); } else if (type_returned == (void *)0xdeadbeef) { ok(type_returned != (void *)0xdeadbeef, "%s: got type %p, expected '%s'\n", test->extension, type_returned, test->type); } else { ok(StrCmpIW(type_expected, type_returned) == 0, "%s: got type %s, expected '%s'\n", test->extension, wine_dbgstr_w(type_returned), test->type); } CoTaskMemFree(type_returned); CoTaskMemFree(extension); CoTaskMemFree(type_expected); }
void winSetAppUserModelID(HWND hWnd, const char *AppID) { PROPVARIANT pv; IPropertyStore *pps = NULL; HRESULT hr; if (g_pSHGetPropertyStoreForWindow == NULL) { return; } winDebug("winSetAppUserMOdelID - hwnd 0x%08x appid '%s'\n", hWnd, AppID); hr = g_pSHGetPropertyStoreForWindow(hWnd, &IID_IPropertyStore, (void **) &pps); if (SUCCEEDED(hr) && pps) { memset(&pv, 0, sizeof(PROPVARIANT)); if (AppID) { pv.vt = VT_LPWSTR; hr = SHStrDupA(AppID, &pv.pwszVal); } if (SUCCEEDED(hr)) { pps->lpVtbl->SetValue(pps, &PKEY_AppUserModel_ID, &pv); PropVariantClear(&pv); } pps->lpVtbl->Release(pps); } }