我正在编写一个应该在另一个进程中挂钩InternetOpenUrl
和InternetReadFile
的应用程序。
在InternetOpenUrl
的钩子版本中,它将检查传递给它的lpszUrl
是否与正则表达式匹配。如果匹配,则记录实际InternetOpenUrl
返回的句柄。
然后在InternetReadFile
的钩子版本中,如果InternetReadFile
参数等于记录的句柄,它将从文件中读取而不是调用实际的hFile
。
我发现Windows会在调用InternetOpenUrl
时尝试连接到提供的服务器,如果无法建立连接,该函数将返回NULL
。
但是我希望这个机制即使没有Internet连接也能工作,所以当正则表达式匹配时,我似乎无法通过调用钩子中的实际InternetOpenUrl
来获得句柄。
那我怎么能让它发挥作用呢?
更新
现在我调用InternetOpen
来获取虚拟句柄。 InternetOpen
和InternetOpenUrl
返回的句柄似乎不相等。
但我不确定它是否有保障,寻找更好的选择。
答案 0 :(得分:2)
因此,您尝试将URL查询重定向到文件...您可以随时托管该文件,然后在任一情况下都可以保证有效的句柄。但是,假设一个本地文件,我认为如果您在URL中指定“file://”协议,它可能会以您希望的方式工作。