使用C#启动IE并访问指定的URL
2009-04-24 18:38
411 查看
在开发移动应用系统的时候,经常遇到这样辣手的问题,就是需要从系统应用软件例程过渡到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;
}
}
接下来调用的工作就很简单了。
首先我们了解一下,在像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;
}
}
接下来调用的工作就很简单了。
相关文章推荐
- Pocket PC系统应用程序中使用C#启动Internet explorer并访问指定的URL
- 如何使用curl命令指定ip访问url
- 下载指定代理文件调用IE使用代理访问指定网站的代码
- 使用URL启动android默认浏览器,启动指定浏览器
- haproxy1.5.15代理下,使用IE访问url里传输中文参数时错误解决办法.
- C#设置IE代理和使用代理访问网页
- C#中怎么使用系统默认浏览器打开指定的URL(代码实现)
- 使用IE的 HttpWatch 查看访问URL使用的流量
- 基于Java语言完成:使用URL下载指定的文件保存到指定的文件夹中
- C#强化系列文章九:代码访问安全性使用
- 使用vb脚本将指定的网址设置为兼容性视图_IE10
- Android---52---使用URl访问网络资源
- IE在访问带有下划线的主机时不能使用Cookie
- 指定eclipse启动使用的jdk,路径有空格的情况
- C#使用windows服务实现开机启动配置 ——在没有wifi连接的环境下开机启动锐捷客户端
- C#.net访问web URL并处理返回值 && 不加web引用调用webservice
- 在IIS中不能启动网站, 提示: “另一个程序正在使用此文件,进程无法访问”
- tomcat第一次使用正常启动后访问8080端口报404错误
- Android访问网络,使用HttpURLConnection还是HttpClient?
- 使用onclick跳转到其他页面/跳转到指定url