200分求这样一个东西,倾家荡产求(200分)

  • 主题发起人 主题发起人 dqj
  • 开始时间 开始时间
D

dqj

Unregistered / Unconfirmed
GUEST, unregistred user!
谁能帮我做这样一个东西:<br>1。运行时不出现在桌面和任务栏上。<br>2。if 按下回车键 and 拨号网络在运行 then<br>&nbsp; 10钟后 nt4.0重启动<br>3.最好是用vb6.0,有源码和注释。if vb6.0做不出,用vc<br>其他都行,就不要源码和注释。<br>声明:不是做坏事。
 
registerserverprocess + remote access server function + thread + hook<br>give me fen!!!
 
1 在NT中注册为服务<br>2 HOOK和RAS API<br>3 我不会VB :)
 
&nbsp;好难啊
 
dqj:如果还想接着讨论请定期提前自己的帖子,如果不想继续讨论请结束帖子。<br>
 
走错门了!
 
估计 200 分泡汤了。
 
如何定期提前自己的帖子?
 
if 按下回车键 and 拨号网络在运行 then &nbsp;10钟后 nt4.0重启动<br>如何检查拨号网络在运行和困难吧,重起到很简单 hehe
 
这点小菜,不过要先把分拿出来再说!
 
dqj: 为什么要VB呢?<br>一个键盘钩子来监控Enter<br>一个FindWindow找拨号网络的连结窗口
 
因为VB是病毒的流行开发工具啊!<br>&nbsp;<br>还有,定期提前帖子很简单:定期访问一次!
 
因为我只知一点点vb.<br>pieere 会给分。<br>如果得不到答案,结束时也会给分
 
&gt;1。运行时不出现在桌面和任务栏上。<br>如果只需要在任务栏上隐藏的话,可以用API,好象是SetWindowLong,具体查一下MSDN<br>当然用registerserverprocess也行<br><br>&gt;2。if 按下回车键 and 拨号网络在运行 then<br>&nbsp; 10钟后 nt4.0重启动<br>用RAS函数检测当前网络状态,大富翁对此已经有无数的讨论,查一下旧贴<br>其他的不用说了吧,注意nt下重启时要有相应权限<br><br>&gt;3.最好是用vb6.0,有源码和注释。if vb6.0做不出,用vc<br>没有<br>原理给你了,自己try吧,否则还叫什么程序员<br>用VB应该没问题的。<br>
 
谁能帮我做这样一个东西:<br>1。运行时不出现在桌面和任务栏上。<br>&nbsp; function RegisterServiceProcess(dwProcessID, dwType: Integer): Integer; <br>&nbsp; &nbsp; stdcall; external 'KERNEL32.DLL';<br>implementation<br>&nbsp; RegisterServiceProcess(GetCurrentProcessID, 1); <br><br>2。if 按下回车键 and 拨号网络在运行 then<br>&nbsp; 10钟后 nt4.0重启动<br><br>拨号网络在运行<br>&nbsp; RAS函数RasEnumConnections枚举当前拨号连接。<br>var<br>&nbsp; conEntries: Array[1..20] of TRasConn;<br>&nbsp; Stat: TRasConnStatus;<br>&nbsp; bufSize :LongInt;<br>&nbsp; numConEntries: Longint;<br>begin<br>&nbsp; conEntries[1].dwSize := SizeOf(TRasConn);<br>&nbsp; bufSize := SizeOf(TRasConn) * 100;<br>&nbsp; FillChar(Stat, Sizeof(TRasConnStatus), 0);<br>&nbsp; Stat.dwSize := Sizeof(TRasConnStatus);<br>&nbsp; numConEntries := 10 ;<br>&nbsp; if RasEnumConnections(@conEntries[1], bufSize, numConEntries)=0 then begin<br>&nbsp; &nbsp; &nbsp;showmessage(inttostr(numConEntries)) ;<br>&nbsp; end;<br>end; <br><br>&nbsp; WinInet函数InternetCheckConnection和InternetQueryOption检查Internet连接也行。<br>&nbsp; if InternetCheckConnection('http://www.yahoo.com/', 1, 0) then<br>&nbsp; &nbsp; &nbsp;ShowMessage( 'Connected')<br>&nbsp; else<br>&nbsp; &nbsp; &nbsp;ShowMessage( 'Disconnected');<br><br>function TForm1.CheckOffline: boolean;<br>var<br>&nbsp; ConnectState: DWORD;<br>&nbsp; StateSize: DWORD;<br>begin<br>&nbsp; ConnectState:= 0;<br>&nbsp; StateSize:= SizeOf(ConnectState);<br>&nbsp; result:= false;<br>if InternetQueryOption(nil, INTERNET_OPTION_CONNECTED_STATE, @ConnectState, StateSize) then<br>&nbsp; if (ConnectState and INTERNET_STATE_DISCONNECTED) &lt;&gt; 2 then result:= true;<br>end;<br><br>NT4.0重启动,需要先取得权限<br>&nbsp; &nbsp; &nbsp;TOKEN_PRIVILEGES NewState; <br>&nbsp; &nbsp; &nbsp;DWORD ProcessId, ReturnLength = 0; <br>&nbsp; &nbsp; &nbsp;LUID luidPrivilegeLUID; <br>&nbsp; &nbsp; &nbsp;ProcessId = GetCurrentProcessId(); <br>&nbsp; &nbsp; &nbsp;hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, ProcessId); <br>&nbsp; &nbsp; &nbsp;OpenProcessToken(hProcess, TOKEN_ADJUST_PRIVILEGES, &amp;hToken); <br>&nbsp; &nbsp; &nbsp;LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &amp;luidPrivilegeLUID); <br>&nbsp; &nbsp; &nbsp;NewState.PrivilegeCount = 1; <br>&nbsp; &nbsp; &nbsp;NewState.Privileges[0].Luid = luidPrivilegeLUID; <br>&nbsp; &nbsp; &nbsp;NewState.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; <br>&nbsp; &nbsp; &nbsp;if(AdjustTokenPrivileges(hToken, FALSE, &amp;NewState, NULL, NULL, NULL)) */<br>&nbsp; &nbsp; &nbsp;ExitWindowsEx(EWX_FORCE | EWX_REBOOT, 0); &nbsp;(VC实现)<br>
 
算了酸了
 
想拿他200分不是很容易吧!!!
 
多人接受答案了。
 
后退
顶部