如何用 WinCC V6.2, WinCC V7.0 和 WinCC (TIA Portal)打开一个应用程序并保持其始终在前台显示?

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 中是必须的,以保持应用程序在前台。

如何用 WinCC V6.2, WinCC V7.0 和 WinCC (TIA Portal)打开一个应用程序并保持其始终在前台显示?
图. 01

设置方法:打开“开始 > 控制面板 > 轻松访问中心 > 使鼠标更易于使用 > 通过将鼠标悬停在窗口上来激活窗口”。

选择选项“防止将窗口移动到屏幕边缘时自动排列窗口”。

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc329897.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年11月5日 下午12:03
下一篇 2021年4月12日 上午12:00

相关推荐

发表回复

登录后才能评论