C# Windows CE使用的一些感受:使用Windows的开发机上用C#启动一个外部程序的方法有很多,但这些方法用在使用WinCE的目标工控机上都无能为力。

C# Windows CE使用1、

现在以打开一个IE为例,介绍如何在WinCE下使用C#来打开一个外部文件:

首先添加命名空间

  1. usingSystem.Runtime.InteropServices;,

然后调用API函数:

  1. [DllImport("coredll.Dll",
  2. EntryPoint="CreateProcess",SetLastError=true)]
  3. externstaticintCreateProcess(
  4. stringstrImageName,stringstrCmdLine,
  5. IntPtrpProcessAttributes,IntPtrpThreadAttributes,
  6. intbInheritsHandle,intdwCreationFlags,
  7. IntPtrpEnvironment, IntPtrpCurrentDir,
  8. IntPtrbArray,ProcessInfooProc);
  9. publicclassProcessInfo
  10. {
  11. publicInt32hProcess;
  12. publicInt32hThread;
  13. publicInt32ProcessID;
  14. publicInt32ThreadID;
  15. }

最后就可以编写需要打开IE的代码了(点击一个按钮打开IE浏览器中相应内容,此例程要求打开目标工控机硬盘上的Readme文件):

  1. privatevoidbutton_Click(
  2. objectsender,System.EventArgse)
  3. {
  4. ProcessInfopi=newProcessInfo();
  5. CreateProcess(" \\windows\\iesample.exe",
  6. "\\HardDisk\\Readme.htm",IntPtr.Zero,
  7. IntPtr.Zero,0,0,IntPtr.Zero,
  8. IntPtr.Zero,IntPtr.Zero,pi);
  9. }

C# Windows CE使用2、

有时候我们会希望我们的程式只被执行一次,VB的时代我们会用App.PrevInstance,而.net的时代我们可以用下列方式实现

  1. [STAThread]
  2. staticvoidMain()
  3. {
  4. //如果跟本程式命名的行程只有一个才执行程式
  5. if(System.Diagnostics.Process.
  6. GetProcessesByName(
  7. Application.ProductName).Length==1)
  8. {
  9. Application.Run(newForm1());
  10. }
  11. }

但此方法在WinCE下无法实现,所以我们还是要先调用动态链接库,

  1. [DllImport("coredll.Dll")]
  2. privatestaticexternintGetLastError();
  3. [DllImport("coredll.Dll")]
  4. privatestaticexternintReleaseMutex(IntPtrhMutex);
  5. [DllImport("coredll.Dll")]
  6. privatestaticexternIntPtrCreateMutex(
  7. SECURITY_ATTRIBUTESlpMutexAttributes,
  8. boolbInitialOwner,stringlpName);
  9. [StructLayout(youtKind.Sequential)]
  10. publicclassSECURITY_ATTRIBUTES
  11. {
  12. publicintnLength;
  13. publicintlpSecurityDescriptor;
  14. publicintbInheritHandle;
  15. }
  16. constintERROR_ALREADY_EXISTS=0183;

然后编写代码

  1. staticvoidMain()
  2. {
  3. #regionApi_CallCreateMutex;
  4. IntPtrhMutex;
  5. hMutex=CreateMutex(null,false,"程序名");
  6. if(GetLastError()!=ERROR_ALREADY_EXISTS)
  7. {
  8. Application.Run(newFrmmenu());
  9. }
  10. else
  11. {
  12. MessageBox.Show("本程序只允许同时运行一个");
  13. ReleaseMutex(hMutex);
  14. }
  15. #endregion
  16. }

C# Windows CE使用3、

在.NETFramework中没有函数可以激活属于另外一个进程或程序的窗体,所以我们要通过调用API函数来实现:

  1. usingSystem.Runtime.InteropServices;
  2. [DllImport("coredll.Dll")]
  3. publicstaticexternIntPtrFindWindow(
  4. Stringclassname,Stringtitle);
  5. [DllImport("coredll.Dll")]
  6. publicstaticexternvoidSetForegroundWindow(IntPtrhwnd);

然后使用下列代码即可

  1. IntPtrhDlg;
  2. hDlg=FindWindow(null,"窗口标题");
  3. SetForegroundWindow(hDlg);

最后,WinCE下的C#里不支持GroupBox控件,建议使用Panel控件代替;不支持Frame控件,如果非要达到那样的效果,可以用Label和TextBox组和起来应付一下。

其实,任何时候,只要.NETFramework无法满足编程者需要的时候,通常都可以使用托管(interop)机制直接与Windows交互。大家也许看出调用原有的[DllImport("user32.Dll")]动态链接库时无法满足WinCE下程序要求,所以我们调用了[DllImport("coredll.Dll")]。希望这篇文章能给初学者提供一些捷径。

C# Windows CE使用的一些感受和实例的介绍就向你介绍到这里,希望对你了解C# Windows CE使用有所帮助。

转载于:https://www.cnblogs.com/cwfsoft/archive/2010/06/23/1763217.html

C# Windows CE使用小技巧实例相关推荐

  1. Windows快速搜索小技巧

    Windows快速搜索小技巧 -基础配置部分 话不多说,script先安排上(辣鸡CSDN,batch语法高亮不能识别): @echo off set varStr=https://www.baidu ...

  2. 深度linux运行windows游戏,在deepin linux系统中手动安装windows游戏的小技巧

    本文介绍在deepin linux系统中手动安装windows游戏的小技巧.其实现在wine很好用了,基本dx9的游戏都能玩,但是有些RA2则效果一般,不是很好.关于deepin-wine的版本低有些 ...

  3. Windows 输入法 你不知道的小技巧

    关于Windows 输入法 你不知道的小技巧 U 模式 再平常的输入中,如果遇到不认识的字,可以先打一个u,再打组成这字的拼音或部首.比如 "又双叒叕"这个字不知道怎么读,就可以先 ...

  4. 12个windows电脑快捷键小技巧,速收藏

    分享12个windows电脑超赞的工作小技巧,还不赶紧收藏!今日分享给大家的这些windows超赞的小技巧,都是非常实用的,运用好这些小技巧,下班下得早,学会熟练运用这些,工资绝对蹭蹭往上涨. 12个 ...

  5. Windows电脑加速小技巧(VIP典藏版)

    Windows超实用技巧50篇博客(VIP典藏版) 目录 一.设置虚拟内存 二.清理优化桌面 三.设置开机启动项 四.加大内存条(有条件的可以) 五.系统盘换固态盘(有条件的可以) 六.Windows ...

  6. [分享]关于windows下的小技巧

    ----1.首先,决定您要增加到菜单中的文件类型,以及启动这类文件的应用程序.如果是某些在启动时会自动打开的新文件或让您可以立即使用的应用程序,如记事本.写字板或画图等,就不需要特别的准备工作.但如果 ...

  7. Windows用户安全小技巧

    本文适用于具有管理员用户和标准用户的所有Windows系统,如Windows 2000以上的操作系统,UAC是Windows Vista以上版本的具有功能. 新安装的Windows系统或者新购买的含有 ...

  8. windows商店_小技巧:微软Windows 10商店如何下载免费HEVC编解码器

    IT之家9月26日消息 HEVC(High Efficiency Video Coding)是世界各地公司使用的流行编解码器.早期的MKV和HEVC编解码器需要像VLC这样的第三方媒体播放器才能工作, ...

  9. html文件如何设置右键菜单,windows系统使用小技巧,创建属于自己的右键新建菜单-右键菜单设置...

    在计算机的使用过程中,用户会经常的使用一些文件件,而为了用户的方便,Windows系统在桌面的右键快捷菜单设置了一些内置的文件类型,比如:"WinZip"."文本文档&q ...

最新文章

  1. Swift3.0带来的变化汇总
  2. 统一用户及权限管理系统
  3. CXF发布restful WebService的入门例子(服务器端)
  4. 【转】高性能前端3-高性能javascript
  5. SAP Customer Data Cloud支持的Social Media channel
  6. 如何看待 70% 的程序员,缺乏数据结构和算法知识?
  7. 处理器指令编码可重定义的方法_从零开始设计四位栈处理器(2)——结构与指令集...
  8. 算法导论 练习12.3
  9. python工资一般多少-Python就业都有哪些岗位?每个岗位薪资多少?
  10. JavaWeb POI 将数据从数据库导出到Excel表 实例(亲测有效!)
  11. Node+puppeteer学习笔记(五)--API问题解决--使用功能强大的“ eval ”函数
  12. 【共词聚类分析】基于CNKI和WOS的小样本稳健性检验
  13. python语言编写从一加到100_python学习: 如何循序渐进学习Python语言
  14. Dell神州网信版 Win10 忘记登陆密码
  15. 那么问题来了:为什么苹果设计被黑出翔还能大卖呢?
  16. gocv-go语言调用opencv入门
  17. 常见SOC启动流程分析
  18. 不小心合并了icloud通讯录_iCloud合并通讯录没了如何恢复?最简单的技巧分析
  19. 【钉钉-场景化能力包】e签宝提供的电子签名能力
  20. 机器学习-吃瓜教程(西瓜书+南瓜书)-神经网络

热门文章

  1. 找不到物理服务器,日常物理服务器需要在什么地方升级?
  2. java 位运算 多个状态_位运算表示对象所处状态
  3. 计算机用电子表格验证方案,Excel电子表格的验证1.PDF
  4. php etcd 服务发现,confd+etcd+nginx 实现简单服务发现
  5. android studio islibrary,通过AndroidStudio发布Android Library到Jcenter[超详细]
  6. linux内核添加c代码,如何从C代码加载Linux内核模块?
  7. 涉及位操作的算法辑录
  8. Window10 64位,通过Python读取.mif, shp文件
  9. DL练习1:基于boston_house_prices的BP神经网络
  10. 在Ubuntu18.04下的Cmake使用记录