findwindowexa(findwindowexa 所有窗体)

张工 2022-05-24 20:49:42 阅读:26
  

FindWindowEx用法怎么用?

  SPY用于查找子窗口。

  ////////

  privatdeclarefunctionfindwindwindowexlib“user 32”别名“findwindowexa”(byvalhwnd 1 AsLong,ByValhWnd2AsLong,ByVallpsz1AsString,ByVallpsz2AsString)AsLong

  看里面的参数,第一个和第二个:ByValhWnd1AsLong,ByValhWnd2AsLong,这里都需要传入,然后再看第三个和第四个:byval lpsz1asstring,byval lpsz2asstring,字符串要传入的地方。具体含义如下:

  HWND1 - long,在其中查找子窗口的父窗口。如果设置为零,则使用桌面窗口(通常,顶层窗口被视为桌面的子窗口,因此也将被搜索)

  HWND 2 - Long,从这扇窗后面开始搜索。这样,多次调用FindWindowEx就可以找到所有符合条件的子窗口。如果设置为零,则从第一个子窗口开始搜索。

  Lpsz1 - String,要搜索的类名。零表示忽略。注意,vbNullString通常是传入的。

  Lpsz2 - String,要搜索的类名。零表示忽略。注意,vbNullString通常是传入的。

  用实践来帮助我们分析。这里,我们就把记事本当做一个操作吧。打开记事本,创建一个新的标准EXE,然后创建一个新的CommandButton。标题设置为:设置文本。好,写下面的代码:

  privatdeclarefunctionfindwindowlib“user 32”别名“findwindowa”(ByVallpClassNameAsString,ByVallpWindowNameAsString)as long

  privatdeclarefunctionfindwindwindowexlib“user 32”别名“findwindowexa”(byvalhwnd 1 AsLong,ByValhWnd2AsLong,ByVallpsz1AsString,ByVallpsz2AsString)AsLong

  privatedeclaurefunctionenablewindowlib“user 32”(ByValhwndAsLong,ByValfEnableAsLong)AsLong

  PrivateSubCommand1_Click()

  DimWindowHandleAsLong,ChildWindowHandleAsLong

  Handle=findwindow (vbnullstring,“无标题-记事本”)

  如果成功获得句柄,则为“IfWindowHandleThen”

  ChildWindowHandle=FindWindowEx(window handle,0,' Edit ',vbNullString)

  如果成功获得子句柄,则为“IfChildWindowHandleThen”

  Enawindowchildwindowhandle,false '禁用子窗口。

  MsgBox '无法获取子窗口'

  结束条件

  结束条件

  末端接头

  好吧,我们来帮你分析一下。看第一行:dimwindowhandleslong,childwindowhandleslong,用来存储获取的句柄。Handle=FindWindow (vbnullstring,' untitled-notepad ')这个就不用说了,上面已经提到了。

  child window handle=findwindowex(window handle,0,' edit ',vbnullstring),这段是通过我们已经获得的记事本句柄来获得子窗口句柄。可以用Spy查看记事本的TextBox类,然后根据类名编写。

  这是一个新的API。虽然我以前没做过,但是这个API使用起来极其简单。这个API中有两个参数,第一个是传入窗口句柄,第二个是一个长变量。其实这里应该设置为布尔变量,主要用来处理当前窗口是否可用。真可用,假禁用。

  现在F5正在运行,记得打开记事本,然后点击Command1,看看能不能在记事本的文本框里输入一个字符串。是不是残疾了?

  这个答案是提问者推荐的。

FindWindowEx用法怎么用?

  SPY用于查找子窗口。

  ////////

  privatdeclarefunctionfindwindwindowexlib“user 32”别名“findwindowexa”(byvalhwnd 1 AsLong,ByValhWnd2AsLong,ByVallpsz1AsString,ByVallpsz2AsString)AsLong

  看里面的参数,第一个和第二个:ByValhWnd1AsLong,ByValhWnd2AsLong,这里都需要传入句柄,再看第三个和第四个:ByVallpsz1AsString,ByVallpsz2AsString,这里所要传入的是字符串。具体意思如下:

  hWnd1----------Long,在其中查找子的父窗口。如设为零,表示使用桌面窗口(通常说的顶级窗口都被认为是桌面的子窗口,所以也会对它们进行查找)

  hWnd2----------Long,从这个窗口后开始查找。这样便可利用对FindWindowEx的多次调用找到符合条件的所有子窗口。如设为零,表示从第一个子窗口开始搜索

  lpsz1----------String,欲搜索的类名。零表示忽略,注意一般传入vbNullString

  lpsz2----------String,欲搜索的类名。零表示忽略,注意一般传入vbNullString

  用实践帮我们分析,这里还是拿记事本开刀。打开一个记事本,新建一个标准EXE,接着新建一个CommandButton,Caption设置为:设置文本。OK,写入以下代码:

  PrivateDeclareFunctionFindWindowLib"user32"Alias"FindWindowA"(ByVallpClassNameAsString,ByVallpWindowNameAsString)AsLong

  PrivateDeclareFunctionFindWindowExLib"user32"Alias"FindWindowExA"(ByValhWnd1AsLong,ByValhWnd2AsLong,ByVallpsz1AsString,ByVallpsz2AsString)AsLong

  PrivateDeclareFunctionEnableWindowLib"user32"(ByValhwndAsLong,ByValfEnableAsLong)AsLong

  PrivateSubCommand1_Click()

  DimWindowHandleAsLong,ChildWindowHandleAsLong

  WindowHandle=FindWindow(vbNullString,"无标题-记事本")

  IfWindowHandleThen'如果获取句柄成功

  ChildWindowHandle=FindWindowEx(WindowHandle,0,"Edit",vbNullString)

  IfChildWindowHandleThen'如果成功获取子句柄

  EnableWindowChildWindowHandle,False'禁用子窗口

  MsgBox"无法获取子窗口"

  EndIf

  EndIf

  EndSub

  好了,帮大家分析。看第一行:DimWindowHandleAsLong,ChildWindowHandleAsLong,用于储存获取的句柄的。WindowHandle=FindWindow(vbNullString,"无标题-记事本")这个就不用讲了,上面已经讲过。

  ChildWindowHandle=FindWindowEx(WindowHandle,0,"Edit",vbNullString),这一段是通过我们已经获取的记事本句柄获取其中的子窗口句柄。大家可以用Spy++查看到记事本的TextBox类,然后根据类名写入即可。

  EnableWindowChildWindowHandle,False这又是一个新的API,虽然前面我没有前过,但是这个API使用起来及其简单。这个API中有两个参数,第一个理所当然是传入窗口句柄,第二个为Long变量,其实这里应该设为Boolean变量好些,主要是用来处理当前窗口是否可用。True可用,False禁用。

  现在F5运行,记得打开记事本哦,然后点击Command1,看看能不能在记事本的文本框中输入字符串?是否被禁用了?

  本回答由提问者推荐

many a什么意思

  许多的,一个有一个的

  Many a woman sighs for a house of her own.

  许多妇女都渴望有一幢属于自己的房子。many a是一固定搭配的短语,有许多,一个又一个的意思Many a boy adores her.

  许多男孩喜欢她。

  许多的意思许多就是many的意思

  但是如果后面接从句要用谓语单数形式意思是很多

many a什么意思

  许多的,一个有一个的

  Many a woman sighs for a house of her own.

  许多妇女都渴望有一幢属于自己的房子。many a是一固定搭配的短语,有许多,一个又一个的意思Many a boy adores her.

  许多男孩喜欢她。

  许多的意思许多就是many的意思

  但是如果后面接从句要用谓语单数形式意思是很多

二维码