WinCE下使用C#的几个小技巧

C# WinCE开发实战 这里写自定义目录标题项目背景新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 项目背景 由于项目需要将程序对接设备,决定选择 新的改变 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑 阅读详情

WinCE下使用C#的几个小技巧

转自宝贝的天空

 

前些天,小嫚儿在工作中遇见一点麻烦,导致工作进度缓慢WinCE下使用C#的几个小技巧,小嫚儿也试着将遇到的问题发往论坛以及上周被黑掉的BLOG上,可都没有得到什么建设性的意见。不过,在老大和小嫚儿的共同努力下,三个小麻烦已被我们一一攻破,小嫚儿也提前完成了整个软件部分的设计,现在小嫚儿就和大家一起分享这几个小技巧,也为正在被WinCE折磨得生不如死的 “幼儿挨踢”们提供一些小窍门。

1、我们知道,在使用Windows的开发机上用C#启动一个外部程序的方法有很多,但这些方法用在使用WinCE的目标工控机上都无能为力,现在小嫚儿以打开一个IE为例,介绍如何在WinCE下使用C#来打开一个外部文件:首先添加命名空间

using System.Runtime.InteropServices;,然后调用API函数:

[DllImport("coredll.Dll",  EntryPoint="CreateProcess",  SetLastError=true)] 
extern  static  int  CreateProcess(string  strImageName,  string  strCmdLine,  IntPtr  pProcessAttributes,  IntPtr  pThreadAttributes  ,  int  bInheritsHandle,  int  dwCreationFlags,  IntPtr  pEnvironment,  IntPtr  pCurrentDir,  IntPtr  bArray,  ProcessInfo  oProc); 
  public  class  ProcessInfo 
  { 
   public  Int32  hProcess; 
   public  Int32  hThread; 
   public  Int32  ProcessID; 
   public  Int32  ThreadID; 
  } 
最后就可以编写你需要打开IE的代码了(点击一个按钮打开IE浏览器中相应内容,此例程要求打开目标工控机硬盘上的Readme文件):
 private void button_Click(object sender, System.EventArgs e)
  {
   ProcessInfo  pi  =  new  ProcessInfo(); 
   CreateProcess("//windows//iesample.exe"  ,  "//HardDisk//Readme.htm",  IntPtr.Zero,  IntPtr.Zero,  0,  0,  IntPtr.Zero,  IntPtr.Zero,  IntPtr.Zero,  pi);   
  }
2、有时候我们会希望我们的程式只被执行一次,VB的时代我们会用App.PrevInstance,而.net的时代我们可以用下列方式实现
  [STAThread]
 static void Main()
{
   //如果跟本程式命名的行程只有一个才执行程式
   if (System.Diagnostics.Process.GetProcessesByName(
     Application.ProductName).Length == 1)
  {
    Application.Run(new Form1());
  }
}
但此方法在WinCE下无法实现,所以我们还是要先调用动态链接库,
[DllImport("coredll.Dll")]
private static extern int GetLastError();

[DllImport("coredll.Dll")]
private static extern int ReleaseMutex(IntPtr hMutex);

[DllImport("coredll.Dll")]
private static extern IntPtr CreateMutex(SECURITY_ATTRIBUTES lpMutexAttributes,bool bInitialOwner,string lpName);

[StructLayout( LayoutKind.Sequential)]
public class SECURITY_ATTRIBUTES
{
 public int nLength;
 public int lpSecurityDescriptor;
 public int bInheritHandle;
}
const int ERROR_ALREADY_EXISTS = 0183;
然后编写代码
static void Main()
{  
  #region Api_Call CreateMutex;
IntPtr hMutex;
  hMutex=CreateMutex(null,false,"程序名");
  if (GetLastError()!=ERROR_ALREADY_EXISTS)
  {
   Application.Run(new Frmmenu()); 
  }
  else
  {
   MessageBox.Show("本程序只允许同时运行一个");
   ReleaseMutex(hMutex);
 }
 #endregion
}
3、有时我们希望自己的程序能做到激活一个窗体,但在 .NET  Framework 中没有函数可以激活属于另外一个进程或程序的窗体。所以,我们还是要调用API函数来实现:
using System.Runtime.InteropServices;
[DllImport("coredll.Dll")]
 public static extern IntPtr FindWindow(String classname, String title);

[DllImport("coredll.Dll")]
 public static extern void  SetForegroundWindow(IntPtr hwnd);
然后使用下列代码即可
IntPtr hDlg;
hDlg=FindWindow(null, "窗口标题");
SetForegroundWindow( hDlg );
最后,WinCE下的C#里不支持GroupBox控件,建议使用Panel控件代替;不支持Frame控件,如果非要达到那样的效果,可以用Label和TextBox组和起来应付一下。
其实,任何时候,只要.NET Framework无法满足编程者的需要,通常都可以使用托管(interop)机制直接与Windows 交互。大家也许看出调用原有的[DllImport("user32 .Dll")]动态链接库时无法满足WinCE下程序要求,所以我们调用了[DllImport("coredll.Dll")],并不是小嫚儿自己想到去调用它的,而是在网上看到了一篇“bitsbird”写的例程,很多人将自己的经验无私的与别人分享,所以小嫚儿写了此篇文章,虽然让行家看起来文章很浅显,但希望能给象小嫚儿这样的初学者提供一些捷径。

C#开发windows ce手持设备配置环境 一、所需软件 1.Windows Mobile 设备中心(如果设备管理器有此软件则不需再安装) 下载地址:https://pan.baidu.com/s/1scnISYixEPtOpLKmx_fVEg提取码:0s75 2.WinCe6.0模拟器 下载地址:https://pan.baidu.com/s/1gIh7XJ4J8Xf5WbWqPIAUuw提取码:x1m... 阅读详情

相关推荐

wince 在C#中 对datagrid 的数据添加

string[] dgColumns = new string[5] { "序号", "样品名称", "特征", "值", "结果"}; DataTable datatable = new DataTable(); for (int i = 0; i < dgColumns.Length; i++) {

spade24的专栏 2591

7z c# wince_WinCE下使用C#的几个小技巧

1、我们知道,在使用Windows的开发机上用C#启动一个外部程序的方法有很多,但这些方法用在使用WinCE的目标工控机上都无能为力,现在小嫚儿以打开一个IE为例,介绍如何在WinCE下使用C#来打开一个外部文件:首先添加命名空间usingSystem.Runtime.InteropServices;,然后调用API函数:[DllImport("coredll.Dll",EntryPoint...

weixin_39645308的博客 328

打造WINCE安装包:C#打包工具实战指南

WINCE(Windows Embedded Compact)是微软推出的一套专为嵌入式设备设计的实时操作系统,它具有模块化、可伸缩性及可靠性强等特点。WINCE适用于从简单的嵌入式设备到复杂的移动计算机等广泛的应用场景。

weixin_42514750的博客 1359

WINCE C# FTP客户端类

一个完整的WINCE C# FTP客户端类, 致谢:         感谢优快云 accessysq  以及长期以来帮助我的阿飞专家。 /// /// /// public static class APIs { // service types for InternetOpen()

oushengfen的专栏 3662

c# wince 配置文件

c# wince 配置文件 文本保存 也可用于数据文本保存。

C#开发WinCE实用技术文档(12篇)

这是我在从事WinCE&C#开发嵌入式应用程序学习时搜集的技术文档,共12篇,是否有你所需要的,解压后自己找吧。

wince C#开发 小技巧

1、我们知道,在使用Windows的开发机上用C#启动一个外部程序的方法有很多,但这些方法用在使用WinCE的目标工控机上都无能为力,现在小嫚儿以打开一个IE为例,介绍如何在WinCE下使用C#来打开一个外部文件:首先添加命名空间 using System.Runtime.InteropServices;,然后调用API函数: [DllImport("coredll.Dll",  EntryP

luochanghua的专栏 952

wince下的C#读取xml文件

wince下的C#读取xml文件,wince智能项目不支持相对路径,所以没有Setting.setting配置文件,所以需要读写xml,下载文件中有详细说明

Wince 下C#使用INI文件(Bug修正版)

在网上找了N久,最终也没能找到合适用的,没办法,今天自己花了几个小时的时间写了个,留着自己以后用了,经过WINCE下调试,保证可以正常运行。为了方便其它网友,现在公布出来:  ///整个单元开始 using System; using System.Collections.Generic; using System.Text; using System.IO; using System

在键盘上飞舞的日子 2578

ArcGIS利用模型构建器批量导出nc文件中的不同波段数据

ArcGIS利用模型构建器批量导出nc文件中的不同波段数据

Yuanbaokk的博客 7255

STM32实战开发(71):STM32人脸识别开发教程:基于摄像头模块的人脸识别系统

在嵌入式系统中,STM32凭借其强大的计算性能、丰富的外设接口以及低功耗特性,成为了实现人脸识别系统的理想平台。STM32虽然没有强大的计算能力,但可以通过合理利用外部硬件加速模块,如DSP、GPU、FPGA等,结合轻量级的人脸识别算法,实现高效的人脸识别系统。尽管STM32的计算资源相对有限,但通过合理的优化和使用高效的算法,我们依然能够实现高效的人脸识别功能。在本项目中,我们使用。在STM32开发中,虽然处理能力有限,但通过优化算法和合理利用硬件加速,我们仍然可以实现一个轻量级的、实时的人脸识别系统。

2201_76125393的博客 1662

使用 C#进行 CAN 总线编程 —— 基于 WINCE 平台 C#编程要点之三

使用 C#进行 CAN 总线编程 —— 基于 WINCE 平台 C#编程要点之三 英创 ARM9 系列嵌入式主板,如 EM9000 、 EM9260 均带有(或可选) CAN 总线接口, 英创公司不仅提供了硬件平台支持,还提供了 CAN 总线通讯驱动程序。本文主要介绍在基 于 Windows CE 平台的英创嵌入式主板下进行 C# ( M...

ghhong1988的专栏 7841

YOLOv9分割改进 ,YOLOv9分割改进主干网络为华为EfficientNet,助力涨点

EfficientNet论文中研究了卷积网络的缩放和,并证明对深度,宽度和分辨率复合缩放的重要性,因此精度和效率更好。为了阐述相关的原理,我们提出了简单有效的复合缩放方法,使得模型缩放具有一定设计准则,同时兼顾了模型的效率。我下文将 YOLOv9 分割模型改进主干网络为 EfficientNet 融合网络结构。论文地址代码地址下文都是手把手教程,跟着操作即可添加成功把环境配置好,数据集处理好,训练基本能成功,创作不易,请帮忙点一个爱心,关注我,带你不挂科!

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 938

WINCE下C#编程锦囊(1)

本人是C#初学者,本文用于记录开发过程中遇到的书本上难于找到的问题。C# in WINCE问题之一:Control.Invoke 关键词:C# WINCE 多线程 控件 委托 NotSupportedException由于C#使用了多线程,并且需要在非Form所有者线程里更新Fo

civita的专栏 1828

【国产MCU】-认识CH32V307及开发环境搭建

CH32V307是[沁恒](https://www.wch.cn/)推出的一款基于32位RISC-V设计的互联型微控制器,配备了硬件堆栈区、快速中断入口,在标准RISC-V基础上大大提高了中断响应速度。加入单精度浮点指令集,扩充堆栈区,具有更高的运算性能。扩展串口UART数量到8组,电机定时器到4组。提供USB2.0高速接口(480Mbps)并内置了PHY收发器,以太网MAC升级到千兆并集成了10M-PHY模块。

视觉与物联智能 2345

model_optimizer将pi05端到端延时进一步优化到68.13ms了

目前在保持灵活性和性能之间找到一个较好的平衡。vit, llm仍然使用onnx->trt_engine的路径,量化可以通过https://github.com/NVIDIA/Model-Optimizer.git支持。同时支持通过cutedsl手写算子进行进一步优化denoise因为步数多,kernel launch多,因此完全通过手写融合算子实现,将所有steps进行一次大的cuda graph capture.

happyAnger6的专栏 59

WINCE下C#画图

       以下代码是我在WINCE下用C#进行画图的程序,希望给一些朋友有点帮助,由于代码写的时候注释太少了,如代码有有读不懂可以联系我,          int temp = 135;        private void timer1_Tick(object sender, EventArgs e)        {            Bitmap bmp = new

Windows CE学习与开发 6285

【从零开始入门unity游戏开发之——C#篇01】理论开篇,理解什么是编程

理论开篇,理解什么是编程

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 3112

wince下使用C#打开一个外部程序

以打开一个IE为例,介绍如何在WinCE下使用C#来打开一个外部文件:   using System.Runtime.InteropServices; [DllImport("coredll.Dll", EntryPoint="CreateProcess", SetLastError=true)] extern static int CreateProcess(string s

lxy866的专栏 698

ultralytics.data.utils——utils.py子模块代码详读

ultralytics.data.utils——utils.py子模块代码详读

Together_CZ的博客 1721

开心消消乐

1)当点击一个1时,该1变被反转为0,同时相邻的上、下、左、右,以及左上、左下、右上、右下8个方向的1(如果存在1)均会自动反转为0;2)进一步地,一个位置上的1被反转为0时,与其相邻的8个方向的1(如果存在1)均会自动反转为0;上述样例中,四个角上的1均在中间的1的相邻8个方向上,因此只需要点击一次即可。给定一个N行M列的二维矩阵,矩阵中每个位置的数字取值为0或1。在上述4 * 4的矩阵中,只需要点击2次,即可将所有的1进行消除。接下来N行表示矩阵的初始值,每行均为M个数,取值范围[0,1]

面试高手的博客 2729

7z c# wince_在C#中调用WINCE连接PC的程序

由于在某些PDA上的WINCE操作系统不像PPC那样直接插上USB就可以连接上PC,必须手动选择菜单上的连接程序才可以连接,而在特殊情况下必须由用户控制连接。本人第一次写BLOG,都不知道要怎么描述了,看不太懂的请大家谅解由于在某些PDA上的WINCE操作系统不像PPC那样直接插上USB就可以连接上PC,必须手动选择菜单上的连接程序才可以连接,而在特殊情况下必须由用户控制连接,在此提供代码:1、加...

weixin_39946029的博客 124

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

WINCE 电池状态(C#)

 WINCE 电池状态(C#) 分类: 电量 2013-04-18 12:08 397人阅读 评论(1) 收藏 举报 Wince电量   根据网上搜集资料,最后整理 分享下 [csharp] view plaincopyprint? using System;  using System.Linq;  using System.Coll

736

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

c# WINCE 使用技巧

http://hi.baidu.com/jackyc/item/41741a144570be8d89a956e8 记录一下用到的C#在WinCE平台上的相关技巧备查 1。C#在WinCE上实现透明图片 1 2 3 4 5 6 7 8 9 using System.Drawing.Imaging;       publi

lfqsy的专栏 2636

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

上一篇: C#如何快速高效地导出10万以上的大量数据?
wangfeng8317
博客等级 码龄20年 11粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值