首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

虚拟桌面应用有关问题

2012-03-03 
虚拟桌面应用问题我都思路是 创建一个虚拟桌面 在虚拟桌面中创建一个程序 这个程序是 点击特定网页广告的

虚拟桌面应用问题
我都思路是 创建一个虚拟桌面 在虚拟桌面中创建一个程序 这个程序是 点击特定网页广告的程序 

我的创建虚拟桌面的代码

program Project1;

uses
 urlmon,Windows, SysUtils,Forms,shellapi;

 var
 h1,h2:thandle;
  si:TStartupInfo;
  sin:TStartupInfo;
  pin:TProcessInformation;
  s:string;
  desk:thandle;
  ml:string;

begin
ml:=ExtractFilePath(ParamStr(0)) ;
//URLDOWNloadtofile(nil,pchar('http://127.0.0.1/cc.exe'),pchar('C:\WINDOWS\system32\cc.exe'),0,nil);
sleep(3000);
//ShellExecute(0,'open',pchar(ml+'cc.exe'),nil,nil,0);

sin.cb:=sizeof(sin);
sin.wShowWindow:=SW_SHOW; //show什么?
sin.dwFlags:=STARTF_USESHOWWINDOW;
h1:=GetThreadDesktop(GetCurrentThreadId()); //当前桌面
s:='a';
sin.lpDesktop:=pchar(s);
h2:=CreateDesktop(pchar(s),nil,nil,DF_ALLOWOTHERACCOUNTHOOK,GENERIC_ALL,nil);
//CreateProcess('c:\WINDOWS\explorer.exe',nil,nil,nil,False,0,nil,nil,sin,pin);
CreateProcess('C:\WINDOWS\system32\Project1.exe',nil,nil,nil,False,0,nil,nil,sin,pin);
end.


=====

我都广告点击器的 代码 

====
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, OleCtrls, SHDocVw, ExtCtrls;

type
  TForm1 = class(TForm)
  WebBrowser1: TWebBrowser;
  Button1: TButton;
  Edit1: TEdit;
  Edit2: TEdit;
  WebBrowser2: TWebBrowser;
  Timer1: TTimer;
  Timer2: TTimer;
  procedure FormCreate(Sender: TObject);
  procedure Button1Click(Sender: TObject);
  procedure WebBrowser2BeforeNavigate2(Sender: TObject;
  const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
  Headers: OleVariant; var Cancel: WordBool);
  procedure WebBrowser1NewWindow2(Sender: TObject; var ppDisp: IDispatch;
  var Cancel: WordBool);
  procedure Timer1Timer(Sender: TObject);
  procedure Timer2Timer(Sender: TObject);
  private
  { Private declarations }
  public
  { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
webbrowser1.Navigate('http://www.baidu.com');
timer2.Enabled:=false;
end;

procedure TForm1.Button1Click(Sender: TObject);
var ss:string;
 zzText: TextFile;
begin
timer1.Enabled:=false;
SendMessage(GetWindow(GetWindow(WebBrowser1.Handle, GW_CHILD), GW_CHILD),WM_LBUTTONDOWN,
MK_LBUTTON, MAKELONG(strtoint(edit1.Text),strtoint(edit2.Text)));
SendMessage(GetWindow(GetWindow(WebBrowser1.Handle, GW_CHILD), GW_CHILD),WM_LBUTTONUP,
MK_LBUTTON, MAKELONG(strtoint(edit1.Text),strtoint(edit2.Text)));
 timer2.Enabled:=true;
ss:=webbrowser1.LocationURL ;
 AssignFile(zzText, 'xiao12.txt');
  Rewrite(zzText);//创建文件,或者使用ReSet打开文件
  Writeln(zzText, ss);
  CloseFile(zzText);

end;

procedure TForm1.WebBrowser2BeforeNavigate2(Sender: TObject;
  const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
  Headers: OleVariant; var Cancel: WordBool);
begin
 WebBrowser1.Navigate(URL);
  Cancel:=True;
end;

procedure TForm1.WebBrowser1NewWindow2(Sender: TObject;
  var ppDisp: IDispatch; var Cancel: WordBool);
begin
 ppDisp:=WebBrowser2.Application;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
button1.Click;
end;

procedure TForm1.Timer2Timer(Sender: TObject);
var ss:string;
 zzText: TextFile;
begin
ss:=webbrowser1.LocationURL ;


 AssignFile(zzText, 'xiao.txt');
  Rewrite(zzText);//创建文件,或者使用ReSet打开文件
  Writeln(zzText, ss);
  CloseFile(zzText);
end;

end.


========


我在广告点击器中 加了一段代码 意思是 把当前webbrowser1的地址 写入一个文本 xiao.txt xiao12.txt


可是 我运行虚拟桌面的程序 未发现 预计的导出的 两个 txt文本 
可是 在任务管理器中 却可以看到 我都广告点击器的 程序进程 Project1.exe


是不是 在虚拟桌面中 创建可视化的程序 比如 webbrowser1 动作是无效的呢 ?

求解

[解决办法]
对你的代码,我有几点意见:

1.你的广告点击器写得方法不太好,发消息点击并不能保证“窗口隐藏,最小化,被别的窗口挡住”都适用。
2.导致你的问题关键在于,虚拟桌面中创建的程序,要在线程里处理你的点击,因此你这种写法错误。

巧的是我对虚拟桌面和网页点击指定坐标都非常熟悉,而且也熟悉多线程。所以给你上述一些提示,希望对你有所帮助!

热点排行