Ghost命令参数分类:

1.磁盘对磁盘拷贝
图形界面: Disk To Disk
参数例子: ghost -clone,mode=copy,src=1,dst=2 -sure -fx
参数功能: 拷贝磁盘一的全部内容到磁盘二,不必询问,完成后退出Ghost。

2.把磁盘上的所有内容备份成映像文件
图形界面: Disk To Image
参数例子: ghost -clone,mode=dump,src=1,dst=d:\Win98sys.gho -z3 -sure -fx
参数功能: 备份机器第一块硬盘上的全部内容到另一台硬盘d:\Win98sys.gho文件中,高压缩,不必询问,完成后退出Ghost。

3.从备份的映像文件复原到磁盘
图形界面: Disk From Image
参数例子: ghost -clone,mode=load,src=d:\Win98sys.gho,dst=1 -sure -fx
参数功能: 从备份在另一块硬盘d:\Win98sys.gho的映像文件复原到第一块硬盘上,不必询问,完成后退出Ghost。

4.分区对分区拷贝
图形界面: Partition To Partition
参数例子: ghost -clone,mode=pcopy,src=1:1,dst=2:1 -sure -fx
参数功能: 拷贝第一块硬盘第一个分区上的所有内容到第二块硬盘的第一个分区上,不必询问,完成后退出Ghost。

5.把分区内容备份成映像文件
图形界面: Partition To Image
参数例子: ghost -clone,mode=pdump,src=1:1,dst=d:\Win98sys.gho -z9 -sure -fx
参数功能: 备份第一块硬盘第一分区到d:\Win98sys.gho,采用最高压缩率,不必询问,完成后退出Ghost。

6.从备份的映像文件克隆到分区
图形界面: Partition From Image
参数例子: ghost -clone,mode=pload,src=d:\Win98sys.gho:1,dst=1:1 -sure -fx
参数功能: 把d:\Win98sys.gho中的第一个分区内存克隆到第一块硬盘第一分区上,不必询问,完成后退出Ghost。

7.平行端口电缆线直接连接电脑客户机
图形界面: LPT/Slave
参数例子: ghost -lps
参数功能: 启动客户机 (两台电脑必须同时执行Ghost)。

8.平行端口电缆线直接连接服务机
图形界面: LPT/Master
参数例子: ghost -lpm -clone,mode=dump,src=1,dst=c:\Win98sys.gho -sure -fx
参数功能: 将服务机第一块硬盘上的内容备份到客户机c:\Win98sys.gho文件中,不必询问,完成后退出Ghost。

9.硬盘间直接克隆
参数例子:ghost -clone,mode=copy,src=1,dst=2 -sure
参数功能:在内部模式拷贝第一块硬盘到第二块硬盘,无需提示,直接克隆。

10.网络备份
参数例子:ghost -nbm -clone,mode=dump,src=2,dst=c:\xxxx.gho
参数功能:由NetBIOS模式连接到正在进行ghost\slave的网络远程个人电脑并备份本机第二块硬盘到远程硬盘C:\xxxx.gho成一映像压缩文件。
小提示
该远程客户机必须使用ghost -nbs命令来启动。

11.将映像文件克隆到硬盘
参数例子:ghost -clone,mode=load,src=e:\savdsk.gho,dst=1
参数功能:读入E:\SAVEDSK.gho文件,并把它克隆到第一块硬盘上。

12.将第二个分区备份为映像文件(还原)
参数例子:ghost -clone,mode=pdump,src=1:2,dst=g:\imgs\part2.gho
参数功能:备份第一块硬盘的第二分区到g:\imgs\part2.gho映像文件。
参数例子:ghost -clone,mode=pload,src=g:\imgs\part2.gho:2,dst=1:2
参数功能:载入(恢复)映像文件内的第二分区到内部硬盘第一块硬盘的第二分区。

13.不同硬盘不同分区复制
参数例子:ghost -clone,mode=pcopy,src=1:2,dst=2:1
参数功能:拷贝第一块硬盘的第二分区到第二块硬盘的第一分区。

14.还原到第二块硬盘并调整分区大小
参数例子:ghost -clone,mode=load,src=g:\imgs\2prtdisk.gho,dst=2,sze1=60P,sze2=40P
参数功能:克隆g:\imgs\2prtdisk.gho映像文件到第二块硬盘, 并重整按60%和40%大小分配分区大小。

15.还原到第一块硬盘并调整分区大小
参数例子:ghost -clone,mode=load,src=e:\imgs\3prtdisk.gho,dst=1,sze1=450M,sze2=1599M,sze3=2047M
参数功能:克隆e:\imgs\3prtdisk.gho映像文件到第一块硬盘, 并重整分区大小为: 第一分区450MB,第二分区1599MB,第三分区2047MB。

16.保留第一分区,其他不分配
参数例子:ghost -clone,mode=copy,src=1,dst=2,sze1=F,sze2=V,sze3=V
参数功能:拷贝有三个分区的第一块硬盘到第二块硬盘并保持第一分区与来源大小相同,但是其他分区所剩余空间保留不予分配。

17.还原到最后的分区并调整分区大小
参数例子:ghost -clone,mode=load,src=g:\imgs\2prtdisk.gho,dst=1,szeL
参数功能:载入映像文件到磁盘最后的分区并按照容量重整其大小,第一分区则利用剩余的空间。

18.从参数文件读取
参数例子:GHOST.EXE @(参数文件)
参数功能:GHOST命令行参数可从参数文件读取并执行(注意参数文件是文本格式的)。
小提示
参数文件中可以以文本格式编写包含任何Ghost命令行参数,除了-AFILE=和-DFILE= 参数外。

19.备份并自动分割
参数例子:ghost -sure -clone,mode=pdump,src=1:1,dst=system.gho -span -split=630
参数功能:它的作用是把第一块硬盘第一分区信息备份到当前文件夹下的system.gho中,如果生成的system.gho大于630MB,则会分割生成的GHO文件,这个参数在备份大的分区,并把它们烧录到650MB的CD-R上时非常有用。

20.备份并加密
参数例子:ghost -sure -pwd,666888 -clone,mode=pdump,src=1:1,dst=system.gho
参数功能:该语句的作用是把第一块硬盘第一分区信息备份到当前文件夹下的system.gho中,并且以666888作为生成后GHO文件的密码,以便加密。以后用Ghost恢复system.gho文件,或者用Ghost Explorer来释放其中的文件时,都必须输入密码,否则无法恢复或释放文件,从而起到了保密的作用。
如果输入ghost -sure -pwd -clone,mode=pdump,src=1:1,dst=system.gho,即-pwd后面不带密码,则Ghost在制作GHO文件前会询问用户加密GHO的密码,你必须记牢。给GHO文件加密后,别人就无法随意查看或恢复我们的

Delphi文件操作函数 不指定

青色咖啡 , 2011/02/27 19:54 , delphi基础 , 评论(0) , 阅读(427) , Via 本站原创

//判断文件是否存在 FileExists
//判断文件夹是否存在 DirectoryExists
//删除文件 DeleteFile; Windows.DeleteFile
//删除文件夹 RemoveDir; RemoveDirectory
//获取当前文件夹 GetCurrentDir
//设置当前文件夹 SetCurrentDir; ChDir; SetCurrentDirectory
//获取指定驱动器的当前路径名 GetDir
//文件改名 RenameFile
//建立文件夹 CreateDir; CreateDirectory; ForceDirectories
//删除空文件夹 RemoveDir; RemoveDirectory
//建立新文件 FileCreate
//获取当前文件的版本号 GetFileVersion
//获取磁盘空间 DiskSize; DiskFree
//搜索文件 FindFirst; FindNext; FindClose
//读取与设置文件属性 FileGetAttr; FileSetAttr
//获取文件的创建时间 FileAge; FileDateToDateTime

Delphi代码

//判断文件是否存在 FileExists   

var  

  f: string;   

begin  

  f := 'c:"temp"test.txt';   

  if not FileExists(f) then  

  begin  

   //如果文件不存在   

  end;   

end;   

  

--------------------------------------------------------------------------------   

  

  

//判断文件夹是否存在 DirectoryExists   

var  

  dir: string;   

begin  

  dir := 'c:"temp';   

  if not DirectoryExists(dir) then  

  begin  

   //如果文件夹不存在   

  end;   

end;   

  

--------------------------------------------------------------------------------   

  

  

//删除文件 DeleteFile; Windows.DeleteFile   

var  

  f: string;   

begin  

  f := 'c:"temp"test.txt';   

//DeleteFile(f);  //返回 Boolean   

  

//或者用系统API:   

  Windows.DeleteFile(PChar(f)); //返回 Boolean   

end;   

  

--------------------------------------------------------------------------------   

  

  

//删除文件夹 RemoveDir; RemoveDirectory   

var  

  dir: string;   

begin  

  dir := 'c:"temp';   

  RemoveDir(dir); //返回 Boolean   

  

//或者用系统 API:   

  RemoveDirectory(PChar(dir)); //返回 Boolean   

end;   

  

--------------------------------------------------------------------------------   

  

  

//获取当前文件夹 GetCurrentDir   

var  

  dir: string;   

begin  

  dir := GetCurrentDir;   

  ShowMessage(dir); //C:"Projects   

end;   

  

--------------------------------------------------------------------------------   

  

  

//设置当前文件夹 SetCurrentDir; ChDir; SetCurrentDirectory   

var  

  dir: string;   

begin  

  dir := 'c:"temp';   

  if SetCurrentDir(dir) then  

    ShowMessage(GetCurrentDir); //c:"temp   

  

//或者   

  ChDir(dir); //无返回值   

  

//也可以使用API:   

  SetCurrentDirectory(PChar(Dir)); //返回 Boolean   

end;   

  

--------------------------------------------------------------------------------   

  

  

//获取指定驱动器的当前路径名 GetDir   

var  

  dir: string;   

  b: Byte;   

begin  

  b := 0;   

  GetDir(b,dir);   

  ShowMessage(dir); //   

  

//第一个参数: 1234...分别对应: ABCD...   

//0 是缺省驱动器   

end;   

  

--------------------------------------------------------------------------------   

  

  

//文件改名 RenameFile   

var  

  OldName,NewName: string;   

begin  

  OldName := 'c:"temp"Old.txt';   

  NewName := 'c:"temp"New.txt';   

  

  if RenameFile(OldName,NewName) then  

    ShowMessage('改名成功!');   

  

//也可以:   

  SetCurrentDir('c:"temp');   

  OldName := 'Old.txt';   

  NewName := 'New.txt';   

 

  if RenameFile(OldName,NewName) then  

    ShowMessage('改名成功!');   

  

//也可以:   

  SetCurrentDir('c:"temp');   

  OldName := 'Old.txt';   

  NewName := 'New.txt';   

  

  if RenameFile(OldName,NewName) then  

    ShowMessage('改名成功!');   

end;   

  

--------------------------------------------------------------------------------   

  

  

//建立文件夹 CreateDir; CreateDirectory; ForceDirectories   

var  

  dir: string;   

begin  

  dir := 'c:"temp"delphi';   

  if not DirectoryExists(dir) then  

    CreateDir(dir); //返回 Boolean   

  

//也可以直接用API:   

  CreateDirectory(PChar(dir),nil); //返回 Boolean   

  

//如果缺少上层目录将自动补齐:   

  dir := 'c:"temp"CodeGear"Delphi"2007"万一';   

  ForceDirectories(dir); //返回 Boolean   

end;   

  

--------------------------------------------------------------------------------   

  

  

//删除空文件夹 RemoveDir; RemoveDirectory   

var  

  dir: string;   

begin  

  dir := 'c:"temp"delphi';   

  RemoveDir(dir); //返回 Boolean   

  

//也可以直接用API:   

  RemoveDirectory(PChar(dir)); //返回 Boolean   

end;   

  

--------------------------------------------------------------------------------   

  

  

//建立新文件 FileCreate   

var  

  FileName: string;   

  i: Integer;   

begin  

  FileName := 'c:"temp"test.dat';   

  i := FileCreate(FileName);   

  

  if i>0 then  

    ShowMessage('新文件的句柄是: ' + IntToStr(i))   

  else  

    ShowMessage('创建失败!');   

end;   

  

--------------------------------------------------------------------------------   

  

  

//获取当前文件的版本号 GetFileVersion   

var  

  s: string;   

  i: Integer;   

begin  

  s := 'C:"WINDOWS"notepad.exe';   

  i := GetFileVersion(s); //如果没有版本号返回 -1   

  ShowMessage(IntToStr(i)); //327681 这是当前记事本的版本号(还应该再转换一下)   

end;   

  

--------------------------------------------------------------------------------   

  

  

//获取磁盘空间 DiskSize; DiskFree   

var  

  r: Real;   

  s: string;   

begin  

  r := DiskSize(3); //获取C:总空间单位是字节   

  r := r/1024/1024/1024;   

  Str(r:0:2,s); //格式为保留两位小数的字符串   

  s := 'C盘总空间是: ' + s + ' GB';   

  ShowMessage(s); //xx.xx GB   

  

  r := DiskFree(3); //获取C:可用空间   

  r := r/1024/1024/1024;   

  Str(r:0:2,s);   

  s := 'C盘可用空间是: ' + s + ' GB';   

  ShowMessage(s); //xx.xx GB   

end;   

  

//查找一个文件 FileSearch   

var  

  FileName,Dir,s: string;   

begin  

  FileName := 'notepad.exe';   

  Dir := 'c:"windows';   

  s := FileSearch(FileName,Dir);   

  

  if s<>'' then  

    ShowMessage(s) //c:"windows"notepad.exe   

  else  

    ShowMessage('没找到');   

end;   

  

--------------------------------------------------------------------------------   

  

  

//搜索文件 FindFirst; FindNext; FindClose   

var  

  sr: TSearchRec;    //定义 TSearchRec 结构变量   

  Attr: Integer;     //文件属性   

  s: string;         //要搜索的内容   

  List: TStringList; //存放搜索结果   

begin  

  s := 'c:"windows"*.txt';   

  Attr := faAnyFile;             //文件属性值faAnyFile表示是所有文件   

  List := TStringList.Create;    //List建立   

  

  if FindFirst(s,Attr,sr)=0 then //开始搜索,并给 sr 赋予信息返回0表示找到第一个   

  begin  

    repeat                       //如果有第一个就继续找   

      List.Add(sr.Name);         //List记下结果   

    until(FindNext(sr)<>0);      //因为sr已经有了搜索信息, FindNext只要这一个参数返回0表示找到   

  end;   

  FindClose(sr);                 //需要结束搜索搜索是内含句柄的   

  

  ShowMessage(List.Text);        //显示搜索结果   

  List.Free;                     //释放List   

  

//更多注释:   

//TSearchRec 结构是内涵文件大小、名称、属性与时间等信息   

//TSearchRec 中的属性是一个整数值可能的值有:   

//faReadOnly  1   只读文件   

//faHidden    2   隐藏文件   

//faSysFile   4   系统文件   

//faVolumeID  8   卷标文件   

//faDirectory 16  目录文件   

//faArchive   32  归档文件   

//faSymLink   64  链接文件   

//faAnyFile   63  任意文件   

  

//s 的值也可以使用?通配符,好像只支持7?, 如果没有条件就是*, 譬如: C:"*   

//实际使用中还应该在 repeat 中提些条件譬如判断如果是文件夹就递归搜索等等   

end;   

  

--------------------------------------------------------------------------------   

  

  

//读取与设置文件属性 FileGetAttr; FileSetAttr   

var  

  FileName: string;   

  Attr: Integer; //属性值是一个整数   

begin  

  FileName := 'c:"temp"Test.txt';   

  Attr := FileGetAttr(FileName);   

  ShowMessage(IntToStr(Attr)); //32, 存档文件   

  

//设置为隐藏和只读文件:   

  Attr := FILE_ATTRIBUTE_READONLY or FILE_ATTRIBUTE_HIDDEN;   

  if FileSetAttr(FileName,Attr)=0 then //返回0表示成功   

    ShowMessage('设置成功!');   

  

//属性可选值(有些用不着):   

//FILE_ATTRIBUTE_READONLY = 1; 只读   

//FILE_ATTRIBUTE_HIDDEN = 2; 隐藏   

//FILE_ATTRIBUTE_SYSTEM = 4; 系统   

//FILE_ATTRIBUTE_DIRECTORY = 16   

//FILE_ATTRIBUTE_ARCHIVE = 32; 存档   

//FILE_ATTRIBUTE_DEVICE = 64   

//FILE_ATTRIBUTE_NORMAL = 128; 一般   

//FILE_ATTRIBUTE_TEMPORARY = 256   

//FILE_ATTRIBUTE_SPARSE_FILE = 512   

//FILE_ATTRIBUTE_REPARSE_POINT = 1204   

//FILE_ATTRIBUTE_COMPRESSED = 2048; 压缩   

//FILE_ATTRIBUTE_OFFLINE = 4096   

//FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = 8192; 不被索引   

//FILE_ATTRIBUTE_ENCRYPTED = 16384   

end;   

  

--------------------------------------------------------------------------------   

  

  

//获取文件的创建时间 FileAge; FileDateToDateTime   

var  

  FileName: string;   

  ti: Integer;   

  dt: TDateTime;   

begin  

  FileName := 'c:"temp"Test.txt';   

  ti := FileAge(FileName);   

  ShowMessage(IntToStr(ti)); //返回: 931951472, 需要转换   

  

  dt := FileDateToDateTime(ti); //转换   

  ShowMessage(DateTimeToStr(dt)); //2007-12-12 14:27:32   

end;  

从QQ2008年开始,腾讯的QQ就不能通过查找标题的方式来查找QQ号码了,如图

所以,通过FindWindowEx 等方式来查找窗口貌似是行不通了,但是,我们还有一大杀器,通过Game Edit(CE5.6青色咖啡汉化版)来查找,如图,打开Game Edit打开QQ的进程,然后找你的QQ号码,一般会出现67个以上地址,哪个是的呢?

往下面拉,把那两个绿色的保存下来,退出QQ后再重新登录,再用gameedit打开QQ进程,那两个QQ号码一直没改变,说明这两个地址都可以,保存其中一个地址,然后打开我们的delphi,通过程序来获取.

首先,我们要查找QQ的窗口句柄

代码如下图

如图,获取了所有的QQ号码及Email帐号,呢称也能获取,代码稍后奉上.

 
        
  1. function EnumWndProc(AWnd: HWND; AlParam: LPARAM): Boolean; stdcall;
  2.     
  3. var
  4.     
  5. szText: array[0..254] of char;
  6.     
  7. Hwind:THandle;
  8.     
  9. pid:DWORD;
  10.     
  11. Num, Byteread:Cardinal;
  12.     
  13. WName: array [0..36] of WideChar;
  14.     
  15. Item:TListItem;
  16.     
  17. t:Integer;
  18.     
  19. begin
  20.     
  21. if GetWindowText(awnd, @szText, 255) > 0 then
  22.     
  23. if (length(szText)>0) and (szText ='QQ2010') then
  24.     
  25. getWindowThreadProcessId(AWnd, @PID);
  26.     
  27. Hwind :=OpenProcess(PROCESS_ALL_ACCESS, false, pid);
  28.     
  29. if Hwind> 0 then
  30.     
  31. begin
  32.     
  33. ReadProcessMemory(Hwind, Pointer($31883598), @Num, 4, ByteRead);
  34.     
  35. ReadProcessMemory(Hwind,Pointer($00167604),@wname,36,Byteread);
  36.     
  37. t:=Form1.ListView1.Items.Count;
  38.     
  39. item:=Form1.listview1.Items.Add;
  40.     
  41. Item.Caption:=IntToStr(t);
  42.     
  43. Item.SubItems.Add(IntToStr(Num));
  44.     
  45. if Pos('@',wname)>0 then
  46.     
  47. Item.SubItems.Add(wname) else
  48.     
  49. Item.SubItems.Add('无');
  50.     
  51. end;
  52.     
  53. closeHandle(Hwind);
  54.     
  55. result:=True;
  56.     
  57. end;
  58.     
  59.  
  60.     
  61. procedure TForm1.Button1Click(Sender: TObject);
  62.     
  63. begin
  64.     
  65. Form1.ListView1.Items.Clear;
  66.     
  67. EnumWindows(@EnumWndProc, 0);
  68.     
  69.  
  70.     
  71. end;

 

最近装了盗版的NOD32,但是ID懒得找(主要是ID分发网站弹窗太多了),就写了这个NOD32 自动ID获取器,装上这个软件基本上就不会有找ID的烦恼了,每次开机启动都会验证电脑中的ID是否过期,没过期的话就自动调用NOD32更新病毒库,若过期了的话就会自动获取ID,自动更换,然后自动更新病毒库(不会象有些软件影响键盘鼠标操作),软件会自动验证是否加入了NOD32的排除列表,如果没有加入的话自动加入NOD32排除列表(某人还把自动加入NOD32排除列表当做宝,不公布哈哈),支持4.0版以上的EAV和ESS,其它版本我没有试,建议大家用高版本的NOD32,因为安全啦。

下载文件 (已下载 198 次)

 

WebBrowser 操作记要 不指定

青色咖啡 , 2010/11/19 13:57 , 个人作品 , 评论(1) , 阅读(580) , Via 本站原创
WebBrowser1.GoHome;  //到浏览器默认主页
WebBrowser1.Refresh;  //刷新
WebBrowser1.GoBack;  //后退
WebBrowser1.GoForward;  //前进
WebBrowser1.Navigate('...');  //打开指定页面
WebBrowser1.Navigate('about:blank');  //打开空页面

//打开空页面, 并写入...

WebBrowser1.Navigate('about:<head><title>标题</title><body>页面内容</body>');

//读取网页脚本中的变量:

procedure TForm1.Button1Click(Sender: TObject);
var
  s: string;
  i: Integer;
begin
  s := WebBrowser1.OleObject.document.Script.str;
  i := WebBrowser1.OleObject.document.Script.num;
  ShowMessage(s);  //Hello
  ShowMessage(IntToStr(i));  //99

  //也可以这样读:
  s := WebBrowser1.OleObject.document.parentWindow.str;
  i := WebBrowser1.OleObject.document.parentWindow.num;
  ShowMessage(s);  //Hello
  ShowMessage(IntToStr(i));  //99
end;

假如网页中有这样的语句: &lt;script&gt; var str = &quot;Hello&quot;; i = 99; &lt;/script&gt;


//调用网页脚本中的函数:

procedure TForm1.Button1Click(Sender: TObject);
begin
  WebBrowser1.OleObject.document.parentWindow.MB(); //HTML-Js

  //如需指定脚本语言, 需要:
  WebBrowser1.OleObject.document.parentWindow.execScript('MB()','JavaScript'); //HTML-Js
end;

假如有这样的脚本: &lt;script&gt; function MB()&#123; alert('HTML-Js'); &#125; &lt;/script&gt;


//判断网页及内部框架网页是否全部下载完毕

procedure TForm1.WebBrowser1DocumentComplete(ASender: TObject;
  const pDisp: IDispatch; var URL: OleVariant);
begin
  if WebBrowser1.Application = pDisp then
  begin
    Text := '网页下载完毕!';
  end;
end;

//改变背景色或背景图片:
WebBrowser1.OleObject.document.body.bgcolor := '#FF0000';
WebBrowser1.OleObject.document.body.background := '...图片地址';

//操作有 ID 标签的对象:
var
  s: string;
begin
  s := WebBrowser1.OleObject.document.getElementByID('span1').innerText;
  ShowMessage(s);  //这是 span1 标签中的内容

  //或者:
  s := WebBrowser1.OleObject.document.parentWindow.span1.innerText;
  ShowMessage(s);  //这是 span1 标签中的内容

  //隐藏它:
  WebBrowser1.OleObject.document.parentWindow.span1.style.display := 'none';
end;

假如网页中有这样的内容: &lt;span id=span1&gt;这是 span1 标签中的内容&lt;/span&gt;


//获取网页源代码
var
  s: string;
begin
  s := WebBrowser1.OleObject.document.body.innerHTML; //body内的所有代码
  s := WebBrowser1.OleObject.document.body.outerHTML; //body内的所有代码, 包含body标签
  s := WebBrowser1.OleObject.document.documentElement.innerHTML; //html内的所有代码
end;

//获取网页全部源代码
uses ActiveX;
var
  ms: TMemoryStream;
begin
  if not Assigned(WebBrowser1.Document) then Exit;
  ms := TMemoryStream.Create;
  (WebBrowser1.Document as IPersistStreamInit).Save(TStreamAdapter.Create(ms), True);
  ms.Position := 0;
  Memo1.Lines.LoadFromStream(ms, TEncoding.UTF8);
//  Memo1.Lines.LoadFromStream(ms, TEncoding.Default); {GB2312 等双字节}
  ms.Free;
end;

//WebBrowser 中的右键菜单

//先要添加ApplicationEvents1,指定其Message事件

//屏蔽右键菜单
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean);
begin
  with Msg do
  begin
    if not IsChild(WebBrowser1.Handle, hWnd) then Exit;
    Handled := (message = WM_RBUTTONDOWN) or (message = WM_RBUTTONUP) or (message = WM_CONTEXTMENU);
  end;
end;

//替换右键菜单
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean);
var mPoint: TPoint;
begin
  if IsChild(WebBrowser1.Handle, Msg.Hwnd) and
     ((Msg.Message = WM_RBUTTONDOWN) or (Msg.Message = WM_RBUTTONUP)) then
  begin
      GetCursorPos(mPoint);  //得到光标位置
      PopupMenu1.Popup(mPoint.X, mPoint.Y);   //弹出popupmenu1的菜单
      Handled:=True;
  end;
end;

//新页面写入
begin
  WebBrowser1.Navigate('about:blank');
  WebBrowser1.OleObject.Document.Writeln('ok');
end;

//从流中写入:
var
  ms: TMemoryStream;
begin
  ms := TMemoryStream.Create;
  Memo1.Lines.SaveToStream(ms);
  ms.Position := 0;
  (WebBrowser1.Document as IPersistStreamInit).Load(TStreamAdapter.Create(ms));
  ms.Free;
end;

//禁止提示脚步错误
procedure TForm1.WebBrowser1NavigateComplete2(ASender: TObject;
  const pDisp: IDispatch; var URL: OleVariant);
begin
  WebBrowser1.Silent := True;
end;

//禁止弹出窗口
procedure TForm1.WebBrowser1NewWindow2(ASender: TObject; var ppDisp: IDispatch;
  var Cancel: WordBool);
begin
  Cancel := True;
end;

 

分页: 2/26 第一页 上页 1 2 3 4 5 6 7 8 9 10 下页 最后页 [ 显示模式: 摘要 | 列表 ]