Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Integer, _
ByVal lParam As Long) As Long Declare Function FindWindow Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName As String, ByVal _
lpWindowName As String) As Long
Declare Function LockWindowUpdate Lib "user32" (ByVal hwndLock As Long) As Long

Private Const WM_SETREDRAW = &HB

Private Sub tryThis()
Dim h As Long
h = FindWindow("xlMain", vbNullString)
LockWindowUpdate Application.VBE.MainWindow.hwnd
Call SendMessage(h, WM_SETREDRAW, 0, 0)
Application.SendKeys "Range", True
Application.SendKeys "~", True
Application.Goto Reference:="tryThis"
On Error Resume Next 'in case it's not there
With ThisWorkbook.VBProject.VBComponents("Module2").CodeModule
.DeleteLines 1, .CountOfLines
End With
Call SendMessage(h, WM_SETREDRAW, 1, 0)
Application.VBE.MainWindow.Visible = False
LockWindowUpdate 0
ThisWorkbook.Close True
End Sub
 
 
 
FindWindow(
  lpClassName,        {窗口的类名}
  lpWindowName: PChar {窗口的标题}
): HWND;              {返回窗口的句柄; 失败返回 0} //FindWindowEx 比 FindWindow 多出两个句柄参数:
FindWindowEx(
  Parent: HWND;    {要查找子窗口的父窗口句柄}
  Child: HWND;      {子窗口句柄}
  ClassName: PChar; {}
  WindowName: PChar {}
): HWND;
{
如果 Parent 是 0, 则函数以桌面窗口为父窗口, 查找桌面窗口的所有子窗口;
如果  是 HWND_MESSAGE, 函数仅查找所有消息窗口;
子窗口必须是 Parent 窗口的直接子窗口;
如果 Child 是 0, 查找从 Parent 的第一个子窗口开始;
如果 Parent 和 Child 同时是 0, 则函数查找所有的顶层窗口及消息窗口.
}

//测试1: 试着找找新建程序主窗口的句柄
var
  h: HWND;
begin
  {现在我们知道窗口的标题是: Form1、窗口的类名是: TForm1}
  h := FindWindow('TForm1', 'Form1');
  ShowMessage(IntToStr(h));      {656180; 这是随机, 每次启动窗口肯定不一样}   {假如不知道类名}
  h := FindWindow(nil, 'Form1');
  ShowMessage(IntToStr(h));      {656180}   {假如不知道标题名}
  h := FindWindow('TForm1', nil);
  ShowMessage(IntToStr(h));      {656180}   {其实这个窗口的句柄不就是 Self.Handle 吗}
  ShowMessage(IntToStr(Handle)); {656180}
end;

//测试2: 找计算器窗口的句柄(先打开计算器)
var
  h: HWND;
begin
  {如果不是简体中文系统, 这样可能不灵}
  h := FindWindow(nil, '计算器');
  ShowMessage(IntToStr(h)); {1508334}   {最好这样, 但你得提前知道计算器窗口的类名是: SciCalc}
  h := FindWindow('SciCalc', nil);
  ShowMessage(IntToStr(h)); {1508334}
end;

FindWindow 查找窗口的更多相关文章

  1. WinAPI: FindWindow、FindWindowEx - 查找窗口

    FindWindow(   lpClassName,        {窗口的类名}   lpWindowName: PChar {窗口的标题} ): HWND;              {返回窗口的 ...

  2. MFC注册窗口类以及FindWindow按窗口类名查询

    很多玩游戏的人都知道一般游戏客户端程序是不允许双开的,就是说在同一游戏在启动的时候,是无法打开多个窗口.很多其他软件如酷狗播放器等也是这样.如果把打开的窗口最小化,这时重新启动程序,最小化的窗口会被显 ...

  3. win32gui.Findwindow(parm1,parm2)查找窗口的句柄方法

    介绍之前先让大家了解一下win32gui的模块用法 和 获取窗口类名工具 使用Python时,有时也会要操作到系统窗口的一些东西,下面就介绍win32gui.Findwindow(param1,par ...

  4. MFC注册窗口类以及FindWindow按窗口类名查询(避免用#32770获取窗口句柄)

    呵呵,最近在研究SendMessage函数,其中需要用到m_hWnd,之后延伸着又尝试获得窗口的句柄,于是遇到了FindWindow函数,原型如下: HWND FindWindow ( LPCSTR ...

  5. c#查找窗口的两种办法

    原文最早发表于百度空间2009-06-17 1.process.MainWindowTitle(这个只能获取一部分窗口)2.EnumWindows(用windows API)

  6. C# 调用win api获取chrome浏览器中地址

    //FindWindow 查找窗口 //FindWindowEx查找子窗口 //EnumWindows列举屏幕上的所有顶层窗口,如果回调函数成功则返回非零,失败则返回零 //GetWindowText ...

  7. Windows 系统上用 .NET/C# 查找所有窗口,并获得窗口的标题、位置、尺寸、最小化、可见性等各种状态

    原文:Windows 系统上用 .NET/C# 查找所有窗口,并获得窗口的标题.位置.尺寸.最小化.可见性等各种状态 在 Windows 应用开发中,如果需要操作其他的窗口,那么可以使用 EnumWi ...

  8. 在C#中简单调用FindWindow控制其他程序

    C#本身是没有FindWindow这个函数的, 为什么没有呢? 很简单,C#毕竟是微软自家开发出来的.而WIN API中本来封装了很多对窗口的操作,所以当然能重用的就要重用,这些封装好的函数一般在系统 ...

  9. 在C#中调用Win32函数EnumWindows枚举所有窗口。

    原文 http://www.cnblogs.com/mfm11111/archive/2009/06/30/1514322.html 开发旺旺群发软件,难点及重要技术点分析(一) 一.        ...

随机推荐

  1. 当php版本为5.6时的提示信息解决方法

    ecshop修饰符preg_replace/e不安全的几处改动 Strict standards: Only variables should be passed by reference in D: ...

  2. treeql 基于rest 标准的接口开发协议

    treeql 可以让我们按照数据库的关系模型,生成一个tree 模型的json 数据,基于rest 标准, 从设计上,来说还是很不错的,但是从长远发展来说graphql 应该会更好,也有相关的比较 参 ...

  3. [LeetCode系列] 从中序遍历和后序遍历序列构造二叉树(迭代解法)

    给定中序遍历inorder和后序遍历postorder, 请构造出二叉树. 算法思路: 设后序遍历为po, 中序遍历为io. 首先取出po的最后一个节点作为根节点, 同时将这个节点入stn栈; 随后比 ...

  4. hadoop之 node manager起不来, 执行mapreduce 程序hang住

    现象: node manager起不来, 执行mapreduce 程序hang住 namenode 进程状态查询[root@hadp-master sbin]# jps8608 ResourceMan ...

  5. js一种继承机制:用对象冒充继承构造函数的属性,用原型prototype继承对象的方法。

    js一种继承机制:用对象冒充继承构造函数的属性,用原型prototype继承对象的方法. function ClassA(sColor) { this.color = sColor; } ClassA ...

  6. python版 google密码认证器

    #!/usr/bin/env python # -*- coding:utf-8 -*- import hmac, base64, struct, hashlib, time def calGoogl ...

  7. keepalived的配置详解(非常详细)

    keepalived的配置详解(非常详细) 2017-01-22 15:24 2997人阅读 评论(0) 收藏 举报  分类: 运维学习(25)    转载自:http://blog.csdn.net ...

  8. gdb 调试(设置变量)(六)

    一旦使用GDB挂上被调试程序,当程序运行起来后,你可以根据自己的调试思路来动态地在GDB中更改当前被调试程序的运行线路或是其变量的值,这个强大的功能能够让你更好的调试你的程序,比如,你可以在程序的一次 ...

  9. 关于 android 读取当前手机号码

    手机号码不是所有的都能获取.只是有一部分可以拿到.这个是由于移动运营商没有把手机号码的数据写入到sim卡中.SIM卡只有唯一的编号,供网络与设备识别那就是IMSI号码,手机的信号也可以说是通过这个号码 ...

  10. BASIC-18_蓝桥杯_矩形面积交

    解题思路: 1.先将可能的情况列出,根据分类确定计算的方式; 示例代码: #include <stdio.h>#define N 8 int main(void){ int i = 0 , ...