通过.NET CF本身提供的方法枚举设备中的所有SIP可以方便的完成这个问题。如下:
参考:http://msdn.microsoft.com/en-us/library/ms172538.aspx
        // 定义一个InputPanel 
        private InputPanel m_inputPanel = new InputPanel();
        
        // 枚举SIP
        foreach (InputMethod method in m_inputPanel.InputMethods)
        {
            this.listBox.Items.Add(method.Name);
        }
通过上面的方式枚举设备所有SIP后,就可以选择自己需要的SIP了
参考:http://msdn.microsoft.com/en-us/library/microsoft.windowsce.forms.inputpanel.currentinputmethod.aspx
        private void SetNewSIP(string sipName)
        {
            foreach (InputMethod method in m_inputPanel.InputMethods)
            {
                if (sipName.Equals(method.Name))
                {
                    m_inputPanel.CurrentInputMethod = method;
                    break;
                }
            }
        }
参考:
http://www.developer.com/ws/pc/article.php/10947_3583686_1/Managing-the-Software-Input-Panel-in-Your-Applications.htm
http://www.pcreview.co.uk/forums/thread-2610504.php

ASK:
我想P/Invoke系统API来实现.NET CF为我们实现的枚举功能,如下代码,但是总是返回0,也就是没有枚举到,请问,是我的结构体参数设置错误还是其他呢?
    public class SIPManager
    {
        public delegate int IMENUMPROC(ref IMENUMINFO IMinfo);
        [DllImport("coredll.dll")]
        public static extern int SipEnumIM(IMENUMPROC EnumIMProc);
        private List<IMENUMINFO> SIPs = new List<IMENUMINFO>();

public int SipEnumIMProc(ref IMENUMINFO IMinfo)
        {
            SIPs.Add(IMinfo);
            return 1;
        }

public List<IMENUMINFO> GetSIPs()
        {
            int imcount = SipEnumIM(SipEnumIMProc);
            return SIPs;
        }

public class IMENUMINFO
        {
            public StringBuilder szName;
            public Guid clsid;
            
            public IMENUMINFO()
            {
                szName = new StringBuilder();
                clsid = new Guid();
            }
        }
    }

// 按照下面方式调用
    SIPManager sipmgr = new SIPManager();
    List<SIPManager.IMENUMINFO> list = new List<SIPManager.IMENUMINFO>();
    list = sipmgr.GetSIPs();

// 但是每次跟踪进GetSIPs之后,里面imcount返回值总为0,也就是表示失败

--------------------------------------------------

李森 – listen
E-mail:  lisencool@gmail.com

声明:
这里集中了在WinCE和Windows Mobile开发中的一些基本常识。我很乐意和大家分享,也希望大家提出意见,并给我投稿,我会第一时间替您发表并署上您的大名!

Announce:
Here collects general knowledge on WinCE and Windows mobile. I 'm very glad to share them with all friends, and also hope you can share your problems and opinions and contribute articles to me to share with others. I'll publish your articles and sign your name at the first time.

  

转载于:https://www.cnblogs.com/Lisen/archive/2009/09/17/1568754.html

P/Invoke调用SipEnumIM枚举SIP失败?相关推荐

  1. 在 C# 中通过 P/Invoke 调用Win32 DLL

    ,.NET Framework 1.0 或 1.1 版类库中存在任何 Windows 所没有的功能限制都不足为怪.毕竟,32 位的 Windows(不管何种版本)是一个成熟的操作系统,为广大客户服务了 ...

  2. 非常好的dllimport 文章--在 C# 中通过 P/Invoke 调用Win32 DLL

    http://msdn.microsoft.com/zh-cn/library/aa686045.aspx 在 C# 中通过 P/Invoke 调用Win32 DLL 发布日期 : 1/13/2005 ...

  3. 使用Signature Tool自动生成P/Invoke调用Windows API的C#函数声明

    使用Signature Tool自动生成P/Invoke调用Windows API的C#函数声明 分类: 小技巧 Win32编程 C++ 解决难题 .NET2009-02-05 20:53 5186人 ...

  4. 转:在 C# 中使用 P/Invoke 调用 Mupdf 函数库显示 PDF 文档

    在 C# 中使用 P/Invoke 调用 Mupdf 函数库显示 PDF 文档 一直以来,我都想为 PDF 补丁丁添加一个 PDF 渲染引擎.可是,目前并没有可以在 .NET 框架上运行的免费 PDF ...

  5. 小程序微信授权登录服务器异常,解决调试腾讯云微信小程序Demo错误“登录失败:调用鉴权服务失败#40029_WEIXIN_CODE_ERR”...

    此文章解决大家有可能遇到的"登录失败:调用鉴权服务失败#40029的问题"~~ 很多人出现上面的问题,那是因为:如果在购买解决方案时,把AppId 和 AppSecret 填写错误 ...

  6. Ulua调用C#枚举

    Ulua调用C#枚举 小主也是刚做变成没有多久的人,也是刚开始写文章,如果写的不好的话希望大家给我指出,能共同探讨问题,今天讲一下lua中调用C#的枚举类型吧,我之前也在网上看了很多的文章,但是大家只 ...

  7. C#中用Invoke调用控件方法和BeginInvoke线程使用方法

    C#中Invoke调用方法 在C#中,有时候会调用不同控件的同一个public(公共)方法,具体用到哪个控件的public方法却是视情况而定的,这个时候你就可以用Invoke了. 现在有控件名为Man ...

  8. 重启唯一的窗体实例,以及调用系统重启函数失败解决办法

    1.修改Program.cs内的程序启动函数 static class Program{public static System.Threading.Mutex Instance;/// <su ...

  9. Ajax 调用webservice 解决跨域请求和发布到服务器后本地调用成功外网失败的问题...

    webservice 代码 1 /// <summary> 2 /// MESService 的摘要说明 3 /// </summary> 4 [WebService(Name ...

最新文章

  1. 找到一本不错的Linux电子书,附《Linux就该这么学》章节目录。
  2. 用数字告诉你2014年Google的野心在哪里
  3. Android中的Notification
  4. 11尺寸长宽 iphone_弱电工程LED显示屏尺寸规格及计算方法
  5. 条形图坐标轴_解密咨询报告中常见的双层条形图的制作方法
  6. oracle 批量 重建索引,Oracle重建索引Shell脚本、SQL脚本分享
  7. MAVEN Error: Using platform encoding (GBK actually) to copy filtered resources.....
  8. python html转图片失真_html dom 转化成图片踩坑记(canvas toDataURL)
  9. SpringBootJ2EE相关介绍
  10. windows设置定时任务(win10任务计划程序)
  11. 通过有线网卡共享无线网络
  12. 苹果手机代数_苹果一共几代?
  13. Linux: E45: ‘readonly‘ option is set (add ! to override)
  14. 点餐系统,餐厅点餐系统,外卖点餐系统python计算机毕业设计
  15. 4月9日京东考试感想
  16. 视频号还是直播?2021年微信财富密码预言
  17. 杂感-ThinkPad E570
  18. 首都经贸大学计算机科学与技术专业,河北经贸大学经济管理学院的计算机科学与技术专业怎么样啊...
  19. java double 保留小数_java使double类型保留两位小数的方法
  20. FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask. ORC split

热门文章

  1. springboot在intellij中的热部署(Hot swapping)配置
  2. win7 右键增加打开 powershell选项
  3. nltk英文词性标注
  4. oracle hr样本模式,Oracle 样本模式 HR
  5. 自然哲学的数学原理_慢跑的数学原理(一):珍惜做的每一份功
  6. c0000005错误怎么解决_iTunes提示3194未知错误怎么办【解决方法】
  7. c语言指针中冒号的用法,在c中使用冒号后面的类名
  8. 物联网有哪些技术 物联网跟云计算人工智能有什么关系
  9. volatile 和 synchronized的区别
  10. C语言 · 黑色星期五