成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

C# Windows CE使用小技巧實例

開發 后端
C# Windows CE使用小技巧實例主要向你介紹了WinCE下使用C#來打開一個外部文件、單步執行程序等等,希望對你學習了解C# Windows CE使用有所幫助。

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.  
  4. externstaticintCreateProcess(  
  5. stringstrImageName,stringstrCmdLine,  
  6. IntPtrpProcessAttributes,IntPtrpThreadAttributes,  
  7. intbInheritsHandle,intdwCreationFlags,  
  8. IntPtrpEnvironment, IntPtrpCurrentDir,  
  9. IntPtrbArray,ProcessInfooProc);  
  10.  
  11. publicclassProcessInfo  
  12.  
  13. {  
  14.  
  15. publicInt32hProcess;  
  16.  
  17. publicInt32hThread;  
  18.  
  19. publicInt32ProcessID;  
  20.  
  21. publicInt32ThreadID;  
  22.  

最后就可以編寫需要打開IE的代碼了(點擊一個按鈕打開IE瀏覽器中相應內容,此例程要求打開目標工控機硬盤上的Readme文件):

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

C# Windows CE使用2、

有時候我們會希望我們的程式只被執行一次,VB的時代我們會用App.PrevInstance,而.net的時代我們可以用下列方式實現

  1. [STAThread]  
  2.  
  3. staticvoidMain()  
  4.  
  5. {  
  6.  
  7. //如果跟本程式命名的行程只有一個才執行程式  
  8.  
  9. if(System.Diagnostics.Process.  
  10. GetProcessesByName(  
  11.  
  12. Application.ProductName).Length==1)  
  13.  
  14. {  
  15.  
  16. Application.Run(newForm1());  
  17.  
  18. }  
  19.  

但此方法在WinCE下無法實現,所以我們還是要先調用動態鏈接庫,

  1. [DllImport("coredll.Dll")]  
  2.  
  3. privatestaticexternintGetLastError();  
  4.  
  5. [DllImport("coredll.Dll")]  
  6.  
  7. privatestaticexternintReleaseMutex(IntPtrhMutex);  
  8.  
  9. [DllImport("coredll.Dll")]  
  10.  
  11. privatestaticexternIntPtrCreateMutex(  
  12. SECURITY_ATTRIBUTESlpMutexAttributes,  
  13. boolbInitialOwner,stringlpName);  
  14.  
  15. [StructLayout(youtKind.Sequential)]  
  16.  
  17. publicclassSECURITY_ATTRIBUTES  
  18.  
  19. {  
  20.  
  21. publicintnLength;  
  22.  
  23. publicintlpSecurityDescriptor;  
  24.  
  25. publicintbInheritHandle;  
  26.  
  27. }  
  28.  
  29. constintERROR_ALREADY_EXISTS=0183;  

然后編寫代碼

  1. staticvoidMain()  
  2.  
  3. {  
  4.  
  5. #regionApi_CallCreateMutex;  
  6.  
  7. IntPtrhMutex;  
  8.  
  9. hMutex=CreateMutex(null,false,"程序名");  
  10.  
  11. if(GetLastError()!=ERROR_ALREADY_EXISTS)  
  12.  
  13. {  
  14.  
  15. Application.Run(newFrmmenu());  
  16.  
  17. }  
  18.  
  19. else 
  20.  
  21. {  
  22.  
  23. MessageBox.Show("本程序只允許同時運行一個");  
  24.  
  25. ReleaseMutex(hMutex);  
  26.  
  27. }  
  28.  
  29. #endregion  
  30.  

C# Windows CE使用3、

在.NETFramework中沒有函數可以激活屬于另外一個進程或程序的窗體,所以我們要通過調用API函數來實現:

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

然后使用下列代碼即可

  1. IntPtrhDlg;  
  2.  
  3. hDlg=FindWindow(null,"窗口標題");  
  4.  
  5. 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使用有所幫助。

【編輯推薦】

  1. C#Windows應用程序開發之窗體控件
  2. C#Windows應用程序開發之添加菜單
  3. C#Windows應用程序開發之添加狀態條
  4. C#Windows應用程序開發之事件處理器
  5. c# Windows CE讀取電池電量的實現
責任編輯:仲衡 來源: wmisv.com.cn
相關推薦

2009-08-17 09:57:00

C# Windows

2009-08-17 10:29:58

C# Windows

2009-08-17 10:17:01

C# Windows

2009-08-17 10:26:34

C# Windows

2009-08-17 10:11:12

C# Windows

2009-08-17 10:02:58

C# Windows

2009-08-17 10:22:19

C# Windows

2009-08-17 09:27:12

c# Windows

2009-08-27 15:17:18

C# interfacinterface使用

2009-09-09 22:31:21

c# textbox失

2009-09-14 14:25:53

C# Lambda EC# Lambda

2009-08-14 16:32:50

C#啟動Windows

2009-09-02 18:44:19

C#遞歸

2009-08-13 14:56:46

C#的結構體使用

2009-09-04 15:53:42

C#內存流

2009-08-26 13:36:33

C#打印控件

2009-12-31 10:49:36

VPN配置實例

2009-08-27 16:54:59

C#開發技巧

2009-08-11 15:44:05

C#基本技巧

2009-08-14 17:04:19

Windows后臺服務
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩精品福利 | 亚洲免费视频在线观看 | 天堂三级 | 久久久日韩精品一区二区三区 | 国产精品视频999 | a网站在线观看 | 欧美亚州综合 | 国产精品视频在线播放 | 久久久久久免费毛片精品 | 亚洲欧美视频一区二区 | 91精品国产91久久久久久最新 | 久草精品在线 | 久久高清 | 国产乱码精品一区二区三区中文 | 欧美日韩在线观看一区二区三区 | 99久久精品国产麻豆演员表 | 欧美一区永久视频免费观看 | 一级黄色绿像片 | 久久久婷 | 欧美成人一区二区三区片免费 | 国产一区二区三区不卡av | 亚洲综合色婷婷 | 亚洲精品二三区 | 99视频免费在线 | 蜜桃臀av一区二区三区 | 男人阁久久| 午夜电影福利 | 日韩在线播放一区 | 日本精品视频 | 日韩av视屏 | 高清不卡毛片 | av中文网| 中文字幕1区2区3区 亚洲国产成人精品女人久久久 | 精品国产乱码久久久久久闺蜜 | 日韩精品区 | www精品美女久久久tv | 日韩中文字幕av | yiren22 亚洲综合 | 精品国产高清一区二区三区 | 国产日韩欧美一区 | 激情网站 |