用Chrome外部协议请求启动IE进程
来源:互联网 发布:360浏览器无法连接网络 编辑:程序博客网 时间:2024/05/16 09:22
在Chrome下调用其他进程,可以用注册表的形式来实现。但直接调用IE(包括其他进程),会传入一些额外的参数(如本例中的f2://douban.com),这样调用Ie的时候会出现连续嵌套调用的情况,致使调用失败。后来想了一种间接地办法,即自己写一个创建ie进程的exe文件,由chrome去调用此exe文件,exe文件对传入的参数进行了截断处理之后再把网址以参数的形式传给ie。
IEexternal.reg
Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\F2]@="URL:F2 Protocol Handler""URL Protocol"=""[HKEY_CLASSES_ROOT\F2\shell][HKEY_CLASSES_ROOT\F2\shell\open][HKEY_CLASSES_ROOT\F2\shell\open\command]@="G:\\PAD\\Debug\\PAD.exe \"%1\""
其中“G:\\PAD\\Debug\\PAD.exe”是中间exe文件的路径,负责开启并传递网址参数给ie。%1是参数替换符,在chrome调用Ie的时候,它会被替换成“f2://网址”形式的参数。
创建好之后运行此reg文件
PAD.exe
#include <windows.h>#include <stdio.h>#include <tchar.h>#include <string.h>void _tmain( int argc, char *argv[] ){ STARTUPINFO si; PROCESS_INFORMATION pi;char *p;//TCHAR *ie_address = "\"C:\\Program Files\\Internet Explorer\\iexplore.exe\" WWW.CUC.EDU.CN";char ie_address[100] ="\"C:\\Program Files\\Internet Explorer\\iexplore.exe\"";char *prefix = "f2://"; ZeroMemory( &si, sizeof(si) ); si.cb = sizeof(si); ZeroMemory( &pi, sizeof(pi) ); if( argc != 2 ) { printf("Usage: %s [cmdline]\n", argv[0]); return; }p = strstr(argv[1],prefix);if(!p){ // MessageBox(0,0,0,0);return;}p += 5;strcat(ie_address,p); // Start the child process. if( !CreateProcess( NULL, // No module name (use command line) ie_address, // Command line NULL, // Process handle not inheritable NULL, // Thread handle not inheritable FALSE, // Set handle inheritance to FALSE 0, // No creation flags NULL, // Use parent's environment block NULL, // Use parent's starting directory &si, // Pointer to STARTUPINFO structure &pi ) // Pointer to PROCESS_INFORMATION structure ) { printf( "CreateProcess failed (%d).\n", GetLastError() ); return; } // Wait until child process exits. WaitForSingleObject( pi.hProcess, INFINITE ); // Close process and thread handles. CloseHandle( pi.hProcess ); CloseHandle( pi.hThread );}
添加书签
启用书签
点击启动应用后即可完成IE进程的调用
- 用Chrome外部协议请求启动IE进程
- 关于chrome外部协议请求,启动外部程序,itms,macappstore下载相关
- 关于chrome外部协议请求,启动外部程序,itms,macappstore下载相关
- 利用外部协议让chrome启动外部应用程序
- chrome启动外部程序
- 外部DMA请求/应答协议
- C#启动外部exe进程
- selenium如何启动IE,Chrome浏览器
- 实现chrome扩展启动本地进程 - 补充
- Firefox/Chrome/IE Ajax 怎样设置允许跨域请求
- MFC 启动外部进程的问题
- IronPython调用C#启动外部进程
- c#启动和结束外部进程
- 详解主流浏览器多进程架构:Chrome、IE
- 详解主流浏览器多进程架构:Chrome、IE
- 详解主流浏览器多进程架构:Chrome、IE
- Python + Selenium 入门之启动IE、Chrome浏览器
- selenium2+python如何启动Ie和Chrome进行自动化测试
- Mac下配置使用Git
- 字符编码方式详解
- 编辑页面 radio、select只读; backspace跳回上一页面
- 原子性加、减
- 有关iReport调用打印机的问题
- 用Chrome外部协议请求启动IE进程
- 编写重载函数min(),分别计算int,double,float,long类型数组中的最小数
- iOS应用开发----必备基础知识
- Java基础知识整理(四)- 线程同步和异步有何异同
- linux shell 用sed命令在文本的行尾或行首添加字符
- 双系统centos下问题解决
- 经典排序算法 - 快速排序Quick sort
- php筛选最大最小部分的数组
- Qt - 移动无边框窗体