2013-12-17 4 views
0

오류 MSG WIA를 사용하여 스캔 할 수 없습니다 :윈도우 7 64

파일이나 어셈블리를로드 할 수 없습니다 '버전 = 1.0.0.0, Interop.WIA을, 문화 = 중립, PublicKeyToken = null이'또는 하나의 의존성. 잘못된 형식의 프로그램을로드하려고했습니다.

솔루션

정상의 USB 스캐너 Windows XP에서 잘 작동, 그러나 잠시 위에서 발생 Windows에서 (ScanGear를 도구를 사용하여 발견 된) 네트워크 스캐너 (7) (64)로 스캔하기.

C# 코드 :

private void startscan() 
     { 

      try 
      { 

       CommonDialogClass dailog = new CommonDialogClass(); 
       ImageFile imgfile = (ImageFile)dailog.ShowAcquireImage(WiaDeviceType.ScannerDeviceType, WiaImageIntent.UnspecifiedIntent, WiaImageBias.MaximizeQuality, 
       FormatID.wiaFormatJPEG, true, true, false); 
       string firstname = DateTime.Now.Day.ToString() + DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString(); 
       string name = scantxtfname.Text.Trim() + ".jpeg"; 


       string filenamepath = ConfigurationManager.ConnectionStrings["scanfilepath"].ConnectionString.ToString() + firstname + name; 

       scanfile.Add(name); 
       firstint.Add(Convert.ToInt32(firstname)); 
       SaveImageToPNGFile(imgfile, filenamepath); 



       FileStream stream = new FileStream(filenamepath, FileMode.Open, FileAccess.Read); 

       stream.Close(); 

       DataTable dt = new DataTable(); 

       dt.Columns.Add("Scaned Files", typeof(string)); 

       datagridscanedfiles.DataSource = null; 

       for (int i = 0; i < scanfile.Count; i++) 
       { 
        DataRow r = dt.NewRow(); 
        r[0] = scanfile[i].ToString(); 
        dt.Rows.Add(r); 
       } 
       datagridscanedfiles.DataSource = dt; 
       datagridscanedfiles.Visible = true; 
       int ln = scanfile.Count; 

       pictureBox1.ImageLocation = filenamepath; 

      } 
      catch (Exception d) 
      { 

       MessageBox.Show(d.Message); 
      } 


     } 


private static void SaveImageToPNGFile(ImageFile image, string fileName) 
     { 
      try 
      { 
       ImageProcess imgProcess = new ImageProcess(); 
       object convertFilter = "Convert"; 
       string convertFilterID = imgProcess.FilterInfos.get_Item(ref convertFilter).FilterID; 
       imgProcess.Filters.Add(convertFilterID, 0); 
       SetWIAProperty(imgProcess.Filters[imgProcess.Filters.Count].Properties, "FormatID", WIA.FormatID.wiaFormatJPEG); 
       image = imgProcess.Apply(image); 
       image.SaveFile(fileName); 
      } 
      catch (Exception er) 
      { 

       MessageBox.Show(er.Message); 
      } 

     } 

    private static void SetWIAProperty(IProperties properties, object propName, object propValue) 
     { 
      Property prop = properties.get_Item(ref propName); 

      prop.set_Value(ref propValue); 
     } 

내가 문제보다 해결하는 방법을 제시하세요?

답변

0

프로젝트를 '모든 CPU'로 빌드하지 않았는지 확인하십시오. x86이어야합니다. WIA COM 구성 요소는 64 비트 모드로 실행할 수 없습니다.

+0

x86 응용 프로그램을 실행할 때 잘 실행됩니다 .... 감사합니다 ... –

0

필자는이 문제를 만났으며, 프로젝트를 X64 플랫폼에서 성공적으로 컴파일 할 수 없었습니다. WIA COM 구성 요소는 x64 모드에서 호출 할 수 없으므로 마침내 방금 다른 방법으로 넘어갔습니다. 단일 응용 프로그램에서 WIA 코드를 작성한 다음 다른 프로세스를 사용하여 기본 응용 프로그램에서이 검색 응용 프로그램을 호출합니다. 나는 이것이 최선의 해결책은 아니라고 생각하지만 적어도 잘 작동한다. 하하.