本文主要是介绍2409wtl,打开浏览器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
原文
介绍
曾经想在不破坏
现有浏览器窗口内容
时打开URL
:方法如下
,只需几秒钟.
1,首先,包含头文件:
#include "url.h"
2,然后只需声明一个CURL
对象并调用Open
方法:
CURL url;
url.Open(_T("<A href="http://www.codeproject.com/">http://www.codeproject.com/</A>"));
3,如果要重用现有浏览器窗口
,请给第二个参数
传递假
:
CURL url;
url.Open(_T("<A href="http://www.codeproject.com/">http://www.codeproject.com/</A>"), false);
就这样!简单,可将此代码与CString
友好框架(MFC,WTL,ATL7
)一起使用.
CURL
#pragma once
class CURL
{
private://默认浏览器CString m_strBrowser;
public://打开`URL`void Open(LPCTSTR lpszURL, bool bNewWindow = true){if (bNewWindow)::ShellExecute(NULL, NULL, GetBrowser(), lpszURL, NULL, SW_SHOWNORMAL);else::ShellExecute(NULL, NULL, lpszURL, NULL, NULL, SW_SHOWNORMAL);}//从注册表中取默认浏览器LPCTSTR GetBrowser(void){//已有了浏览器吗?if (m_strBrowser.IsEmpty()){//从`HKCR\http\shell\open\command`取默认浏览器HKEY hKey = NULL;//打开注册表if (::RegOpenKeyEx(HKEY_CLASSES_ROOT, _T("http\\shell\\open\\command"),0, KEY_READ, &hKey) == ERROR_SUCCESS){//数据大小DWORD cbData = 0;//取默认值if (::RegQueryValueEx(hKey, NULL, NULL, NULL, NULL, &cbData)== ERROR_SUCCESS && cbData > 0){//分配合适的缓冲TCHAR* psz = new TCHAR [cbData];//成功if (psz != NULL){if (::RegQueryValueEx(hKey, NULL, NULL,NULL, (LPBYTE)psz, &cbData) ==ERROR_SUCCESS){//成功!m_strBrowser = psz;}delete [] psz;}}::RegCloseKey(hKey);}//有浏览器吗?if (m_strBrowser.GetLength() > 0){//从串中去除完整路径int nStart = m_strBrowser.Find('"');int nEnd = m_strBrowser.ReverseFind('"');//是否有引号,是则`路径包含空格`.if (nStart >= 0 && nEnd >= 0){//他们是一样的吗if (nStart != nEnd){//取完整路径m_strBrowser = m_strBrowser.Mid(nStart + 1, nEnd - nStart - 1);}}else{//可能有一个`带空格但没有引号`的路径名`(Netscape)`,如`:C:\PROGRAMFILES\NETSCAPE\COMMUNICATOR\PROGRAM\NETSCAPE.EXE -h "%1"`查找最后反斜杠int nIndex = m_strBrowser.ReverseFind('\\');//成功if (nIndex > 0){//查找最后反斜杠后的下个空格int nSpace = m_strBrowser.Find(' ', nIndex);//有空格吗if (nSpace > 0)m_strBrowser = m_strBrowser.Left(nSpace);}}}}//完成return m_strBrowser;}
};
见,urlnewwindow_src
.
这篇关于2409wtl,打开浏览器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!