浅看URL文件

原创 2005年04月26日 11:38:00

下面的代码演示了如何创建一个URL文件,其中参数的含义如下:

pszURL:网络地址,例如http://www.vchelp.net你也可以让它指向一个文件如:file://local_file_name。
pszURLFileName:URL文件名,例如c:/vchelp.url当Windows显示时只会显示vchelp,而不会显示扩展名。
szDescription:对该URL的描述。
szIconFile:显示该URL的图标文件,可以是EXE或DLL。
index:图标在文件中的位置。
HRESULT CreateInterShortcut (LPCSTR pszURL, LPCSTR pszURLfilename,
	LPCSTR szDescription,LPCTSTR szIconFile = NULL,int nIndex = -1)
{//通过ShellLink接口来创建URL
 HRESULT hres;

 CoInitialize(NULL); 

 IUniformResourceLocator *pHook;

 hres = CoCreateInstance (CLSID_InternetShortcut, NULL, CLSCTX_INPROC_SERVER,
  IID_IUniformResourceLocator, (void **)&pHook);
	//获得CLSID_InternetShortcut接口

 if (SUCCEEDED (hres))
 {
  IPersistFile *ppf;
  IShellLink *psl;

  // Query IShellLink for the IPersistFile interface for 
  hres = pHook->QueryInterface (IID_IPersistFile, (void **)&ppf);
  hres = pHook->QueryInterface (IID_IShellLink, (void **)&psl);

  if (SUCCEEDED (hres))
  { 
   WORD wsz [MAX_PATH]; // buffer for Unicode string

   // Set the path to the shortcut target.
   pHook->SetURL(pszURL,0);

   hres = psl->SetIconLocation(szIconFile,nIndex);

   if (SUCCEEDED (hres))
   {
    // Set the description of the shortcut.
    hres = psl->SetDescription (szDescription);

    if (SUCCEEDED (hres))
    {
     // Ensure that the string consists of ANSI characters.
     MultiByteToWideChar (CP_ACP, 0, pszURLfilename, -1, wsz, MAX_PATH);

     // Save the shortcut via the IPersistFile::Save member function.
     hres = ppf->Save (wsz, TRUE);
    }
   }

   // Release the pointer to IPersistFile.
   ppf->Release ();
   psl->Release ();
  }

  // Release the pointer to IShellLink.
  pHook->Release ();

 }
 return hres;
} 

同样如果利用ShellLink接口也能够读取文件,通过GetArguments,GetDescription,GetIconLocation,GetPath等函数可以得到文件的信息。

如果你打开URL文件查看,你会发现文件结构与INI文件类似,例如Visual C++ Help.url文件内容,

[InternetShortcut]
URL=http://www.vchelp.net/
因此,我用下边的方法建立一个URL文件也是成功的,而且避免使用了接口
BOOL  CreateMyUrlFile(const char * strURL,
       const char * strURLFileName,
       const char * strIconfile,
       const int  nIndex)
{

 ofstream urlfile;
 urlfile.open(strURLFileName, ios::out | ios::trunc );
 if(urlfile.is_open())
 {
  
  urlfile <<endl<<"[InternetShortcut]"<<endl;
   
  if(strIconfile)
  {
   urlfile<<"IconIndex="<<nIndex<<endl
     <<"IconFile="<<strIconfile<<endl;
  }
  
  urlfile<<"URL="<<strURL<<endl;
  urlfile.close();
  return TRUE;
 }
 return FALSE;
}
而且,可以通过调用GetPrivateProfileString/WritePrivateProfileString来读/写URL文件。

分析Java堆

1. String 在虚拟机中的实现 1.1 String对象的特点 (1).        不变性:不变性是指String对象一旦生成,则不能再对它进行改变。String的这个特性可以泛化成不变...
  • owen_william
  • owen_william
  • 2016年03月26日 17:52
  • 556

浅看插入排序

插入排序升序:#include using namespace std;int main() { int A[6] = { 31,41,59,26,41,3}; int key; ...
  • qq_33371343
  • qq_33371343
  • 2016年09月29日 23:45
  • 88

浅看-代理模式

代理模式 在联通这个土皇帝使用201上网卡此等神器统治整个校园网络的黑暗年代,除了网速不给力之外,更加让人痛恨的是其借助天朝的庇护,巧立名目彻底废除了穷苦学生借助路由分流上网的办法。 美其名曰IP...
  • songzheng_741
  • songzheng_741
  • 2012年02月04日 16:38
  • 624

浅看IT业界

不管使用什么样的语言,在什么样的
  • binvirene
  • binvirene
  • 2014年05月12日 13:09
  • 60

浅看华为IT内控

浅看华为IT内控
  • cnbird2008
  • cnbird2008
  • 2010年12月17日 11:25
  • 7831

浅看消息中间件

http://mp.weixin.qq.com/s/4L26mQswurzvFsjvbR9Aag 写在前面      浅看消息中间件...
  • z69183787
  • z69183787
  • 2017年04月17日 11:28
  • 450

java 浅堆和深堆

浅堆和深堆 浅堆(Shallow Heap)和深堆(Retained Heap)是两个非常重要的概念,它们分别表示一个对象结构所占用的内存大小和一个对象被GC回收后,可以真实释放的内存大小。 ...
  • luohai859
  • luohai859
  • 2016年02月29日 16:47
  • 1182

React学习之扩展浅比较(三十四)

注意 这玩意也已经被React.PureComponent的功能取代了,这里依旧是提一下(主要是React.v15的版本中的react-with-addons.js,这些玩意还存在,哎,害人呐) ...
  • qq_18661257
  • qq_18661257
  • 2017年04月02日 10:00
  • 1224

浅入浅出看dubbo

Dubbo是一个框架Hibernate是持久层框架,SpringMVC是MVC的框架,而Dubbo是分布式服务框架。 dubbo是框架而不是服务,所以不是像Tomcat或Memcached可以单独启...
  • Hepershade
  • Hepershade
  • 2016年08月25日 10:06
  • 191

使用matlab求解二维浅水方程的数值解(一)—浅水波

最近在读《ocean modelling for beginners》这本书,对于做海洋数值模拟工作的小白来说,这绝对是一本好书。强烈推荐给理论基础较弱的学习者,这本书循序渐进,由简入繁的讲解了物理海...
  • u011797078
  • u011797078
  • 2017年02月24日 14:50
  • 816
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:浅看URL文件
举报原因:
原因补充:

(最多只允许输入30个字)