{
internal const int AppStartedStatus = 1;
- internal delegate bool ExtraDataCallback(SafeAppControlHandle handle, string key, IntPtr userData);
- internal delegate bool AppMatchedCallback(SafeAppControlHandle handle, string applicationId, IntPtr userData);
+ internal delegate bool ExtraDataCallback(IntPtr handle, string key, IntPtr userData);
+ internal delegate bool AppMatchedCallback(IntPtr handle, string applicationId, IntPtr userData);
internal delegate void ReplyCallback(IntPtr request, IntPtr reply, int result, IntPtr userData);
internal enum ErrorCode
}
List<string> ids = new List<string>();
- Interop.AppControl.AppMatchedCallback callback = new Interop.AppControl.AppMatchedCallback(
- (handle, applicationId, userData) =>
+ Interop.AppControl.AppMatchedCallback callback = (handle, applicationId, userData) =>
+ {
+ if (applicationId == null)
{
- List<string> idsList = Marshal.GetObjectForIUnknown(userData) as List<string>;
- if (idsList != null)
- {
- idsList.Add(applicationId);
- return true;
- }
- else
- {
return false;
- }
- });
+ }
- IntPtr pointerToApplicationIds = Marshal.GetIUnknownForObject(ids);
- if (pointerToApplicationIds != IntPtr.Zero)
+ ids.Add(applicationId);
+ return true;
+ };
+
+ Interop.AppControl.ErrorCode err = Interop.AppControl.ForeachAppMatched(control._handle, callback, IntPtr.Zero);
+ if (err != Interop.AppControl.ErrorCode.None)
{
- Interop.AppControl.ErrorCode err = Interop.AppControl.ForeachAppMatched(control._handle, callback, pointerToApplicationIds);
- if (err != Interop.AppControl.ErrorCode.None)
- {
throw new InvalidOperationException("Failed to get matched application ids. err = " + err);
- }
- return ids;
}
return ids;
public IEnumerable<string> GetKeys()
{
List<string> keys = new List<string>();
- Interop.AppControl.ExtraDataCallback callback = new Interop.AppControl.ExtraDataCallback(
- (handle, key, userData) =>
- {
- List<string> keysList = Marshal.GetObjectForIUnknown(userData) as List<string>;
- if (keysList != null)
- {
- keysList.Add(key);
- return true;
- }
- else
- {
- return false;
- }
- });
-
- IntPtr pointerToKeys = Marshal.GetIUnknownForObject(keys);
- if (pointerToKeys != IntPtr.Zero)
+ Interop.AppControl.ExtraDataCallback callback = (handle, key, userData) =>
{
- Interop.AppControl.ErrorCode err = Interop.AppControl.ForeachExtraData(_handle, callback, pointerToKeys);
- if (err != Interop.AppControl.ErrorCode.None)
+ if (key == null)
{
- throw new InvalidOperationException("Failed to get keys. err = " + err);
+ return false;
}
- return keys;
+
+ keys.Add(key);
+ return true;
+ };
+
+ Interop.AppControl.ErrorCode err = Interop.AppControl.ForeachExtraData(_handle, callback, IntPtr.Zero);
+ if (err != Interop.AppControl.ErrorCode.None)
+ {
+ throw new InvalidOperationException("Failed to get keys. err = " + err);
}
return keys;