@@ -165,15 +165,7 @@ public async Task InvokeItem(int itemID)
165
165
166
166
public static async Task WarmUpQueryContextMenuAsync ( )
167
167
{
168
- var thread = new ThreadWithMessageQueue ( ) ;
169
- await thread . PostMethod ( ( ) =>
170
- {
171
- // Create a dummy context menu for warming up
172
- var shellItem = ShellFolderExtensions . GetShellItemFromPathOrPidl ( "C:\\ " ) ;
173
- Shell32 . IContextMenu menu = shellItem . Parent . GetChildrenUIObjects < Shell32 . IContextMenu > ( default , shellItem ) ;
174
- menu . QueryContextMenu ( User32 . CreatePopupMenu ( ) , 0 , 1 , 0x7FFF , Shell32 . CMF . CMF_NORMAL ) ;
175
- } ) ;
176
- thread . Dispose ( ) ;
168
+ using var cMenu = await GetContextMenuForFiles ( new string [ ] { "C:\\ " } , Shell32 . CMF . CMF_NORMAL ) ;
177
169
}
178
170
179
171
#endregion FactoryMethods
@@ -262,18 +254,18 @@ private void EnumMenuItems(
262
254
263
255
if ( loadSubenus )
264
256
{
265
- LoadSubMenu ( hSubMenu ) ;
257
+ LoadSubMenu ( ) ;
266
258
}
267
259
else
268
260
{
269
- loadSubMenuActions . Add ( subItems , ( ) => LoadSubMenu ( hSubMenu ) ) ;
261
+ loadSubMenuActions . Add ( subItems , LoadSubMenu ) ;
270
262
}
271
263
272
264
menuItem . SubItems = subItems ;
273
265
274
266
Debug . WriteLine ( "Item {0}: done submenu" , ii ) ;
275
267
276
- void LoadSubMenu ( HMENU hSubMenu )
268
+ void LoadSubMenu ( )
277
269
{
278
270
try
279
271
{
@@ -300,24 +292,25 @@ void LoadSubMenu(HMENU hSubMenu)
300
292
301
293
public async Task < bool > LoadSubMenu ( List < Win32ContextMenuItem > subItems )
302
294
{
303
- return await owningThread . PostMethod < bool > ( ( ) =>
295
+ if ( loadSubMenuActions . Remove ( subItems , out var loadSubMenuAction ) )
304
296
{
305
- var result = loadSubMenuActions . Remove ( subItems , out var loadSubMenuAction ) ;
306
-
307
- if ( result )
297
+ return await owningThread . PostMethod < bool > ( ( ) =>
308
298
{
309
299
try
310
300
{
311
301
loadSubMenuAction ! ( ) ;
302
+ return true ;
312
303
}
313
304
catch ( COMException )
314
305
{
315
- result = false ;
306
+ return false ;
316
307
}
317
- }
318
-
319
- return result ;
320
- } ) ;
308
+ } ) ;
309
+ }
310
+ else
311
+ {
312
+ return false ;
313
+ }
321
314
}
322
315
323
316
private static string ? GetCommandString ( Shell32 . IContextMenu cMenu , uint offset , Shell32 . GCS flags = Shell32 . GCS . GCS_VERBW )
0 commit comments