2014-07-24 52 views
1

我試圖製作一個可以使用C#和WIA掃描文檔的應用程序。但是在設置頁面大小屬性時遇到了問題。當我運行掃描過程中我的應用程序拋出一個錯誤:WIA設置頁面大小不起作用

「System.Runtime.InteropServices.COMException」類型的未處理的異常出現在DigiKnjiga.exe

其他信息:從HRESULT異常:0x80210067

我已經嘗試過使用這些屬性:PageSize(3097),PageWidth(3098)& PageHeight(3099),Horizo​​ntalExtent(6151)& VerticalExtent(6152)。但是設置任何這些值都會引發前面提到的異常。

這裏是啓動掃描過程中的事件:我不知道是否有人知道解決這個問題

private void scanNew_Click(object sender, EventArgs e) 
    { 
     if (Scanner.ChosenDevice > 0) 
     { 
      Device = deviceManager.DeviceInfos[Scanner.ChosenDevice].Connect(); 

      switch (Scanner.ColorCode) 
      { 
       case 0://color 
        Device.Items[1].Properties["6146"].set_Value(1); 
        break; 
       case 1://grayscale 
        Device.Items[1].Properties["6146"].set_Value(2); 
        break; 
       case 2://black and white 
        Device.Items[1].Properties["6146"].set_Value(4); 
        break; 
      } 

      //(DPI) 
      Device.Items[1].Properties["6147"].set_Value(Scanner.DPI); 
      Device.Items[1].Properties["6148"].set_Value(Scanner.DPI); 

      //brightness 
      Device.Items[1].Properties["Brightness"].set_Value(Scanner.Brightness); 

      //contrast 
      Device.Items[1].Properties["Contrast"].set_Value(Scanner.Contrast); 

      switch (Scanner.Format) 
      { 
       case 0://A3 
        Device.Items[1].Properties["3097"].set_Value(10); 
        //Device.Items[1].Properties["6151"].set_Value(11692); 
        //Device.Items[1].Properties["6152"].set_Value(16535); 
        break; 
       case 1://A4 
        Device.Items[1].Properties["3097"].set_Value(0); 
        //Device.Items[1].Properties["6156"].set_Value(1); 
        //Device.Items[1].Properties["3098"].set_Value(8267); 
        //Device.Items[1].Properties["3099"].set_Value(11692); 
        ////Device.Items[1].Properties["6151"].set_Value(1165 * 2); 
        ////Device.Items[1].Properties["6152"].set_Value(1653 * 2); 
        ////Device.Items[1].Properties["3097"].set_Value("0"); 
        break; 
       case 2://A5 
        Device.Items[1].Properties["3097"].set_Value(11); 
        //Device.Items[1].Properties["6151"].set_Value(1165); 
        //Device.Items[1].Properties["6152"].set_Value(1653); 
        break; 
      } 

      switch (Scanner.FileType) 
      { 
       case 0://JPEG 
        image = (WIA.ImageFile)Device.Items[1].Transfer(WIA.FormatID.wiaFormatJPEG); 
        break; 
       case 1://PNG 
        image = (WIA.ImageFile)Device.Items[1].Transfer(WIA.FormatID.wiaFormatPNG); 
        break; 
       case 2://BMP 
        image = (WIA.ImageFile)Device.Items[1].Transfer(WIA.FormatID.wiaFormatBMP); 
        break; 
       case 3://TIFF 
        image = (WIA.ImageFile)Device.Items[1].Transfer(WIA.FormatID.wiaFormatTIFF); 
        break; 
      } 

      byte[] imageBytes = (byte[])image.FileData.get_BinaryData(); 
      MemoryStream ms = new MemoryStream(imageBytes); 
      Image image2 = Image.FromStream(ms); 

      Bitmap smaller= new Bitmap(image2 , new Size(prikazZbirke.Width, prikazZbirke.Height)); 
      prikazStrani.Size = new System.Drawing.Size(image2 .Width, image2 .Height); 
      prikazStrani.Location = new Point(0, 0); 
      prikazStrani.Image = image2 ; 
      image2 .Save("test.jpg"); 
     } 
    } 

,我感謝你在爲你的答案。同時爲任何拼寫錯誤道歉,因爲我不是英文的。

+0

您是否嘗試過谷歌搜索「0x80210067」?這可能會提供一些見解。以下是熱門影片: http://social.msdn.microsoft.com/Forums/vstudio/en-US/5c67c6a5-728f-41f9-a586-2d139394fac7/windows-image-acquisition-error-hresult-0x80210067?forum= vbgeneral – RenniePet

+0

謝謝你的回覆@RenniePet。我以前曾訪問過該網站,並且我可以從中收集該例外是「YOURERROR」錯誤或類似情況。不知道這到底意味着什麼。 – MrSnoopy

回答

-1

cahnge切換情況如下,它可以工作(但要確保該物業(3097)在您的SCANER支持)

switch (Scanner.Format) 
     { 
      case 0://A3 
       Device.Properties["3097"].set_Value(10); 

       break; 
      case 1://A4 
       Device.Properties["3097"].set_Value(0); 

       break; 
      case 2://A5 
       Device.Properties["3097"].set_Value(11); 
       break; 
     }