delphi15326660是什么插件(delphi查找窗口句柄和类)

2026-08-25 02:45:02 :0

delphi15326660是什么插件(delphi查找窗口句柄和类)

大家好,今天小编来为大家解答以下的问题,关于delphi15326660是什么插件,delphi查找窗口句柄和类这个很多人还不知道,现在让我们一起来看看吧!

本文目录

delphi查找窗口句柄和类

我是用VC的,delphi不是很懂,不过API还是一样的,说说我的意见。
Findwindow()的第一个参数是表示类名的字符串,第二个参数是表示窗口标题的字符串,你的第一个参数设置错了,QQ主窗口的类是对话框,应该用"#32770"表示,你可以用Spy 查看的。第二个参数也不对,如果设置成nil,那么任意标题的"#32770"类的窗口都会匹配,而它返回的只是找到的第一个窗口的句柄,不一定是QQ。QQ主窗口的标题是空字符串。
但实际上,你即使用FindWindow("#32770","")找到了相应的句柄,它也不一定是QQ的。因为参数里没有任何QQ特有的信息,而系统中存在大量"#32770"的对话框,它们的标题也各种各样,很可能就有空字符串,而它返回的是找到的第一个窗口的句柄,不能保证一定是QQ。所以这个办法很差。较为可行的方法是枚举系统当前的所有进程,从中查找模块名为"QQ"的进程,从进程中查找属于该进程的窗口,当然也不排除存在其他的名为QQ的进程,但这个可能性应该比较小。
我曾经做过针对QQ的一个插件,这是做的过程中的一些体会。

Delphi插件创建、调试与使用应用程序扩展

  有没有使用过Adobe Photoshop如果用过 你就会对插件的概念比较熟悉 对外行人来说 插件仅仅是从外部提供给应用程序的代码块而已(举个例子来说 在一个DLL中) 一个插件和一个普通DLL之间的差异在于插件具有扩展父应用程序功能的能力 例如 Photoshop本身并不具备进行大量的图像处理功能 插件的加入使其获得了产生诸如模糊 斑点 以及其他所有风格的奇怪效果 而其中任何一项功能都不是父应用程序自身所具有的

  对于图像处理程序来说这很不错 可是为什么要花偌大的力气去完成支持插件的商业应用程序呢?假设 我们举个例子 你的应用程序要产生一些报表 你的客户肯定会一直要求更新或者增加新的报表 你可以使用一个诸如Report Smith的外部报表生成器 这是个不怎么样的解决方案 需要发布附加的文件 要对用户进行额外的培训 等等 你也可以使用QuickReport 不过这会使你身处版本控制的噩梦之中——如果每改变一次字体你就要Rebuild你的应用程序的话

  然而 只要你把报表做到插件中 你就可以使用它 需要一个新的报表吗?没问题 只要安装一个DLL 下次应用程序启动时就会看见它了 另外一个例子是处理来自外部设备(比如条形码扫描器)的数据的应用程序 为了给用户更多的选择 你不得不支持半打的各种设备 通过将每种设备接口处理例程写成插件 不用对父应用程序作任何变动就可以获得最大程度的可伸缩性

  入门

  在开始写代码之前最重要的事情就是搞清楚你的应用程序到底需要扩展哪些功能 这是因为插件是通过一个特定的接口与父应用程序交互的 而这个接口将根据你的需要来定义 在本文中 我们将建立 个插件 以便展示插件与父应用程序相交互的几种方式

  我们将把插件制作成DLL 不过 在做这项工作之前 我们得先制作一个外壳程序来载入和测试它们 第一个插件没有完成什么大不了的功能 实际上 它所做的只是返回一个描述自己的字符串 不过 它证明了很重要的一点——不管有没有插件应用程序都可以正常运行 如果没有插件 它就不会出现在已安装的插件列表中 但是应用程序仍然可以正常的行使功能

  我们的插件外壳程序与普通应用程序之间的唯一不同就在于工程源文件中出现在uses子句中的Sharemem单元和加载插件文件的代码 任何在自身与子DLL之间传递字符串参数的应用? 都需要Sharemem单元 它是DelphiMM dll(Delphi提供该文件)的接口 要测试这个外壳 需要将DelphiMM dll文件从Delphi\Bin目录复制到path环境变量所包含的路径或者应用程序所在目录中 发布最终版本时也需要同时分发梦募插件通过LoadPlugins过程载入到这个测试外壳中 这个过程在主窗口的FormCreate事件中调用 该过程使用FindFirst和FindNext函数在应用程序所在目录中查找插件文件 找到一个文件以后 就使用LoadPlugins过程将其载入

  { 在应用程序目录下查找插件文件 }

  procedure TfrmMain LoadPlugins;   var   sr: TSearchRec;   path: string;  Found: Integer;   begin  path := ExtractFilePath(Application Exename);   try  Found := FindFirst(path + cPLUGIN_MASK sr);   while Found = do begin  LoadPlugin(sr);   Found := FindNext(sr);   end;  finally  FindClose(sr);   end;  end;   { 加载指定的插件 DLL }

  procedure TfrmMain LoadPlugin(sr: TSearchRec);   var   Description: string;  LibHandle: Integer;   DescribeProc: TPluginDescribe;   begin  LibHandle := LoadLibrary(Pchar(sr Name));   if LibHandle $#@ ;$#@ ; then  begin  DescribeProc := GetProcAddress(LibHandle cPLUGIN_DESCRIBE);   if Assigned(DescribeProc) then  begin  DescribeProc(Description);   memPlugins Lines Add(Description);   end  else  begin  MessageDlg( File + sr Name + is not a valid plug in   mtInformation );   end;   LoadPlugin方法展示了插件机制的核心 首先 插件被写成DLL 其次 通过LoadLibrary API它被动态的加载 一旦DLL被加载 我们就需要一个访问它所包含的过程和函数的途径 API调用GetProcAddress提供这种机制 它返回一个指向所需例程的指针 在我们这个简单的演示中 插件仅仅包含一个名为DescribePlugin的过程 由常数cPLUGIN_DESCRIBE指定(过程名的大小写非常重要 传递到GetProcAddress的名称必须与包含在DLL中的例程名称完全一致) 如果在DLL中没有找到请求的例程 GetProcAddree将返回nil 这样就允许使用Assigned函数测定返回值

  为了以一种易用的方式存储指向一个函数的指针 有必要为用到的变量创建一个特定的类型 注意 GetProcAddress的返回值被存储在一个变量中 DescribeProc 属于TpluginDescribe类型 下面是它的声明

  type   TPluginDescribe = procedure(var Desc: string); stdcall;   由于过程存在于DLL内部 它通过标准调用转换编译所有导出例程 因此需要使用stdcall指示字 这个过程使用一个var参数 当过程返回的时候它包含插件的描述

  要调用刚刚获得的过程 只需要使用保存地址的变量作为过程名 后面跟上任何参数 就我们的例子而言 声明

  DescribeProc(Description)   将会调用在插件中获得的描述过程 并且用描述插件功能的字符串填充Description变量

  构造插件

  我们已经创建好了父应用程序 现在该轮到创建我们希望加载的插件了 插件文件是一个标准的Delphi DLL 所以我们从Delphi IDE中创建一个新DLL工程 保存它 由于导出的插件函数将用到字符串参数 所以要在工程的uses子句中把Sharemen单元放在最前面

  uses  Sharemem SysUtils Classes   main in main pas ;

  {$E plg }

  exports  DescribePlugin;

  begin

  end    虽然插件是一个DLL文件 但是没有必要一定要给它一个 DLL的扩展名 实际上 一个原因就足以让我们有理由改变扩展名 当父应用程序寻找要加载的文件时 新的扩展名可以作为特定的文件掩模 通过使用别的扩展名(我们的例子使用了* plg) 你可以在一定程度上确信应用程序只会载入相应的文件 编译指示字$X可以实现这个改变 也可以通过Project Options对话框的Application页来设置扩展名

  第一个例子插件的代码是很简单的 注意 DescribePlugin原型与外壳应用程序中的TpluginDescribe类型相一致 使用附加的export保留字指定该过程将被导出 被导出的过程名称也将会出现在主工程源代码的exports段中

  unit main;

  interface

  procedure DescribePlugin(var Desc: string);  export; stdcall;

  implementation

  procedure DescribePlugin(var Desc: string);  begin  Desc := Test plugin v ;   end;

  end    在测试这个插件之前 要先把它复制到主应用程序的路径下 最简单的办法就是在主目录的子目录下创建插件 然后把输出路径设置为主路径(Project Options对话框的Directories/Conditionals也可以作这个设置)

  调试

lishixinzhi/Article/program/Delphi/201311/8484

Delphi可以做一个镶嵌浏览器吗

可以的,用WebBrowser控件,窗体oncreate事件中加入WebBrowser1.Navigate(’网站主页网址’);
添加三个按钮,刷新,事件也是WebBrowser1.Navigate(’网站主页网址’);
前进和后退则需要记录对应的网址,
然后后退则是WebBrowser1.Navigate(’上一次网址’);
前进则是WebBrowser1.Navigate(’当前网址’);就行了

delphi中messagebox的详细用法

if MessageBox(Handle, ’要删除选中的信息吗?’, ’确认’, MB_ICONQUESTION + MB_YESNO + MB_DEFBUTTON2) = IDYES then
begin
//用户点击“是”执行这里的代码
end;
第一个参数是对话框父窗口的句柄
第二个参数是对话框显示的文本内容
第三个参数是对话框的标题内容
第四个参数可以设置对话框的样式,比如提示类型是出错啊 还是信息啊 或者询问啊 显示哪些按钮啊 默认选中哪个按钮啊 这些都由第四个参数决定。
细想的内容 Delphi 的帮助文档里面可以查到。

Delphi插件式框架发布与.Net框架发布的一点联想 顺便请问达人

Delphi插件式框架(BPL)发布与.Net框架发布的一点联想 顺便请教达人
***隐藏网址***
1.分发。针对客户端不同职能,不需要打N个包,只需要指定其配置文件,一个安装包即可以显示相应岗位的主界面。
2.协作。分担各模块的编程人员不再需要顶着主程序的帽子来做调试,带着分发的公用模块即可建立各个模块的application,无须考虑繁琐的登录等等问题,提高了开发效率。
3.美观。我记得当年研究DLL框架集成程序的时候,三方组件的RTTI总是出这样那样的小插曲,而且DLL框架貌似省事省心,但继承、界面内部的微控制全部与独立的EXE程序不同,最让俺接受不了的是界面的美观和资源的复用。现在这些问题Pass掉了。框架采用的Ribbon风格,主程序仅带了一种皮肤,开发时主程序自动合并各模块窗体的菜单工具条,完全避免了主窗体设计工具,模块窗体是Dock还是MDI的问题。

关于delphi15326660是什么插件到此分享完毕,希望能帮助到您。

delphi15326660是什么插件(delphi查找窗口句柄和类)

本文编辑:admin

更多文章:


native在java中的用法(native的Java关键字)

native在java中的用法(native的Java关键字)

本篇文章给大家谈谈native在java中的用法,以及native的Java关键字对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。本文目录nativ

2026年8月22日 20:30

正则匹配数字字符串开头(js 正则表达式获取字符串开头结尾的数字)

正则匹配数字字符串开头(js 正则表达式获取字符串开头结尾的数字)

大家好,关于正则匹配数字字符串开头很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于js 正则表达式获取字符串开头结尾的数字的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位

2025年7月24日 05:00

businessman怎么念(businessman怎么读什么意思)

businessman怎么念(businessman怎么读什么意思)

大家好,businessman怎么念相信很多的网友都不是很明白,包括businessman怎么读什么意思也是一样,不过没有关系,接下来就来为大家分享关于businessman怎么念和businessman怎么读什么意思的一些知识点,大家可以

2026年8月29日 10:15

js在哪下载(我的世界js怎么下载)

js在哪下载(我的世界js怎么下载)

这篇文章给大家聊聊关于js在哪下载,以及我的世界js怎么下载对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录我的世界js怎么下载我的世界js怎么下载怎么把一个网页的js代码下载 下来啊jquery-1.2.6.pack.js是

2025年9月18日 22:30

什么叫做超链接?具备单击后直接返回网页顶部功能的超链接是

什么叫做超链接?具备单击后直接返回网页顶部功能的超链接是

本篇文章给大家谈谈超链接,以及什么叫做超链接对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。本文目录什么叫做超链接具备单击后直接返回网页顶部功能的超链接是什么是超链接,超链接的意思是什么超链接什么意思什么叫做超链接超链接是指从一个网页

2026年7月8日 17:15

candidate的由来(什么是bug啊还有什么是beta)

candidate的由来(什么是bug啊还有什么是beta)

大家好,如果您还对candidate的由来不太了解,没有关系,今天就由本站为大家分享candidate的由来的知识,包括什么是bug啊还有什么是beta的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录什么是bug啊

2026年5月29日 05:45

swift是什么电脑(笔记本电脑质量十大排名)

swift是什么电脑(笔记本电脑质量十大排名)

各位老铁们好,相信很多人对swift是什么电脑都不是特别的了解,因此呢,今天就来为大家分享下关于swift是什么电脑以及笔记本电脑质量十大排名的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目录笔记本电脑质量十大排名

2026年3月21日 12:15

不会java可以学javaweb吗(web 开发者需要会java吗)

不会java可以学javaweb吗(web 开发者需要会java吗)

“不会java可以学javaweb吗”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看不会java可以学javaweb吗(web 开发者需要会java吗)!本文目录web 开发者需要会java吗请问学习Java web前,必须

2025年11月25日 10:00

mutex取值范围(“原语“定义)

mutex取值范围(“原语“定义)

今天给各位分享“原语“定义的知识,其中也会对“原语“定义进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录“原语“定义有N个进程共享同一临界资源,如用信号量机制,实现对一临界资源的互斥访问,则信号量的变化范围是互

2025年7月5日 10:00

competition怎么说(competition翻译一下)

competition怎么说(competition翻译一下)

这篇文章给大家聊聊关于competition怎么说,以及competition翻译一下对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录competition翻译一下“竞赛”用英语怎么说competition翻译一下compet

2026年3月31日 22:15

winxp如何用汇编(如果在windows下没有任何现成编译器,怎样用机器语言(或汇编语言) 编写程序)

winxp如何用汇编(如果在windows下没有任何现成编译器,怎样用机器语言(或汇编语言) 编写程序)

大家好,今天小编来为大家解答以下的问题,关于winxp如何用汇编,如果在windows下没有任何现成编译器,怎样用机器语言(或汇编语言) 编写程序这个很多人还不知道,现在让我们一起来看看吧!本文目录如果在windows下没有任何现成编译器,

2025年9月14日 09:00

spring认证含金量(中级软件工程师资格证有用吗)

spring认证含金量(中级软件工程师资格证有用吗)

大家好,今天小编来为大家解答以下的问题,关于spring认证含金量,中级软件工程师资格证有用吗这个很多人还不知道,现在让我们一起来看看吧!本文目录中级软件工程师资格证有用吗达内推荐的spring证书有用么华为spring认证有用吗sprin

2025年7月8日 03:15

字体识别免费版(迅捷ocr文字识别软件免费版怎么样)

字体识别免费版(迅捷ocr文字识别软件免费版怎么样)

大家好,字体识别免费版相信很多的网友都不是很明白,包括迅捷ocr文字识别软件免费版怎么样也是一样,不过没有关系,接下来就来为大家分享关于字体识别免费版和迅捷ocr文字识别软件免费版怎么样的一些知识点,大家可以关注收藏,免得下次来找不到哦,下

2026年3月11日 07:00

java编程规范单行(JAVA中单行注释和多行注释是什么意思我没弄明白,能解释一下么举个例子也好,谢谢~!)

java编程规范单行(JAVA中单行注释和多行注释是什么意思我没弄明白,能解释一下么举个例子也好,谢谢~!)

各位老铁们好,相信很多人对java编程规范单行都不是特别的了解,因此呢,今天就来为大家分享下关于java编程规范单行以及JAVA中单行注释和多行注释是什么意思我没弄明白,能解释一下么举个例子也好,谢谢~!的问题知识,还望可以帮助大家,解决大

2026年3月11日 01:15

eclipse连接sql server(eclipse连接sql server2008r2jar包导进去了还是显示驱动有问题怎么办)

eclipse连接sql server(eclipse连接sql server2008r2jar包导进去了还是显示驱动有问题怎么办)

这篇文章给大家聊聊关于eclipse连接sql server,以及eclipse连接sql server2008r2jar包导进去了还是显示驱动有问题怎么办对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录eclipse连接sq

2026年1月22日 20:30

android源码调试(如何调试Android Framework)

android源码调试(如何调试Android Framework)

其实android源码调试的问题并不复杂,但是又很多的朋友都不太了解如何调试Android Framework,因此呢,今天小编就来为大家分享android源码调试的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录

2025年11月18日 07:45

cancel反义词(打消的反义词是什么)

cancel反义词(打消的反义词是什么)

大家好,关于cancel反义词很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于打消的反义词是什么的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!本文目录打消的反

2025年10月22日 13:00

center形容词(center是中心的意思吗)

center形容词(center是中心的意思吗)

大家好,center形容词相信很多的网友都不是很明白,包括center是中心的意思吗也是一样,不过没有关系,接下来就来为大家分享关于center形容词和center是中心的意思吗的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开

2026年9月25日 09:45

java经典100例算法题(利用Java编写应用程序求100以内的全部素数)

java经典100例算法题(利用Java编写应用程序求100以内的全部素数)

大家好,关于java经典100例算法题很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于利用Java编写应用程序求100以内的全部素数的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,

2025年10月23日 20:00

全国疫情的最新数据(最新中国疫情死亡人数一共有多少)

全国疫情的最新数据(最新中国疫情死亡人数一共有多少)

“全国疫情的最新数据”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看全国疫情的最新数据(最新中国疫情死亡人数一共有多少)!本文目录最新中国疫情死亡人数一共有多少最新疫情:全国新冠累计确诊371918例,累计死亡5235例最新

2026年8月26日 01:00

近期文章

ilitate(imitate意思是)
2026-09-25 23:30:01
本站热文

electronics软件(labcenter electronics是什么软件)
2025-05-22 23:45:02 浏览:134
博客是微博吗(博客是微博吗)
2025-05-22 22:45:01 浏览:111
diversity and distribution(悬赏英语短文)
2025-05-23 16:15:02 浏览:107
ios软件开发前景(iOS就业前景怎么样)
2025-05-22 23:00:01 浏览:102
next month(有The next month这个单词吗,和 next month有什么区别)
2025-05-23 02:30:01 浏览:102
patron(patron是什么意思)
2025-05-23 10:30:02 浏览:95
标签列表

热门搜索