110,538
社区成员
好久没上了,这个问题已经解决,但一直找不到自已发的贴了,今天终于到了。我把解决的方法说一下,也免其它人走弯路,其实也很简单,就是通过自动化功能AfxOleInit,拖动时触发OnDrop事件,通过枚举,就可以得到网页的源代码。
pDataObject->GetData(fe.cfFormat, &stgm)
.......
{ //判断是不是Version:1.0 字符前五个字
if (*pText == 0x56 && *(pText + 1) == 0x65 && *(pText + 2) == 0x72 && *(pText + 3) == 0x73 && (pText + 4) == 0x69)
{
if (pDataObject->IsDataAvailable(fe.cfFormat))
{
CString strUrl;
strUrl.Format("%s\r\n", UtfToGbk(pText));//获取网页代码 要urltoGbk.
((CMFCApplication6Dlg)m_pParent)->ShowStatus(strUrl);
}
}
.......
希望能给大家一点帮助。
using System;
namespace ConsoleApp2
{
class Program
{
static void Main(string[] args)
{
System.Net.Http.HttpClient httpClient = new System.Net.Http.HttpClient();
httpClient.BaseAddress = new Uri("https://dms.esnadexpress.com/");
System.Net.Http.HttpRequestMessage httpRequestMessage = new System.Net.Http.HttpRequestMessage();
httpRequestMessage.Method = new System.Net.Http.HttpMethod("GET");
httpRequestMessage.Headers.Add("context-type", "application/pdf");
httpRequestMessage.RequestUri = new Uri("https://dms.esnadexpress.com/img/2019-07-16/2/custom_pdf_ESNAD_1563242468479_54981_3223fe36-31c3-4d73-b447-d2c4720046fa.pdf");
System.Net.Http.HttpResponseMessage httpResponseMessage = httpClient.SendAsync(httpRequestMessage).Result;
if (httpResponseMessage.StatusCode == System.Net.HttpStatusCode.OK)
{
System.IO.Stream stream = httpResponseMessage.Content.ReadAsStreamAsync().Result;
using (System.IO.FileStream fs = new System.IO.FileStream("e:\\download.pdf", System.IO.FileMode.CreateNew))
{
byte[] buffer = new byte[stream.Length];
stream.Read(buffer, 0, buffer.Length);
fs.Write(buffer, 0, buffer.Length);
}
}
}
}
}