【浏览器操控示例】示例通过创建无头模式的浏览器,来做网页截图

AHK操控浏览器入门教程

以下示例需要Chrome.ahk库支持才能工作

; By 空
#NoEnv
SetBatchLines, -1

#Include <Chrome>


; --- Create a new headless Chrome instance ---

ChromeInst := new Chrome("User_Data", "https://baidu.com", "--headless")


; --- Connect to the page ---

if !(PageInst := ChromeInst.GetPage())
{
  MsgBox, Could not retrieve page!
  ChromeInst.Kill()
}
else
{
  PageInst.WaitForLoad()
  
  
  ; --- Export a PDF of the page ---
  
  ; Get the PDF in Base64
  Base64PDF := PageInst.Call("Page.printToPDF").data
  
  ; 保存PNG截图的方法,对应文件名也应该改成.png
  ; Base64PNG := 标签.Call("Page.captureScreenshot").data
  
  ; Convert to a normal binary PDF
  Size := Base64_Decode(BinaryPDF, Base64PDF)
  
  ; Write the binary PDF to a file
  FileName := "Exported_" A_TickCount ".pdf"
  FileOpen(FileName, "w").RawWrite(BinaryPDF, Size)
  
  ; Open the file
  Run, %FileName%
  
  
  ; --- Close the Chrome instance ---
  
  try
    PageInst.Call("Browser.close") ; Fails when running headless
  catch
    ChromeInst.Kill()
  PageInst.Disconnect()
}

ExitApp
return


Base64_Encode(ByRef Out, ByRef In, InLen)
{
  DllCall("Crypt32.dll\CryptBinaryToString", "Ptr", &In
  , "UInt", InLen, "UInt", 0x40000001, "Ptr", 0, "UInt*", OutLen)
  VarSetCapacity(Out, OutLen * (1+A_IsUnicode))
  DllCall("Crypt32.dll\CryptBinaryToString", "Ptr", &In
  , "UInt", InLen, "UInt", 0x40000001, "Str", Out, "UInt*", OutLen)
  return OutLen
}

Base64_Decode(ByRef Out, ByRef In)
{
  DllCall("Crypt32.dll\CryptStringToBinary", "Ptr", &In, "UInt", StrLen(In)
  , "UInt", 0x1, "Ptr", 0, "UInt*", OutLen, "Ptr", 0, "Ptr", 0)
  VarSetCapacity(Out, OutLen)
  DllCall("Crypt32.dll\CryptStringToBinary", "Ptr", &In, "UInt", StrLen(In)
  , "UInt", 0x1, "Str", Out, "UInt*", OutLen, "Ptr", 0, "Ptr", 0)
  return OutLen
}

 

声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。