各位朋友: //需要引用System.Windows.Forms名称空间 string languageName="五笔";//查找第一个五笔输入法 foreach(InputLanguage l in InputLanguage.InstalledInputLanguages) 

  if(l.LayoutName.IndexOf(languageName)>=0) 
  { 
    InputLanguage.CurrentInputLanguage=l; 
    break; 
  }
} 
不知为什么用这段代码做成的   windows control library 的dll,(在网页中用来切换输入法的)。 
其它都没错,就好像  不能被aps.net(C#) 调用,麻烦大家能给我详细解答下,或者能给我出个解决方案, 非常谢谢大家!

解决方案 »

  1.   

    宿主不一样。windows control library生成的DLL,用到了本地PC资源,它的宿主应当是window,
    而asp.net页面运行于IE,如果想应用客户机PC资源,应当用activex插件实现。但C#,不是不能做,而是并不太适合于这项工作。
      

  2.   

    string languageName="五笔";//查找第一个五笔输入法  foreach(InputLanguage l in InputLanguage.InstalledInputLanguages)  
    {  
      if(l.LayoutName.IndexOf(languageName)>=0)  
      {  
        InputLanguage.CurrentInputLanguage=l;  
        break;  
      } 
    }  
    这段代码即使能运行,也只是得到服务器端的,也无法得到客户端的。你以为asp.net万能啊。
    b/s和c/s的理念不同,搞清楚了就好办了。
      

  3.   

    Inwuyaowei朋友,您好,您说的没错,我是想通过asp.net的代码调用C# (class library)写的DLL, 但类中用到了 loadkeyboard() 等在user32.dll中的函数 , 但 user32.dll这里的函数 ,不知为何在asp.net 中不起作用。
      

  4.   

    楼主应当研究activex,这样才能解决问题,而不是研究为什么不起做用。
      

  5.   

    yunfeng007朋友 ,  但我要用到的  loadkeyboard()的函数 ,封装在class library类的DLL中,  能否通过 asp.net 中的代码,调用到DLL里的函数啊,(在客户端调用啊 ?)  谢谢。
      

  6.   

    但 activex 无法实现  在网页中的 输入法自由切换, 因为这根据  输入法的名字传给调用的DLL再由 DLL中的函数实现 激活输入法
      

  7.   

    不过我也用class library 写过dll ,里面的loadkeyborad函数也不起作用,所以我想问下,客户端有没有切换输入法的方法??