• 使用C#启动IE并访问指定的URL


    在开发移动应用系统的时候,经常遇到这样辣手的问题,就是需要从系统应用软件例程过渡到Web程序例程。比如从PDA端应用软件的某个菜单,假如菜单的名称是在线支持,用户点击这个菜单项要进入Web上的某个页面,这种情况下技术上应该如何实现呢?

      首先我们了解一下,在像VB这样的程序语言中,我们可以使用Shell语句来完成这个功能,但是这也只适用于Windows环境,在Win CE环境下显然测不通。幸运的是,我找到了一种可以使用EVB来实现这个功能的方法,但是我并打算在本篇文章中讲解,需要了解的朋友可以在我的专栏里查看 “Pocket PC系统中使用EVB启动其他可执行文件—Shell的替代方案”一篇文章。

      那么在C#技术体系里又是用何种方式来实现的呢?一般我们会使用如下方式来实现:

    Process p = new Process(); 
    p.StartInfo.FileName = @"C:\Program Files\Internet Explorer\IEXPLORE.EXE"; 
    p.Start(); 

      但是,不幸的是这同样也只适用于Windows环境,而不适用于Win CE环境。而实际上,微软到目前为止还并没有制作出针对这种功能的方便好用的组件,要实现这个功能还只能够通过调用底层API的方式来实现。

      首先,我们写个类,在类中声明API函数。代码如下:

    class CeProcess
    {
    public class ProcessInfo
    {
    public IntPtr hProcess; 
    public IntPtr hThread; 
    public Int32 ProcessId; 
    public Int32 ThreadId; 
    }

    [DllImport("CoreDll.DLL", SetLastError=true)]
    private extern static
    int CreateProcess( String imageName,
    String cmdLine,
    IntPtr lpProcessAttributes,
    IntPtr lpThreadAttributes,
    Int32 boolInheritHandles,
    Int32 dwCreationFlags,
    IntPtr lpEnvironment,
    IntPtr lpszCurrentDir,
    byte [] si,
    ProcessInfo pi ); 

    [DllImport("CoreDll.dll")]
    private extern static
    Int32 GetLastError(); 

    public static bool CreateProcess( String ExeName, String
    CmdLine, ProcessInfo pi )
    {
    if ( pi == null )
    pi = new ProcessInfo(); 

    byte [] si = new byte[128]; 

    return CreateProcess(ExeName, CmdLine, IntPtr.Zero,
    IntPtr.Zero,
    0, 0, IntPtr.Zero, IntPtr.Zero, si, pi) != 0; 
    }


      接下来调用的工作就很简单了。
  • 相关阅读:
    HDU 4691
    cin和scanf的速度差别
    一点点webservice的小知识
    Geetest 极验验证 验证图片拼图
    web api post传一个参数时 值永远是null
    关于支付宝支付的
    发布网站后只能在服务器上访问 外网访问不了??
    sidePagination: "server"和responseHandler: responseHandler
    .net 找回密码的第一步 第二步 第三步的进程条
    关于设置一个全局只读变量来实现验证
  • 原文地址:https://www.cnblogs.com/chinatefl/p/1443114.html
Copyright © 2020-2023  润新知