发消息给非windows窗体程序
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
var
WM_SHUTDOWN_THREADS: Cardinal; //无符号32位
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure WndProc(var Message: TMessage); override;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
TTestThread = class(TThread)
Private
FWinHandle: THandle;
FSignalShutdown: Boolean;
public
constructor Create;
Procedure Execute(); Override;
Destructor Destroy; Override;
procedure WndProc(var Message: TMessage);
Procedure PrntMsg(msg: String);
end;
var
Form1: TForm1;
implementation
var
TestThread: TTestThread;
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
Memo1.Lines.Clear;
//创建消息标志符
WM_SHUTDOWN_THREADS := RegisterWindowMessage('MyMessage');
if WM_SHUTDOWN_THREADS = 0 then
Begin
Raise Exception.Create('获取消息句柄失败!');
end;
end;
{ TTestThread }
constructor TTestThread.Create;
begin
Inherited Create(False);
FSignalShutdown := False;
//建立窗口句柄
FWinHandle := AllocateHwnd(WndProc);
end;
destructor TTestThread.Destroy;
begin
//释放窗口句柄
DeAllocateHwnd(FWinHandle);
inherited;
end;
procedure TTestThread.Execute;
begin
inherited;
while (not FSignalShutdown) do
Begin
sleep(1000);
end;
PrntMsg('');
end;
procedure TTestThread.PrntMsg(msg: String);
begin
Form1.Memo1.Lines.Add('线程' + IntToStr(ThreadID) + '关闭!');
end;
procedure TTestThread.WndProc(var Message: TMessage);
begin
if Message.Msg = WM_SHUTDOWN_THREADS then
FSignalShutdown := True
else
Message.Result := DefWindowProc(FWinHandle, Message.Msg, Message.WParam, Message.LParam);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
//广播消息
SendMessage(wnd_Broadcast, WM_SHUTDOWN_THREADS, 0, 0);
end;
procedure TForm1.WndProc(var Message: TMessage);
begin
inherited;
if Message.Msg = WM_SHUTDOWN_THREADS then
ShowMessage('消息到了!');
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
TestThread := TTestThread.Create;
end;
end.
转载于:https://www.cnblogs.com/abcliu110/archive/2010/09/19/1831093.html
发消息给非windows窗体程序相关推荐
- VS2010 win32项目windows窗体程序 向导生成代码解析
目录: 1.Win32项目的windows窗体程序的向导生成了如下代码 2.手工生成代码如下 3.当消息队列中没有消息需要处理,我们可以利用这段时间处理我们自己的任务 1.Win32项目的window ...
- vs 窗体连接mysql_vs2008 c#开发windows窗体程序,怎么连接数据库?
你的位置: 问答吧 -> .NET -> 问题详情 vs2008 c#开发windows窗体程序,怎么连接数据库? 我的oracle服务器为WebServer数据库为MIS,用户名为MIS ...
- C#面向对象程序设计课程实验二: 实验名称:Windows 窗体程序
C#面向对象程序设计课程实验二: 实验名称:Windows 窗体程序 实验内容:Windows 窗体程序 一.实验目的及要求 二.实验环境 三.实验内容与步骤 一.设计简单的计算器 3.1.实验内容 ...
- 设计一个Windows窗体程序,设置程序,其运行结果如下图所示。垂直滚动条控制字体大小。
设计一个Windows窗体程序,设置程序,其运行结果如下图所示.一个标签控件的Text属性为"缩放"两个字,它的字体大小取决于垂直滚动条的值(Maximum=72,Minimum= ...
- C++ Windows 窗体程序入门 - 1.你的第亿个窗体程序
〇.前言-------------------- + 学Windows窗体已经有一段时日了,奈何没有什么浅显易懂(&便宜!!)的书籍 , 就想来 , 算是记笔记吧 , 顺便还能给你们总结一些经 ...
- 安装全局消息钩子实现dll窗体程序注入
说明{ 通过设置全局消息钩子来实现dll注入,然后窗体有相关消息请求的时候就会自动加载注入dll, 然后在入口处做处理就可以了.注入方式简单很多,比代码注入和lsp等注入都简单,就不解释了. ...
- 基于DirectUI搭建Windows窗体程序
使用DirectUI需要directuiCom.dll,包含IDirectUI.h和DirectuiDef.h.在你的应用程序中初始化CLSID_DirectUI,并获取IDirectUI(IID_I ...
- [C#][Windows窗体程序]实现自动出题并判分
文章目录 一.pandas是什么? 二.效果演示 三.代码 Form1.cs 四.补充 一.pandas是什么? 编写一个Windows程序,实现自动出题并判分的功能. 功能要求: 能使用Random ...
- 使用增强的Windows窗体为你的.Net程序打造丰富的用户界面
本文内容基于微软 Visual Studio 2005 发布前的预览版,之前代号为"Whidbey".其中所有信息在正式版中都可能会有所改变. 本文所讨论内容: 关于Windows ...
最新文章
- 为uThreadPool增加线程池等待功能
- 「高并发秒杀」linux安装软件有哪几种方式
- python简单超级马里奥游戏下载_python 实现超级玛丽游戏
- 计算机学院志愿公益活动,计算机学院开展学雷锋主题公益活动
- 河南智游科技 超市管理系统
- @Component和@Configuration作为配置类的差别
- 2013 年亚洲赛杭州赛区卡题总结
- 吴恩达机器学习(六)神经网络(前向传播)
- linux ntp端口 修改,Linux时间配置(修改时间 修改日期 ntpd ntpdate NTP socket exiting)...
- shader 反射 水面_大规模水面渲染
- 阿里云云计算 46 阿里云DDoS防护
- html个人中心源代码,HTML用户注册页面设置源码
- 私有云计算保密技术谁家靠谱?云宏CNware®虚拟化平台安全体系设计
- MySQL学习笔记第8课(共10课)
- iOS-OC-集成PayPal支付方式
- oracle 10102,linux - linux中的Oracle数据库安装程序[INS-10102]安装程序初始化失败 - SO中文参考 - www.soinside.com...
- apktool使用注意事项
- #3189. 八纵八横(c)
- kafka linux 脚本测试,kafka shell命令操作
- 3.css3深入,高级选择器浮动布局,html5/css3基础开始(推荐收藏)
热门文章
- [react] react中的key有什么作用?
- [react] super()和super(props)有什么区别?
- [html] html5中的meta标签renderer有什么作用?
- [html] web workers有用过吗?能帮我们解决哪些问题?
- [vue] vue的:class和:style有几种表示方式?
- [vue] 删除数组用delete和Vue.delete有什么区别?
- [css] 请使用CSS画一个带锯齿形边框圆圈
- [css] 为什么伪类的content不能被选中?
- 前端学习(654):优化插件
- html:(7):了解hx标签和加强语气