今天在花七七's 部落格发现一个刷流量的好东西——流量精灵

流量精灵运行后系统资源消耗比较大,想了一个方法解放自己的电脑,那就是强制结束进程,每隔10分钟左右重启一次

于是便有了这个自动控制脚本,方便使用

这个压缩包中包括了花七七的去广告流量精灵和我写的脚本,解压缩后放在同一个文件夹下运行就可以了,一定要注意:调整好时间间隔,不然流量会中断。另外,文件名不能修改,否则会出错,需要修改文件名的话把源码修改一下重新编译。

点击下载此文件 (压缩包中有两个控制方法,一个CMD的,一个EXE的,无毒无害源码附在最后)

原理是周期性的开启和关闭流量精灵,比如打开两分钟关闭两分钟。这样可以节约本地资源,同时还不影响流量。

CMD这个是通过调用EXE程序,也就是间接的调用了TerminateProcess()这个函数,这个方法貌似比较完善。直接运行这个CMD脚本就可以了,无视那个EXE,因为EXE仅仅是个接口。

EXE这个是用VB做的简易的小程序,调用的TerminateProcess()这个函数结束进程。TerminateProcess()函数结束进程时,被结束的进程不会得到通知,这样就不会给他做收尾工作的机会。通过测试发现,下次恢复流量精灵进程后,运行状态和结束前完全一样,网址状态依然是“在线”,这个EXE程序仅仅是提供了一个API,必须配合CMD使用。

来得瑟一下今日战果

运行了一段时间,效果图,流量没有中断:

程序源码:(写的比较匆忙,如有BUG欢迎批评指正)

ASP/Visual Basic代码
  1. Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As LongByVal bInheritHandle As LongByVal dwProcessId As LongAs Long    
  2. Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As LongAs Long    
  3. Private Const SYNCHRONIZE = &H100000    
  4. Private Const STANDARD_RIGHTS_REQUIRED = &HF0000    
  5. Private Const PROCESS_ALL_ACCESS = (STANDARD_RIGHTS_REQUIRED Or SYNCHRONIZE Or &HFFF)    
  6. Private Declare Function NtSuspendProcess Lib "ntdll.dll" (ByVal hProc As LongAs Long    
  7. Private Declare Function NtResumeProcess Lib "ntdll.dll" (ByVal hProc As LongAs Long    
  8. Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As LongByVal uExitCode As LongAs Long    
  9. Private hProcess As Long    
  10. Private Declare Function CreateToolhelp32Snapshot Lib "kernel32" (ByVal dwFlags As LongByVal th32ProcessID As LongAs Long    
  11. Private Declare Function Process32First Lib "kernel32" (ByVal hSnapshot As Long, lppe As PROCESSENTRY32) As Long    
  12. Private Declare Function Process32Next Lib "kernel32" (ByVal hSnapshot As Long, lppe As PROCESSENTRY32) As Long    
  13. Private Type PROCESSENTRY32    
  14.         dwSize   As Long    
  15.         cntUsage   As Long    
  16.         th32ProcessID   As Long    
  17.         th32DefaultHeapID   As Long    
  18.         th32ModuleID   As Long    
  19.         cntThreads   As Long    
  20.         th32ParentProcessID   As Long    
  21.         pcPriClassBase   As Long    
  22.         dwFlags   As Long    
  23.         szExeFile   As String * 1024    
  24. End Type    
  25. Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As LongByVal lpOperation As StringByVal lpFile As StringByVal lpParameters As StringByVal lpDirectory As StringByVal nShowCmd As LongAs Long    
  26. Const TH32CS_SNAPHEAPLIST = &H1    
  27. Const TH32CS_SNAPPROCESS = &H2    
  28. Const TH32CS_SNAPTHREAD = &H4    
  29. Const TH32CS_SNAPMODULE = &H8    
  30. Const TH32CS_SNAPALL = (TH32CS_SNAPHEAPLIST Or TH32CS_SNAPPROCESS Or TH32CS_SNAPTHREAD Or TH32CS_SNAPMODULE)    
  31. Const TH32CS_INHERIT = &H80000000    
  32. Public pid As Long    
  33. Public pname As String    
  34. Public a As String    
  35. Public EXEPath As String    
  36. Public TimerCount As Long    
  37. Public CMDCaption As Long    
  38. Public ResumeTimer As Long    
  39. Public TerminateTimer As Long    
  40. Public TotalCount As Long    
  41.     
  42. Public Sub cmdTerminate()    
  43. a = Trim(LCase(EXEPath))    
  44. Dim my As PROCESSENTRY32    
  45. Dim l As Long    
  46. Dim l1 As Long    
  47. Dim flag As Boolean    
  48. Dim mName As String    
  49. Dim i As Integer    
  50. l = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)    
  51. If l Then    
  52.     my.dwSize = 1060    
  53. End If    
  54. If (Process32First(l, my)) Then    
  55.    Do    
  56.       i = InStr(1, my.szExeFile, Chr(0))    
  57.       mName = LCase(Left(my.szExeFile, i - 1))    
  58.       If mName = a Then    
  59.           pid = my.th32ProcessID    
  60.       End If    
  61.       If hProcess Then    
  62.          TerminateProcess hProcess, 0    
  63.       Else    
  64.         If IsNumeric(pid) Then    
  65.             hProcess = OpenProcess(PROCESS_ALL_ACCESS, FalseCLng(pid))    
  66.             If hProcess <> 0 Then    
  67.                 TerminateProcess hProcess, 0    
  68.             End If    
  69.         End If    
  70.       End If    
  71.    Loop Until (Process32Next(l, my) < 1)    
  72. End If    
  73. End Sub    
  74. Private Sub cmdResume()    
  75.     a = Trim(LCase(EXEPath))    
  76. Dim my As PROCESSENTRY32    
  77. Dim l As Long    
  78. Dim l1 As Long    
  79. Dim flag As Boolean    
  80. Dim mName As String    
  81. Dim i As Integer    
  82. l = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)    
  83. If l Then    
  84.     my.dwSize = 1060    
  85. End If    
  86. If (Process32First(l, my)) Then    
  87.    Do    
  88.       i = InStr(1, my.szExeFile, Chr(0))    
  89.       mName = LCase(Left(my.szExeFile, i - 1))    
  90.       If mName = a Then    
  91.           pid = my.th32ProcessID    
  92.       End If    
  93.       If IsNumeric(pid) Then    
  94.            hProcess = OpenProcess(PROCESS_ALL_ACCESS, FalseCLng(pid))    
  95.            If hProcess <> 0 Then    
  96.                NtResumeProcess hProcess    
  97.            End If    
  98.       End If    
  99.    Loop Until (Process32Next(l, my) < 1)    
  100. End If    
  101. End Sub    
  102.     
  103. Private Sub Command1_Click()    
  104. ExePath = "lljl.exe"  
  105. ResumeTimer = Int(Text1.Text)    
  106. TerminateTimer = Int(Text2.Text)    
  107. TotalCount = TerminateTimer + ResumeTimer    
  108. If CMDCaption = 0 Then    
  109.     CMDCaption = 1    
  110.     Command1.Caption = "停止"    
  111.     TimerCount = 0    
  112.     Timer1.Interval = 60000    
  113.     Timer1.Enabled = True    
  114. Else    
  115.     CMDCaption = 0    
  116.     Command1.Caption = "开始"    
  117.     Timer1.Enabled = False    
  118. End If    
  119. End Sub    
  120.     
  121. Private Sub Form_Load()    
  122. Me.Show    
  123. ShellExecute 0, "open""www.izhuyue.com""""", 1    
  124. TimerCount = 0    
  125. Timer1.Interval = 60000    
  126. Timer1.Enabled = False    
  127. CMDCaption = 0    
  128. End Sub    
  129.     
  130. Private Sub Timer1_Timer()    
  131. TimerCountTimerCount = TimerCount + 1    
  132. If TimerCount = ResumeTimer Then    
  133.     Call cmdTerminate    
  134. End If    
  135. If TimerCount = TotalCount Then    
  136.     Call cmdResume    
  137.     TimerCount = 0    
  138. End If    
  139. End Sub    

标签: Windows

已有 8 条评论

  1. WANG

    下载链接已失效

  2. hqqblogc

    对啊、现在木有了= =话说预备重现啊……

  3. hqqblogc

    'O' is not recognized as an internal or external command,
    operable program or batch file.
    囧、怎么来这东西的?

  4. hqqblogc

    囧、好像挺有用的啊!

  5. hqqblogc

    噢= =木有,原来换一个思路了,把进程挂起了!

  6. hqqblogc

    图片好像挂了?

  7. 花七七

    我现在一整天下来能刷4000IP到百度搜索结果,不知道这样能刷多少、今晚试试

  8. 花七七

    这样做效率不知道有多少,但是怎么也要支持一下

评论已关闭