Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" _

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" _相关的知识,希望对你有一定的参考价值。

这段代码的意思
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public Declare Function GetSystemMenu Lib "user32" _
(ByVal hWnd As Long, ByVal bRevert As Long) As Long
Public Declare Function DeleteMenu Lib "user32" _
(ByVal hMenu As Long, ByVal nPosition As Long, _
ByVal wFlags As Long) As Long
这一段代码的意思

    这些都是API函数。

    每个API函数的主要用途分别为:

    FindWindow
    寻找窗口列表中第一个符合指定条件的顶级窗口(在vb里使用:FindWindow最常见的一个用途是获得ThunderRTMain类的隐藏窗口的句柄;该类是所有运行中vb执行程序的一部分。获得句柄后,可用api函数GetWindowText取得这个窗口的名称;该名也是应用程序的标题)。

    GetSystemMenu
    取得指定窗口的系统菜单的句柄。在vb环境,“系统菜单”的正式名称为“控制菜单”,即单击窗口左上角的控制框时出现的菜单。

    DeleteMenu
    删除指定的菜单条目(在vb里使用:强烈建议用vb菜单的visible属性从菜单中删除条目。如使用这个函数,会造成指定菜单其他菜单条目的visible属性错误的影响菜单条目)。


参考技术A 这些都是API函数。

每个API函数的主要用途分别为:

FindWindow
寻找窗口列表中第一个符合指定条件的顶级窗口(在vb里使用:FindWindow最常见的一个用途是获得ThunderRTMain类的隐藏窗口的句柄;该类是所有运行中vb执行程序的一部分。获得句柄后,可用api函数GetWindowText取得这个窗口的名称;该名也是应用程序的标题)

GetSystemMenu
取得指定窗口的系统菜单的句柄。在vb环境,“系统菜单”的正式名称为“控制菜单”,即单击窗口左上角的控制框时出现的菜单

DeleteMenu
删除指定的菜单条目(在vb里使用:强烈建议用vb菜单的visible属性从菜单中删除条目。如使用这个函数,会造成指定菜单其他菜单条目的visible属性错误的影响菜单条目)本回答被提问者采纳
参考技术B FindWindow,Win32 API函数。
FindWindow函数返回与指定字符串相匹配的窗口类名或窗口名的最顶层窗口的窗口句柄。这个函数不会查找子窗口。

参考资料:http://baike.baidu.com/view/373605.htm?fr=ala0_1_1

参考技术C 声明函数 FindWindow

dojo源码阅读之declare

dojo是一个开源的javascript 类库,它提供了一个declare函数来方便的实现多重继承。下面看下declare的实现原理。

1, 使用declare声明一个类(未继承其他类的类)。

let Human = declare([], 
    name: "",
    constructor:function(args)
        for(let i in args) 
            this[i] = args[i];
        
    ,
    sayName:function()
        console.log(this.name);
    
);

上面代码声明了一个Human类,declare的第一个参数为一个空数组,说明Human没继承其他类,第二个参数为一个object, 该object包含了Human类之身的属性和方法。然后就可以使用该类实例化一个对象。

let h = new Human(
     name: "alex"
);

declare是如何实现上面Human类的呢,declare源码第850行, 在该行代码中,bases既是Human所继承的类,上例中Huamn没继承其他类,所以Human = singleConstructor 运行后的返回值, 既一个匿名函数。暂且将该匿名函数计为anaymous.

那么declare实现上述Human类的原理大致可用下面伪代码表示。

 let Human = anaymous, proto = ;
 for (let p in props)  //props为传给declare的第二个object参数
    proto[p] = props[p];

anaymous.prototype = proto;
proto.constructor = anaymous;

当然Human.prototype还会被添加上像getInherited, inherited, isInstanceOf等方法。

2, 使用declare声明一个子类。

先声明父类C1和C2

p1 = 
     constructor:function(),
     sayName:function() 
         console.log("sayName in p1")
     
 ;
        
 C1 = declare([], p1);
 p2 = 
    sayAge:function() 
    console.log("sayAge in p2")
    ,
;
C2 = declare([], p2);

然后就和可以使用下面代码声明子类C3

p3 = 
  f: function() 
  
;
C3 = declare([C1, C2], p3);

其原理可用如下代码表示, 详细代码:多重继承

f = new Function();
f.prototype = C1.prototype; //mixin C1.prototype to new C3.prototype.
proto = new f()
for(var p in C2.prototype)
    proto[p] = C2.prototype[p];


f = new Function(); //mixin C2.prototype to new C3.prototype.
f.prototype = proto;
proto = new f();

for(var p in p3) 
    proto[p] = p3[p];


C3 = chainedConstructor()
C3.prototype = proto;
3, 使用inherited方法调用父类的方法, 待续。。。






以上是关于Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" _的主要内容,如果未能解决你的问题,请参考以下文章

27.1 API的声明

sqlserver的function有output参数吗?

VB怎么用API函数·详细的?

shell编程:有类型的变量

Dojo常用函数

declare 命令