n
描述:
以 Adobe Reader 8.0 作为示例,我们将演示如何打开一个程序窗口并始终在前台显示。
n
No. |
步骤 |
1 |
在按钮事件的“鼠标动作”中创建以下C 语言函数,例如: n
#include "apdefap.h" void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) { HWND Handle = NULL; Handle = FindWindow("AcrobatSDIWindow",NULL);
if (Handle) { ShowWindow(Handle, SW_SHOWNORMAL); } else { ProgramExecute("C:/Program Files/Adobe/Reader 8.0/Reader/AcroRD32.exe"); Handle = FindWindow(NULL, "Adobe Reader"); } SetWindowPos (Handle, HWND_TOPMOST, 400, 200, 520, 420, 0); }n
注意: 为了传递参数,Windows函数"HWND FindWindow(LPCSTR lpClassName, LPCSTR lpWindowName);" 需要窗口的类名或者窗口自己的名字。可以通过打开相关程序轻松获得窗口的名字(没有文档)。窗口名会显示在标题栏。然而使用窗口名字时,需注意当打开文档时窗口名字也许会发生改变。这也是为什么最好使用"lpClassName"参数的原因。 |
2 | 在按钮事件的“鼠标动作”中的以下 C 语言函数,从窗口名称中确定了窗口的类名: 为了显示"printf()"函数的输出,可以在 WinCC 画面中加载 "GSC - Diagnostics" 应用程序窗口或者启动 "apdiag.exe" 程序。 n
#include "apdefap.h" void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) { char winclass[256]; HWND Handle = NULL; Handle = FindWindow(NULL, "Adobe Reader");
if (!Handle) { ProgramExecute("C:/Program Files/Adobe/Reader 8.0/Reader/AcroRD32.exe"); Handle = FindWindow(NULL, "Adobe Reader"); } GetClassName(Handle, winclass, sizeof (winclass)-1); printf ("Window Class Name: %s rn", winclass); } |
注意
下面的设置在 Windows7 中是必须的,以保持应用程序在前台。
图. 01
设置方法:打开“开始 > 控制面板 > 轻松访问中心 > 使鼠标更易于使用 > 通过将鼠标悬停在窗口上来激活窗口”。
选择选项“防止将窗口移动到屏幕边缘时自动排列窗口”。
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc329897.html