用sendmessage 向别个一窗体发送赋值 点击消息。

选择用线程函数解决。

调用主窗体代码:

procedure TForm1.Button17Click(Sender: TObject);
var Thd:FindForm;
begin
Thd := FindForm.Create(False);
thd.DoIt := True;
Thd.MainWnd := Self.Handle;
emrpd.Print(2) ; //弹出窗体
Thd.DoIt := False;
Thd.Free;
end;

线程类FindForm如下:

unit Unit2;

interface

uses
  Classes,Windows,SysUtils,Messages;

type
  FindForm = class(TThread)
  private
    { Private declarations }
  protected
    procedure Execute; override;
  public

    MainWnd:THandle;
    DoIt:Boolean;
  end;

implementation
uses Unit1;
{ Important: Methods and properties of objects in visual components can only be
  used in a method called using Synchronize, for example,

      Synchronize(UpdateCaption);

  and UpdateCaption could look like,

    procedure FindForm.UpdateCaption;
    begin
      Form1.Caption := ‘Updated in a thread‘;
    end; }

{ FindForm }
function ExFindChildWindow(const TopWnd, ParentWnd: HWND; const WindowClass, WindowName: string): HWND;
var
    ChdWnd, wnd: HWND;
    sClass, sName: string;
begin
    ChdWnd := 0;
    result := 0;
    repeat
        ChdWnd := FindWindowEx(TopWnd, ChdWnd, nil, nil);
        if ChdWnd > 0 then
        begin
            sClass := GetClassNameByWnd(ChdWnd);
            sName := GetTextByWnd(ChdWnd);
            if ((WindowClass = sClass) or (WindowClass = ‘‘)) and ((WindowName = sName) or (Pos(WindowName, sName) > 0) or (WindowName = ‘‘)) then
            begin
              Result := ChdWnd;
              Exit;
            end
            else
            begin
                wnd := ExFindChildWindow(ChdWnd, ParentWnd, WindowClass, WindowName);
                if wnd > 0 then
                begin
                  Result := wnd;
                   Exit;
                end
            end;
        end;
    until ChdWnd = 0;
end;

procedure FindForm.Execute;
var
  FormWnd:THandle;
  FilePathWnd:THandle;
  Edt_Hnd1,Edt_Hnd2,button_hnd1:THandle;
  t:string;
begin

  { Place thread code here }
 while DoIt do
 begin
 FormWnd :=  ExFindChildWindow(0, MainWnd,‘‘, ‘行范围打印‘);
   if formwnd >0  then
   begin
     form1.Caption := ‘Find:行范围打印,‘+‘Handle=‘+inttostr(FormWnd);
      Edt_Hnd1 := FindWindowEx(FormWnd, 0, ‘Edit‘, ‘‘);
      Edt_Hnd2 := GetWindow(Edt_Hnd1,GW_HWNDNEXT); //找到下一个 控件
      button_hnd1 :=GetWindow(Edt_Hnd2,GW_HWNDNEXT);// 找到下一个 控件
      form1.Caption := ‘Find:行范围打印,‘+‘Handle=‘+inttostr(FormWnd)+‘,EDT1= ‘
      +inttostr(Edt_Hnd1)+‘,Edt2=‘+Inttostr(Edt_Hnd2)+‘,btn1=‘+ IntToStr(button_hnd1);
      t:= ‘100‘;
      sendmessage(Edt_Hnd1, WM_SETTEXT, 0, LongInt(t));   //赋值消息 WM_SETTEXT
      sendmessage(Edt_Hnd2, WM_SETTEXT, 0, LongInt(t));

      sendmessage(button_hnd1,WM_LBUTTONDOWN,0,0); //按下鼠标
      sendmessage(button_hnd1,WM_LBUTTONUP,0,0);   //释放鼠标   相当于click

//      sendmessage(button_hnd1,BN_CLICKED,0,0); //点击事件不起作用,不知为什么
     DoIt := False;
     Exit;
   end;

 end;
end;

end.
时间: 2024-10-12 16:28:03

用sendmessage 向别个一窗体发送赋值 点击消息。的相关文章

mdi父窗体如何向子窗体发送数据

Q: mdi父窗体如何向子窗体发送数据,一般都有哪些方式? A: 对于最通常的MDI窗口, WinForm在Form 类的属性中提供了Form.MdiChildren这个属性来返回所有的子窗口. 这样我们只要继承Form类, 然后使用这个类来新建子窗口.public class MyChildForm : Form{} 然后, 通过MdiChildren属性来获取子窗口, 调用子窗口类中定义的公共方法, 或者公共属性来传送数据即可. 第二种方法, 我们还可以在MDI parent form中定义

C++ Custom Control控件 向父窗体发送对应的消息

向父窗体发送消息 ,这里只讲发送 WM_NOTIFY  消息, 其它消息是相同的 在 控件中的某个函数中 设置发送消息的程序 首先定义一个WM_NOTIFY消息的专用结构. NMHDR nm; nm.code = 123456; // 这里是消息的区别代码 nm.hwndFrom = m_hWnd;//这是控件的HWND句柄 nm.idFrom = GetDlgCtrlID();//这是得到的对话框的ID CWnd* pWnd; pWnd = GetParent(); //得到父窗体 窗口 if

java 发送微信客服消息

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 package com.baosight.wechat.service; import net.sf.json.JSONObject;

你知道吗,msg也能发送多行的消息

熟悉命令行的人都知道msg消息发送工具,但它之能发送单行的信息,但用一些小技巧我们就可以让它一次发送多行的消息,譬如在消息中间加入批处理换行符,下面是参考代码: @echo off setlocal enabledelayedexpansion set title=批处理换行符命令脚本 title %title% echo %title% echo. rem 下面的空行不能省略 set p=!^ ! msg %username% /w "这里是 第1行!p!这里是 第2行!p!!p!这里是 第4

Java Socket发送与接收HTTP消息简单实现

在上次Java Socket现实简单的HTTP服务我 们实现了简单的HTTP服务,它可以用来模拟HTTP服务,用它可以截获HTTP请求的原始码流,让我们很清楚的了解到我们向服务发的HTTP消息的结 构,对HTTP请求消息有个清晰的认识.这一节我想写了一个客户的程序,就是用来模拟浏览器,用来向服务器发送HTTP请求,最得要的是可以用它来显示服 务器发回来的HTTP响应消息的一般结构. [java] view plaincopy import java.io.IOException; import 

解决Springboot整合ActiveMQ发送和接收topic消息的问题

环境搭建 1.创建maven项目(jar) 2.pom.xml添加依赖 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.4.0.RELEASE</version> </parent> <dependencies> &l

MFC像窗体坐标位置发送 点击消息

int x11=495;                                        int y22=600;                                        LPARAM lparam111 = MAKELPARAM(x11,y22); //x坐标,y坐标                                        Sleep(100);                                        LRESUL

XMPP系列(四)---发送和接收文字消息,获取历史消息功能

今天开始做到最主要的功能发送和接收消息.获取本地历史数据. 先上到目前为止的效果图:              首先是要在XMPPFramework.h中引入数据存储模块: //聊天记录模块的导入 #import "XMPPMessageArchiving.h" #import "XMPPMessageArchivingCoreDataStorage.h" #import "XMPPMessageArchiving_Contact_CoreDataObje

TFS发布计划发送到钉钉消息群

由于工作中需要用到钉钉,每天都要和钉钉打交道:上下班打卡.出差请假流程.各种工作讨论组,不一而足,工作已然和钉钉绑在了一起,难怪有广告词: 微信是一个生活方式,钉钉是一个工作方式. 我们是钉钉机器人内测版的首批用户,使用自定义机器人功能做了预警消息推送,效果还不错,目前钉钉机器人已经正式发布,支持与Github.Gitlab.Jira等集成: 由于我们研发过程管理重度依赖微软TFS(Team Foundation Server),研发.测试及运维同学(DevOps)希望将发布计划通知到钉钉群,由