static string[] GetBindStringList(NativeMethods.IInternetBindInfo bind, NativeMethods.BINDSTRING kind, int count) { IntPtr pArray = Marshal.AllocCoTaskMem(Marshal.SizeOf(typeof(IntPtr)) * count); try { int resultCount = count; bind.GetBindString( NativeMethods.BINDSTRING.BINDSTRING_USERAGENT, pArray, count, ref resultCount); string[] result = new string[resultCount]; for (int i = 0; i < resultCount; i++) { result[i] = Marshal.PtrToStringUni( Marshal.ReadIntPtr(new IntPtr(pArray.ToInt64() + i))); } return(result); } finally { Marshal.FreeCoTaskMem(pArray); } }
static string GetBindString(NativeMethods.IInternetBindInfo bind, NativeMethods.BINDSTRING kind) { string[] result = GetBindStringList(bind, kind, 1); if (result.Length == 0) { return(null); } else { return(result[0]); } }
static string[] GetBindStringList(NativeMethods.IInternetBindInfo bind, NativeMethods.BINDSTRING kind) { return(GetBindStringList(bind, kind, 500)); }