判断控件是否是在IE中运行

由于某种原因,控件需要根据是否是在IE中运行来改变其不同的行为,所以就需要首先来判断自己是在IE中运行的还是在其它的一般程序中运行的,这里列出一个不大好的判断方法

 

/*

如果是在IE中运行,就返回true,否则就返回false

*/

bool CocxCtrl::IsInIE()
{
 TCHAR szPathApp[1024];
 CString strText;

 // 获取exe路径
 memset( szPathApp, 0, sizeof(szPathApp) );
 GetModuleFileName( NULL, szPathApp, sizeof(szPathApp) );
 strText.Format( TEXT("%s"), szPathApp );
 strText.Replace( TCHAR('//'), TCHAR('/') );

 CString strIEPath;
 GetIEPath( strIEPath );
 if ( strText.CompareNoCase( strIEPath ) == 0 )
 {
  // 是在IE中运行的
  return true;
 }

 

 return false;
}

/*
获取IE路径,分隔符转换为:/
参数:
 strIEPath:[out],IE路径
返回值:无
需要注意的是,这里没有处理错误的情况
*/
void CocxCtrl::GetIEPath( CString &strIEPath )
{
 HKEY hKey = NULL;
 long lErr = RegOpenKeyEx( HKEY_LOCAL_MACHINE, TEXT("Software//Microsoft//Windows//CurrentVersion//App Paths//IEXPLORE.EXE"),
  0, KEY_QUERY_VALUE, &hKey );
 if ( lErr != ERROR_SUCCESS )
 {
  return;
 }

 TCHAR szIEPath[80];
 DWORD dwLen = sizeof(szIEPath);
 lErr = RegQueryValueEx( hKey, NULL, 0, NULL, (LPBYTE)szIEPath, &dwLen );
 RegCloseKey( hKey );
 if ( lErr != ERROR_SUCCESS )
  return;

 strIEPath.Format( TEXT("%s"), szIEPath );
 strIEPath.Replace( TCHAR('//'), TCHAR('/') );
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值