在Delphi中如何控制其它应用程序窗口
来源:互联网 发布:单片机智能脉搏测试仪 编辑:程序博客网 时间:2024/06/05 02:29
2001年02月14日 08:18:00
在Delphi中如何控制其它应用程序窗口 在Delphi中如何控制其它应用程序窗口 广东省农业管理干部学院 陈建兵 在编写Delphi的应用程序中,常常涉及对其它Windows应用程序的操作。例如,在数据库的管理系统中,财务人员需要使用计算器,即可调用Windows内含的计算器功能,若每次使用,均通过“开始/程序/附件/计算器”来打开计算器,显然是非常繁琐的,当然可以考虑在桌面上建立一“计算器”的快捷方式,且定义一热键,需要使用计算器时,就按下这个热键来打开“计算器”。但由于“计算器”是一个“非模式”窗口程序,即每运行一次计算器,就会打开一个“计算器”窗口,这样的结果是桌面上出现了几十个“计算器”,不仅大量增加了系统内存的开销,而且也不方便用户的操作。在Delphi中可较轻易地控制,效果非常完美。下面就两个主要问题提出实现方法。 1.如何控制设计? 新建一表单,在表单中放入两个按钮,其Caption分别为“打开”(即启动“计算器”)和“关闭”(退出结束),且为它们分别添加Click事件处理。详见表单Form1及单元文件Unit1。 其中,最主要的几条语句有: fwnd:=FindWindow('SciCalc','计算器'); 函数原型为(详见Delphi的帮助): HWND FindWindow( LPCTSTR lpClassName, // pointer to class name LPCTSTR lpWindowName // pointer to window name ); 此处,'SciCalc' 为计算器的类名,'计算器'为计算器的窗口标题} setWindowPos(fwnd,HWND_NOTOPMOST,0,0,0,0,SWP_SHOWWINDOW or SWP_NOSIZE or SWP_NOMOVE); 函数原型为: BOOL SetWindowPos( HWND hWnd, // handle of window HWND hWndInsertAfter, // placement-order handle int X, // horizontal position int Y, // vertical position int cx, // width int cy, // height UINT uFlags // window-positioning flags ); ShowWindow(fwnd,SW_RESTORE); //显示已打开的「计算器」 函数原型为: BOOL ShowWindow( HWND hWnd, // handle of window int nCmdShow // show state of window ); Ret:=WinExec('c:/windows/calc.exe',SW_SHOWNORMAL); //启动计算器 函数原型为: UINT WinExec( LPCSTR lpCmdLine, // address of command line UINT uCmdShow // window style for new application ); 运行“计算器”程序并检测返回值(从而利用返回值来判断可能发生的错误) 2.如何明确应用程序的“类名”? 要控制应用程序,首先必须明确应用程序的“类名”。“类”的概念,Delphi的程序已经非常清楚,如:新建一表单Form1,该表单的“类名”为TForm1。那么其它Windows程序的“类名”如何确定呢? 值得一喜的是,Delphi提供了一实用工具Winsight,它正如一面照妖镜,不论何方妖怪,均会显露出它们的“类名”。 使用Winsight的方法如下: ⑴运行Winsight(程序名为ws32.exe,与主文件delphi32.exe同一目录),见图①; ⑵从Winsight的菜单中选择“间谍”中的“跟随焦点”,见图②; ⑶运行“计算器”程序; ⑷在Winsight中显示出了目标,如图③所示。 软件环境:中文Win98/中文Delphi5.0。 | ||
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=3342
- 在Delphi中如何控制其它应用程序窗口
- 在Delphi的窗口单元中,如何调用其它窗口的单元。
- 在Android应用程序中启动其它应用程序
- 如何在Delphi应用程序中调用CHM文档
- 如何在Delphi应用程序中调用CHM文档
- 在VB程序中嵌套其它应用程序
- 在delphi中如何判断一个文件正在被其它的程序或进程所调用?
- 如何在Delphi中编写控制面板程序
- 如何获取其它进程中窗口的窗口过程
- 如何在VB中控制webbrowser的弹出窗口
- 在Delphi中控制扫描仪
- 在Delphi中控制扫描仪
- 在Delphi中控制扫描仪
- jquery 控制frameset frame节点内容(在子窗口中把该窗口中的焦点处的text内容填入其它子窗口的input内
- 3.17如何使主应用程序窗口总是位于其它窗口的上面?
- 如何在程序中将其它窗口调至前台。
- 如何在Java中执行其它程序
- 如何在Java中执行其它程序
- 如何用VC++和Visual Foxpro进行ActiveX数据通讯
- 制作伸展自如、收缩随意的对话框
- 在Delphi与C++之间实现函数与对象共享
- 形象化的多媒体软件主调用程序设计
- Win32环境下动态链接库(DLL)编程原理
- 在Delphi中如何控制其它应用程序窗口
- 用Java实现多线程服务器程序
- PERL连接ACCESS数据库
- 从 RDO到 ADO 的移植
- 开发通信软件的技术与技巧
- 快速装载MYSQL数据库 (加入时间:2001-2-15)
- 隐藏的密文
- 一个俄罗斯方块的源代码
- Visual C++6.0一个小BUG的解决方法