delphi,屏幕截图完美解决方案

上传人:bin****86 文档编号:56672404 上传时间:2018-10-14 格式:DOCX 页数:13 大小:21.52KB
返回 下载 相关 举报
delphi,屏幕截图完美解决方案_第1页
第1页 / 共13页
delphi,屏幕截图完美解决方案_第2页
第2页 / 共13页
delphi,屏幕截图完美解决方案_第3页
第3页 / 共13页
delphi,屏幕截图完美解决方案_第4页
第4页 / 共13页
delphi,屏幕截图完美解决方案_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《delphi,屏幕截图完美解决方案》由会员分享,可在线阅读,更多相关《delphi,屏幕截图完美解决方案(13页珍藏版)》请在金锄头文库上搜索。

1、delphi,delphi,屏幕截图完美解决方案屏幕截图完美解决方案篇一:delphi 调用 wcfPovozIm Sean Lu, thank you for your access my space. Starting WCF Client Programming in Delphi 7虽然 Delphi XX 已经发布一年有余,但是在实际的工作中仍然是 Delphi 7 或更早的版本被 大量使用。 WCF 作为构建面向服务应用程序的统一框架,成为多年来 Microsoft .NET 发展过程中最重要 的技术之一。 我是最近才开始关注 WCF 的,作为 Microsoft 分布式应用程序开

2、发的集大成者,我首先想到的 就是能否在以前的旧系统中使用 WCF。 经过几天的摸索,终于成功地使用 Delphi 7 访问 WCF 服务,下面就来说一下开发过程。1.更新 Delphi SOAP Runtime and Importer。 这一点非常的注要,因为原本 Delphi 7 自带的 无法正确生成 WCF 服务代 理。CodeGear 官方已经给出了更新,而且可以免费下载。 下载地址:24535 下载后的更新安装过程,请参照文件包中的 文件。2.为了测试,先在 Visual Studio XX 中创建一个简单 WCF 服务。 A.新建 WCF 服务网站; B.定义服务接口;这里我们简单

3、的做一个加法运算,在 文件中加入下面代 码: / 任务: 在此处添加服务操作 OperationContract int Add(int a, int b);C.实现服务接口;在 文件中加入下面代码: #region IService 成员 public int Add(int a, int b) return a + b; #endregionD.修改服务的 Binding 属性为 basicHttpBinding; 可以直接修改 文件,或通过 Microsoft Service Configuration Editor 进行编 辑,打开 Microsoft Service Configur

4、a(转载于: 小 龙文档 网:delphi,屏幕截图完美解决方案)tion Editor(工具菜单-Microsoft Service Configuration Editor) ,然后打开我们的站点(Microsoft Service Configuration Editor 的 File 菜单-WebHosted Service.-选择我们建立的 WCF 服务网站)在“Configuration” , 窗口中打开 Endpoints (Services - Service - Endpoints) 可以看到有两个 Endpoint, ,其中一个的 Binding 属性为 mexHttpBi

5、nding,保持不变,另外一个 Endporint 的 Binding 属性默认为 wsHttpBinding,将其修改为 basicHttpBinding,保存并退出。至此一个简单的 WCF 服务网站已经建立完成,可以通过 http:/localhost/WCFService/ 查看。3.生成 WCF 访问代理。 因为前面我们已经更新了 Delphi SOAP Runtime and Importer, 现在可以在 C:Program FilesBorlandDelphi7Bin 找以 ,更新后的版本为 。 在“命令提示符”中输入:WSDLImp http:/localhost/WCFSer

6、vice/?wsdl 就可以在当前目录下生成一个 文件。4.创建 Delphi 7 应用程序。 创建一个 Delphi 7 应用程序,并引入上面我们创建的 文件。然后在主窗体中加入 测试代码:procedure (Sender: TObject); var a, b, c:Integer; begin a := StrToInt(); b := StrToInt();c := (a, b); := IntToStr(c); end;到这里,通过 Delphi 7 访问 WCF 服务已经实现了。但是要说的是这仅仅是第一步,在 Delphi 7 中是否可以充分利用 WCF 服务的功能还有待进一步摸

7、索。4 月 5 日更新: 进一步摸索尝试之后,发现 Delphi 自身的 SOAP Runtime 对 Web Service 的新标准、特性 支持并不好。 第三方库对 SOAP 也有支持,但效果并不理想。 Pure SOAP 网络上有一些介绍,但没有找到下载。 IndySOAP 目前版本是 ,官方说明支持 SOAP ,但试用没有成功。 IP*Works 支持 SOAP,但仅限 SOAP 标准。结论:在 Delphi 中仅能使用 WCF 中的基本功能,也就是兼容 ASMX 模式。Tag 标签: Delphi7,WCF Povoz (Sean Lu)关注 - 1 粉丝 - 0 关注博主 0 0(

8、请您对文章做出评价)? 上一篇:工具推荐pynpp - Python Plugins for Notepad+ pynpp ? 下一篇:PyDev Console should support UTF PyDev UTF-8posted on XX-04-04 10:17 Povoz (Sean Lu) 阅读(1891) 评论(11) 编辑 收藏 所属分类: 04 Distributed 评论#1 楼 XX-04-04 11:43 李战 04 支持,看在 DELPHI 的面上。说实在,俺还不知道啥是 WCF,俺要学新东西了。回复引用查看#2 楼 XX-04-04 11:54 Yannic Ya

9、ng 04 呵呵 我还在用 Delphi6.也看在 Delphi 的面子上支持 其实 WCF 使用 basicHttpBinding 就是普通的 Web Service 理论上使用任何可以进行 HTTP 调用的语言都是可以访问的 包括 js#3 楼 XX-04-05 10:35 b4nc未注册用户 05 未注册用户 未注册用户回复引用查看看在 delphi 的面上,支持一把 支持一把。 还在用 delphi 的 xd 们,过的可好 过的可好? 回复 引用#4 楼 XX-05-27 19:27 BruceZhou 27收藏吧, 我还在用 D7, DXX 太恶啦, 卸载 3 个小时都没卸掉, 只好

10、直接删啦, 还是 D7, 复 引用 查看#5 楼 XX-07-01 15:30 我是无才 未注册用户 01 我是无才未注册用户 未注册用户回 Delphi 的 XD 过得不怎么样啊 过得不怎么样啊,维护着一堆 D6 的程序,又招不到新人来接手 又招不到新人来接手,只能慢慢的等 客户都换软件了,何时是个头啊 何时是个头啊 回复 引用#6 楼 XX-08-16 11:19 daconglee未注册用户 16 未注册用户 未注册用户我按你的方法试了,可是不能把值传递有 WCF,数字每次都是 0,字符串每次都是 可是不能把值传递有 字符串每次都是“,我用的是 vsXX 开发的. wcf; . 还有就是

11、我用这个新的 WSDLImp 生成的调用 web service 文件也无法传值.用 delphi7 自代 的可以正常的调用 web service 回复 引用#7 楼 XX-10-07 17:04 绝世无才 07篇二:安装的截图篇三:后台调用外部程序的完美实现(Delphi)后台调用外部程序的完美实现(Delphi) 最近在做的一个软件,其中有一部分功能需要调用其它的软件来完成,而那个软件只有可执行文件,根本没有源代码,幸好,我要做的事不难,只需要在我的程序启动后,将那个软件打开,在需要的时候,对其中的一个文本矿设置一些文字,再点击一个按钮就可以了。 说到这里,相信你也有了对该功能的一些初步

12、设想了,没错,其基本思路就是: 1)调用 CreatePRocess()打开目标程序。 2)用 FindWindow()找到目标程序的窗口 Handle。 3)找到文本框的 Handle,以及按钮的 MessageID,用 SendMessage()方法设置文字,并触发事件。 好了,这样确实很简单吧,但是当我实现它后,却发现这样做的结果则是:当我的程序启动并打开目标程序时,它的 Splash 窗口,以及主窗口都将显示出来,即使当我用 FindWindow()找到主窗口 Handle 后,调用SendMessage(WindowHandle, SW_HIDE)来隐藏该窗口,还是会有一瞬主窗口被显

13、示出来的,这样的效果实在是最求完美的我不忍心看到的。 那么怎么解决这个问题呢,首先我当然在CreateProcess()上面寻找方法,可惜,它只有一个参数可以设置窗口的默认显示方式,但是一旦这个窗口自己重设了显示方式,它就没有任何作用了。 。 。 。继续查找文档,这时我看到 CreateProcess()的一个参数 TStartupInfo中有 lpDesktop 这么一个属性,按照 MSDN 的说法,如果该指针为 NULL,那么新建的 Process 将在当前 Desktop 上启动,而如果对其赋了一个 Desktop 的名称后,Process 将在指定的 Desktop 上启动,恩,看来不

14、错,就从它入手了: 1)首先,建立一个虚拟的 Desktop, const DesktopName = MYDESK; FDesktop:=CreateDesktop(DesktopName,nil,nil,0,GENERIC_ALL,nil); Windows 中可以建立多个 Desktop,可以使用SwitchDesktop()来切换哪个 Desktop 被显示出来,以前有过将 Windows 模拟成 linux 的形式,可以在多个虚拟Desktop 中切换的程序,其实那种程序也是用的 Windows 本身的虚拟 Desktop 功能来实现的,另外 Windows 的启动画面,以及屏保画面

15、也都是用虚拟 Desktop 实现的,好了,关于这方面不多介绍了,感兴趣的话,可以到 MSDN 中查看更详细资料: ?url=/library/en-us/dllproc/base/ 2)在 CreateProcess 的时候,指定程序在我新生成的 Desktop 上运行: var StartInfo:TStartupInfo; FillChar(StartInfo, sizeof(StartInfo), 0); :=sizeof(StartInfo); :=PChar(DesktopName);/指定 Desktop 的名称即可 :=SW_HIDE;:=STARTF_USESHOWWINDO

16、W; :=0; :=0; :=0; if not CreateProcess(PChar(FileName),nil,nil,nil,true,CREATE_NEW_CONSOLE+HIGH_PRIORITY_CLASS,nil,PChar(ExtractFilePath(FilePath),StartInfo,FProceInfo) then begin MessageBox(,Error when init voice (5).,PChar(),MB_ICONWARNING); exit; end; 3)用 FindWindow 去找程序的主窗口 开始我直接写下了这样的代码: for I:=0 to 60 do begin /wait 30 seconds for open the main window WindowHandle:=FindWindow(nil,WindowCaption); if WindowHandle0 then begin break; end; Sleep(5

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 总结/报告

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号