Project1

标题: 求某诡异脚本用法 [打印本页]

作者: END66RPG    时间: 2011-4-4 16:43
标题: 求某诡异脚本用法
有谁知道这个怎么用吗??
  1. class Get_Http_Info

  2.   AGENT = "RGSS PLAYER"
  3.   INTERNET_OPEN_TYPE_PRECONFIG = 0
  4.   INTERNET_OPEN_TYPE_DIRECT = 1
  5.   def Get_Http_Info.InternetOpen()
  6.     io = Win32API.new('wininet', 'InternetOpen', %(p, l, p, p, l), 'l')
  7.     hInternet = io.call(AGENT, INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0)
  8.     return hInternet
  9.   end

  10.   def Get_Http_Info.InternetOpenUrl(hSession, url)
  11.     iou = Win32API.new('wininet', 'InternetOpenUrl', %(l, p, p, l, l, l), 'l')
  12.     hService = iou.call(hSession, url, nil, 0, 0, 0)
  13.     return hService
  14.   end

  15.   def Get_Http_Info.InternetReadFile(hService)
  16.     content = ""
  17.     read_size = 1024
  18.     irf = Win32API.new('wininet', 'InternetReadFile', %(l, p, i, p), 'i')
  19.     while(true)
  20.       buf = "\0" * read_size
  21.       red = [0].pack('L')
  22.       irf.call( hService, buf, read_size, red )
  23.       if(red.unpack('L') == [0])
  24.         
  25.         break
  26.       end
  27.       buf.delete!("\0")
  28.       content += buf
  29.     end
  30.   return content
  31.   end

  32.   HTTP_QUERY_STATUS_CODE = 19

  33.   def Get_Http_Info.HttpQueryInfo(hService)
  34.     read_size = 1024
  35.     buf = "\0" * read_size
  36.     red = [read_size-1].pack('L')
  37.     hqi = Win32API.new('wininet', 'HttpQueryInfo', %(l, l, p, p, p), 'i')
  38.     isOk = hqi.call( hService, HTTP_QUERY_STATUS_CODE, buf, red, nil)
  39.     buf.delete!("\0")
  40.     return buf
  41.   end

  42.   def Get_Http_Info.InternetCloseHandle(hInternet)
  43.     ich = Win32API.new('winInet', 'InternetCloseHandle', %(l), 'i')
  44.     isOk = ich.call(hInternet)
  45.     return isOk
  46.   end

  47.   HTTP_CODE_OK = "200"

  48.   def Get_Http_Info.get_info(url)
  49.     info = nil
  50.     begin
  51.       hInternet = InternetOpen()
  52.       if(hInternet != 0)
  53.         hService = InternetOpenUrl(hInternet, url)
  54.         if(hService != 0)
  55.           status_code = HttpQueryInfo(hService)
  56.           if(status_code == HTTP_CODE_OK)
  57.             info = InternetReadFile(hService)
  58.           end
  59.           InternetCloseHandle(hService)
  60.         end
  61.         InternetCloseHandle(hInternet)
  62.       end
  63.     rescue
  64.       
  65.       return nil
  66.     end

  67.     ary = []

  68.     info.each_line do |line|
  69.       next if line.empty?
  70.       ary.push line
  71.     end

  72.   return ary[271].scan(/\w+<\/a>/)

  73.   end


  74.   def Get_Http_Info.get_html(url)
  75.     info = nil
  76.     begin
  77.       hInternet = InternetOpen()
  78.       if(hInternet != 0)
  79.         hService = InternetOpenUrl(hInternet, url)
  80.         if(hService != 0)
  81.           status_code = HttpQueryInfo(hService)
  82.           if(status_code == HTTP_CODE_OK)
  83.             info = InternetReadFile(hService)
  84.           end
  85.           InternetCloseHandle(hService)
  86.         end
  87.         InternetCloseHandle(hInternet)
  88.       end
  89.     rescue
  90.       
  91.       return nil
  92.     end
  93.     return info
  94.   end
  95. end
复制代码
dsu_plus_rewardpost_czw
作者: enghao_lim    时间: 2011-4-4 16:54
这个是一个关于获取网页资料的脚本……比如说名字等……
它还可以用rm打开默认游览器连接去指定网址……
还有一个把网页save成html的功能。
部分功能测试后在我电脑返回nil结果,就酱。
作者: END66RPG    时间: 2011-4-4 17:07
回复 enghao_lim 的帖子

具体方法呢
作者: enghao_lim    时间: 2011-4-4 17:11
def 后面的字都是调用方法……=.=
举例……保存html的好了,在最下面,好找……><|||
file = File.open("66rpg.html","w")
file.write(Get_Http_Info.get_html("http://rpg.blue"))
file.close
其他方式雷同……
作者: END66RPG    时间: 2011-4-4 17:14
enghao_lim 发表于 2011-4-4 17:11
def 后面的字都是调用方法……=.=
举例……保存html的好了,在最下面,好找……> ...

知道咯,那么其他方法的用途是什么
作者: END66RPG    时间: 2011-4-4 17:22
算了,不问了,结贴




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1