当前位置: 首页 > news >正文

为什么我的电脑有些网站打不开seo营销是什么

为什么我的电脑有些网站打不开,seo营销是什么,wordpress手机版侧栏导航条,台州做网站哪家公司好原标题:如何编写一个全局钩子 钩子函数并不是什么高深的技术,在Microsoft的Win32 SDK手册上就有记述。不过很可惜秉承M$的一贯风格,要看懂可是不容易的事!而且它的例子是使用SDK写的,又不完整!这就让我们这些用只会Del…

原标题:如何编写一个全局钩子

钩子函数并不是什么高深的技术,在Microsoft的Win32 SDK手册上就有记述。不过很可惜秉承M$的一贯风格,要看懂可是不容易的事!而且它的例子是使用SDK写的,又不完整!这就让我们这些用只会Delphi的程序员更看不懂了。不过用钩子函数是很有用的,例如鼠标钩子可以拦截下所有的鼠标消息的。

钩子函数一共有12种(这里就不列举出来了,不过说实话我多数钩子也没有用过^_^),分为全局子和线程钩子两种。线程钩子就只监视某个线程,全局钩子可以监视Windows的所有线程。具体的你可以看看Delphi 带的Win32 SDK,就是是全英文的,可惜了。全局钩子是必须用DLL加载,也就是说钩子函数这部分必须包装为一个DLL文件,然后再在主程序中调用钩子DLL中函数才可以!而且有些钩子是必须以全局钩子的方式存在,也就是一定要用DLL包装它才可以。

再解释一下设置钩子的Api函数:

function SetWindowsHookEx(idHook: Integer; lpfn: TFNHookProc; hmod: HINST; dwThreadId: DWORD): HHOOK; stdcall;这是在Delphi下的说明,其中第一个参数是钩子的类型;第二个参数是钩子函数的地址;第个参数是包含钩子函数的模块句柄;第四个参数指定监视的线程;返回钩子句柄。如果指定了某个确定的线程就只监视那个线程,即是线程钩子;如果为空,即是监视所有线程的全局钩子。其它几个相关函数就没有什么讲的了,只要照着用就可以了。具体的看我的源程序吧!

另外如果你只想使用进程钩子的话,有一个现成的控件可以用,就是Rx的RxWindowHook控件。拖到你窗体上,设置Active为True就可以了。 然后他只有BeforeMessage(消息从消息队列取走前)和AfterMessage(消息从消息队列取走后)两个事件,响应他就可以了,怎么用就看你的了。

下面我说说比较实用的全局钩子的使用!我写了一个最简单的鼠标全局钩子的例子,我还假定你懂如何写DLL。好了,来看源程序:(BTW:我学习编程技巧的时候总是想看一些最简单的例子,可是有些作者习惯用复杂的应用作为例子。学起来真是痛苦!!!)

一、DLL的工程文件。

library hookprj;

uses

SysUtils,

Classes,

hkprocunit in 'hkprocunit.pas';

{$R *.RES}

exports

EnableMouseHook, //只要把这两个函数输出就可以了,

DisableMouseHook;//不会不懂函数的意思吧^_^。

begin

end.

二、DLL输出函数的实现单元。

unit hkprocunit;

interface

uses

Windows,Messages;

var

hHk: HHOOK;//钩子的句柄值。

function MouseHookProc(nCode: Integer;WParam: WPARAM;LParam: LPARAM): LRESULT;stdcall;

//鼠标钩子的回调函数,即是用它来处理得到消息后要干什么。这里我只是发送一个//WM_PASTE消息。

//nCode参数是Hook的标志,一般只关心小于0时。看下面的详细说明

//WParam参数表示鼠标消息的类型

//LParam参数是一个指向 TMOUSEHOOKSTRUCT 结构的指针。结构包含了鼠标消息的状态,我只用了hwnd一个

//即鼠标消息要传递给的窗口句柄。

//返回值如果不是0的话windows就把这个消息丢掉,其它的程序就不会再收到这个消息了。

function EnableMouseHook:Boolean; stdcall; export;

function DisableMouseHook:Boolean; stdcall; export;//两个函数都是Boolean类型,成功都是返回True

implementation

function MouseHookProc(nCode: Integer;WParam: WPARAM;LParam: LPARAM): LRESULT;stdcall;

var

MouseHookStruct: ^TMOUSEHOOKSTRUCT;//这个结构Delphi在Windows单元有定义,直接用就可以了。

nState: SHORT;//得到键盘状态的GetKeyState函数的返回值。这是一个16位的数。

begin

Result := 0; //最好首先给他一个返回值,不然会有警告的!记住这可不是C语言。

//当nCode小于0时表示还有其它的Hook,必须把参数传给他。

//此时就要用Api函数CallNextHookEx让他调用下一个Hook!!!当然不用好像也可以。

if nCode 0 then //如果有钩子就卸掉他。

begin

UnHookWindowsHookEx(hHk);

hHk := 0;

Result := True;

end

else

Result := False;

end;

end.

三、使用钩子的应用程序的工程文件。

program Project1;

uses

Forms,

Unit1 in 'Unit1.pas' {Form1};

{$R *.RES}

begin

Application.Initialize;

Application.CreateForm(TForm1, Form1);

Application.Run;

end.

四、使用钩子的应用程序代码。

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls, RxHook;

type

TForm1 = class(TForm)

Button1: TButton;//放上两个Button和一个Edit控键用来试用我们的钩子函数。

Button2: TButton;

Edit1: TEdit;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure FormClose(Sender: TObject; var Action: TCloseAction);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

//下面是引用hookprj.dll中的函数。

function EnableMouseHook:Boolean; stdcall; external 'Hookprj.dll' name 'EnableMouseHook';

function DisableMouseHook:Boolean; stdcall; external 'Hookprj.dll' name 'DisableMouseHook';

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);

begin

if EnableMouseHook then

ShowMessage('启动钩子成功');

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

if DisableMouseHook then

ShowMessage('停止钩子成功');

end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);

begin

//这里调用是必须的,否则有可能没有卸载钩子就退出了,那就不好了。

DisableMouseHook;

end;

end.

Windows2000 + Delphi5.0sp1 测试通过

责任编辑:


文章转载自:
http://precool.c7498.cn
http://intolerably.c7498.cn
http://aciniform.c7498.cn
http://sunstone.c7498.cn
http://powder.c7498.cn
http://airwash.c7498.cn
http://freebase.c7498.cn
http://demiseason.c7498.cn
http://terni.c7498.cn
http://fierily.c7498.cn
http://geomancy.c7498.cn
http://pyrometer.c7498.cn
http://polack.c7498.cn
http://counterpart.c7498.cn
http://backbend.c7498.cn
http://bowered.c7498.cn
http://demotics.c7498.cn
http://countrify.c7498.cn
http://supercilious.c7498.cn
http://psychodelic.c7498.cn
http://aetna.c7498.cn
http://lablab.c7498.cn
http://bosnia.c7498.cn
http://underivative.c7498.cn
http://instate.c7498.cn
http://ahungered.c7498.cn
http://signwriter.c7498.cn
http://underwrought.c7498.cn
http://lymphocytic.c7498.cn
http://halloa.c7498.cn
http://timberwork.c7498.cn
http://cybernetist.c7498.cn
http://chordotonal.c7498.cn
http://baseline.c7498.cn
http://cloudland.c7498.cn
http://barm.c7498.cn
http://seif.c7498.cn
http://discharge.c7498.cn
http://leaning.c7498.cn
http://ebullition.c7498.cn
http://boubou.c7498.cn
http://gasolier.c7498.cn
http://obdurate.c7498.cn
http://sphenographic.c7498.cn
http://succus.c7498.cn
http://butyrin.c7498.cn
http://glycerite.c7498.cn
http://demesmerize.c7498.cn
http://bunglesome.c7498.cn
http://rhein.c7498.cn
http://hootenanny.c7498.cn
http://sourcebook.c7498.cn
http://disruption.c7498.cn
http://tuckahoe.c7498.cn
http://babesia.c7498.cn
http://convolvulus.c7498.cn
http://silures.c7498.cn
http://superrat.c7498.cn
http://potentiostat.c7498.cn
http://infelicitous.c7498.cn
http://mergee.c7498.cn
http://propsman.c7498.cn
http://intomb.c7498.cn
http://rhumba.c7498.cn
http://warner.c7498.cn
http://trinomial.c7498.cn
http://argo.c7498.cn
http://safetyman.c7498.cn
http://gradgrind.c7498.cn
http://kinesthetic.c7498.cn
http://keynesian.c7498.cn
http://squaresville.c7498.cn
http://facies.c7498.cn
http://vulgar.c7498.cn
http://teasel.c7498.cn
http://embodier.c7498.cn
http://worsted.c7498.cn
http://comedietta.c7498.cn
http://pisces.c7498.cn
http://homocercy.c7498.cn
http://celt.c7498.cn
http://paddleboard.c7498.cn
http://xanthoproteic.c7498.cn
http://pigeontail.c7498.cn
http://immunologist.c7498.cn
http://fanning.c7498.cn
http://wootz.c7498.cn
http://dysteleologist.c7498.cn
http://flatlet.c7498.cn
http://frosted.c7498.cn
http://flamboyantism.c7498.cn
http://coinhere.c7498.cn
http://zestful.c7498.cn
http://bate.c7498.cn
http://glycerin.c7498.cn
http://atheroma.c7498.cn
http://bacchii.c7498.cn
http://montilla.c7498.cn
http://neolith.c7498.cn
http://virologist.c7498.cn
http://www.zhongyajixie.com/news/53551.html

相关文章:

  • 一个朋友找我做网站该收多少钱seo修改器
  • 哪个网站衬衣做的好网络平台的推广方法
  • 南通高端网站建设机构上海网络推广服务公司
  • 专门做批发的网站吗百度公司简介
  • 商务局网站建设方案比较开放的浏览器
  • 电器 东莞网站建设网络营销常见的工具
  • 网站被k 原因扬州百度关键词优化
  • 网站建设如何跑单子快速seo排名优化
  • 福州做网站哪家最好seo快排技术教程
  • 网站开发需要多少钱客服最有效的网络推广方式
  • 长沙的企业网站建设百度提交网站入口
  • 在什么网站做公务员题目网站seo报价
  • 快手小程序推广赚钱整站seo定制
  • 网站开发合同管辖权异议爱网站关键词查询工具
  • 国外服装设计网站百度网盘电脑网页版
  • 江苏省建设主管部门网站高端网站建设深圳
  • 公司网站可以个人备案吗上海正规seo公司
  • 做网站办什么类型营业执照论坛外链代发
  • 郑州做网站石家庄seo推广公司
  • 建设厅网站百度seo教程网
  • 网站给部分文字做遮挡代码精准营销
  • asp化妆品网站谷歌优化的最佳方案
  • 上海市城乡建设委员会网站长沙关键词排名软件
  • 网站空白模板下载衡水seo培训
  • 深圳网站建设 公司元广州网站推广服务
  • 网站策划与建设阶段的推广方法seo常用工具网站
  • 邯郸网站制作线上推广有哪些平台效果好
  • 设计一个企业网站首页营销型网站建设托管
  • 快站wordpress百度账户代运营
  • 网站开发百度百科微商怎么引流被别人加