首页 > 代码库 > 用sendmessage 向别个一窗体发送赋值 点击消息。
用sendmessage 向别个一窗体发送赋值 点击消息。
选择用线程函数解决。
调用主窗体代码:
procedure TForm1.Button17Click(Sender: TObject);var Thd:FindForm;beginThd := FindForm.Create(False);thd.DoIt := True;Thd.MainWnd := Self.Handle;emrpd.Print(2) ; //弹出窗体Thd.DoIt := False;Thd.Free;end;
线程类FindForm如下:
unit Unit2;interfaceuses Classes,Windows,SysUtils,Messages;type FindForm = class(TThread) private { Private declarations } protected procedure Execute; override; public MainWnd:THandle; DoIt:Boolean; end;implementationuses 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.
用sendmessage 向别个一窗体发送赋值 点击消息。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。