惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

H
Help Net Security
G
Google Developers Blog
aimingoo的专栏
aimingoo的专栏
博客园 - 聂微东
酷 壳 – CoolShell
酷 壳 – CoolShell
小众软件
小众软件
Stack Overflow Blog
Stack Overflow Blog
美团技术团队
博客园_首页
T
Tailwind CSS Blog
博客园 - 三生石上(FineUI控件)
B
Blog
D
DataBreaches.Net
腾讯CDC
C
Check Point Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
U
Unit 42
月光博客
月光博客
V
V2EX
Vercel News
Vercel News
T
The Blog of Author Tim Ferriss
The Cloudflare Blog
博客园 - 叶小钗
Y
Y Combinator Blog

博客园 - 周黔

delphi firemonkey 12.3 动态绑定TFDMemTable到TStringGrid delphian firemonkey. android:exported 错误 RAD Studio 12 Delphi 12 实现手机无线wifi调试 (巧用Android Studio 2024 连WIFI) delphi 11 HMACSha512 Android Studio 2024 不需要三方插件,直接wifi 开发调试,真方便 CEF4Delphi(DELPHI Google Chrome 浏览器封装) 折腾 (2)--打开一个网页 CEF4Delphi(DELPHI Google Chrome 浏览器封装) 折腾 (1)--安装 Delphi WINAPI 任意拖动移动控件 DELPHI 调用标准C接口DLL char *value Apache NetBeans IDE 12.3 双击无反应怪事 [转]Regions and Clipping in GDI+ delphi 10.4 JSON 建立数组示例 delphi 10.3实现TNetHTTPClient 异步 POST 另类实现返回附加标记及Unicode 编码与解码 \u - 周黔 小程序开发笔记1 用户中心 - 博客园 delphi 跨版本DLL调用嵌入窗体实现 DELPHI GDI + TGPFont UnitPixel 问题解决 delphi DLL image 动态绘图 句柄处理 delphi 每英寸相素点取值偏差
Delphi DLL 消息循环 Synchronize SendMessage PostMessage
周黔 · 2020-03-12 · via 博客园 - 周黔
procedure DllMain(Reason: Integer); register;
begin
   case reason of

    DLL_PROCESS_ATTACH:   //整个DLL的初始化代码
    begin
     // library enter code
     SaveApplication := Application;//调试发现装载时没执行此分支. 所以在初始化代码处显示调用.
     DLLScreen := Screen;

Application.Initialize; if Application.Handle = 0 then begin Application.CreateHandle; end; Application.Run; // dm:=TDM.Create(Application); end; DLL_PROCESS_DETACH: //整个DLL的善後程序 begin b_Terminated:=True; Application := SaveApplication; Screen:=DLLScreen; // library exit code // Application := DLLApp; // Screen := DLLScr; CoUninitialize; //dm:=TDM.Create(Application); end; DLL_THREAD_ATTACH: //当主叫端开始一个Thread时 ; DLL_THREAD_DETACH: //当主叫端终止一个Thread时 ; end; end; begin CoInitialize(nil); DllMain(DLL_PROCESS_ATTACH); DLLPROC := @DllMain; //dll入口函数.调试发现是在释放dll时执行DLL_PROCESS_DETACH分支. end.

在 DLL 需要自己消息循环时,Application.Handle 不可为0,如果为0,如果为0,则  Synchronize  同步  SendMessage PostMessage 等均有可能不可用
而通过
       Application.Initialize;
      if Application.Handle = 0 then
        begin
            Application.CreateHandle;
        end;
      Application.Run;
代码,则可实现delphi DLL中自己的消息循环