2011-01-30 4 views
0

Watinを使用してクリップボードに画像をコピーしようとしていますが、このエラーが発生します。WatiNセキュリティ例外ソリューション?

AlertDialogHandlerを使用すると回避できますか?

public System.Drawing.Image GetPicture(WatiN.Core.Image image, ref IE browser) 
     { 
      if (image == null || !image.Exists || string.IsNullOrEmpty(image.Src)) 
       return null; 
      const string t_js = 
        @"var div = document.images[{0}]; 
         div.contentEditable ='true'; 
         var controlRange; 
         if(document.body.createControlRange) 
         {{ 
          controlRange = document.body.createControlRange(); 
          controlRange.addElement(div); 
          controlRange.execCommand('Copy'); 
         }} 
         div.contentEditable = 'false';"; 

      var cnt = -1; 
      foreach (var image1 in browser.Images) 
      { 
       cnt++; 
       if (image1 != null && image1.Exists && !string.IsNullOrEmpty(image1.Src) && image1.Src.ToLower() == image.Src.ToLower()) 
        break; 
      } 
      var script = string.Format(t_js, cnt); 


      WatiN.Core.DialogHandlers.AlertDialogHandler alertDialogHandler = new WatiN.Core.DialogHandlers.AlertDialogHandler(); 
      using (new WatiN.Core.DialogHandlers.UseDialogOnce(browser.DialogWatcher, alertDialogHandler)) 
      { 

       browser.RunScript(script); // Exception comes here !! 


alertDialogHandler.WaitUntilExists(); 

       alertDialogHandler.OKButton.Click(); 

       browser.WaitForComplete(); 

      } 



      var data = Clipboard.GetDataObject(); 
      if (data == null) 
       return null; 
      var q = data.GetFormats(); 
      q.ToString(); 
      var q2 = data.GetFormats(true); 
      q2.ToString(); 
      if (data.GetDataPresent(DataFormats.Bitmap)) 
      { 
       var img = data.GetData(DataFormats.Bitmap, true); 
       return img as System.Drawing.Image; 
      } 
      if (data.GetDataPresent(DataFormats.Dib)) 
      { 
       var img = data.GetData(DataFormats.Dib, true); 
       return img as System.Drawing.Image; 
      } 
      if (data.GetDataPresent(DataFormats.EnhancedMetafile)) 
      { 
       var img = data.GetData(DataFormats.EnhancedMetafile, true); 
       return img as System.Drawing.Image; 
      } 
      if (data.GetDataPresent(DataFormats.MetafilePict)) 
      { 
       var img = data.GetData(DataFormats.MetafilePict, true); 
       return img as System.Drawing.Image; 
      } 
      if (data.GetDataPresent(DataFormats.Tiff)) 
      { 
       var img = data.GetData(DataFormats.Tiff, true); 
       return img as System.Drawing.Image; 
      } 
      if (data.GetDataPresent(DataFormats.Serializable)) 
      { 
       var img = data.GetData(DataFormats.Serializable, true); 
       return img as System.Drawing.Image; 
      } 
      return null; 
     } 

ありがとうございます!セキュリティ例外の

画像:

enter image description here

答えて

1

私はそれがIEのセキュリティ設定

後藤 [セキュリティ]タブで何かを持っていると信じて - >(インターネット/ローカルの/ etc)適切なゾーンを選択 - > Custome Levelボタンをクリック - >有効にする(スクリプト - >プログラムによるクリップボードへのアクセスを許可する)

+0

ありがとう、私はコードを使用することを避けることができるかどうか疑問に思っていた。 – kakopappa

関連する問題