@@ -260,24 +260,31 @@ public static bool ReadClipboardImage(out byte[] i)
260260 }
261261 }
262262
263- public static bool ReadClipboard ( out string str )
263+ public static bool ReadClipboard ( out string [ ] str )
264264 {
265265 Clipboard . Open ( ) ;
266-
266+ str = Array . Empty < string > ( ) ;
267267 /*
268268 * 1 File
269269 */
270270
271+ if ( Clipboard . IsFormatAvailable ( ( uint ) ClipboardFormat . CF_HDROP ) ) {
272+ // var d = Clipboard.GetData((uint) ClipboardFormat.CF_HDROP);
273+ var files = Clipboard . GetDragQueryList ( ) ;
274+ str = files ;
275+ goto cl ;
276+ }
277+
271278 var data = Clipboard . GetData ( ( uint ) ClipboardFormat . FileNameW ) ;
272279
273280 if ( data is IntPtr { } p && p == IntPtr . Zero ) {
274281 str = null ;
275282 }
276283 else {
277- str = ( string ) data ;
284+ str = new string [ ] { ( string ) data } ;
278285 }
279286
280- if ( ! string . IsNullOrWhiteSpace ( str ) ) goto cl ;
287+ if ( str is { } && str . Any ( ) ) goto cl ;
281288
282289 /*
283290 * 3 Text
@@ -290,16 +297,16 @@ public static bool ReadClipboard(out string str)
290297 str = null ;
291298 }
292299 else {
293- str = ( string ) o ;
300+ str = new string [ ] { ( string ) o } ;
294301 }
295302
296303 if ( o is nint n && n != nint . Zero ) {
297304 // str = (string) o;
298305
299- str = Marshal . PtrToStringUni ( n ) ;
306+ str = new [ ] { Marshal . PtrToStringUni ( n ) } ;
300307 }
301308
302- if ( ! string . IsNullOrWhiteSpace ( str ) ) goto cl ;
309+ if ( str is { } && str . Any ( ) ) goto cl ;
303310 }
304311
305312 /*
@@ -314,15 +321,17 @@ public static bool ReadClipboard(out string str)
314321 File . WriteAllBytes ( s , ms ) ;
315322 }
316323
317- str = s ;
324+ str = new [ ] { s } ;
318325 Debug . WriteLine ( $ "read png from clipboard { s } ") ;
319326 }
320327
321328 cl :
322329 Clipboard . Close ( ) ;
323330 Debug . WriteLine ( $ "Clipboard data: { str } ") ;
331+ str = str . Where ( SearchQuery . IsValidSourceType ) . ToArray ( ) ;
324332
325- var b = SearchQuery . IsValidSourceType ( str ) ;
333+ // var b = SearchQuery.IsValidSourceType(str);
334+ var b = str . Any ( ) ;
326335 return b ;
327336 }
328337
0 commit comments