WINCC脚本整理 下载本文

切换按钮

001SetTagBit(\002BOOL A

A=GetTagBit(\if(A)SetTagBit(\ElseSetTagBit(\

003SetTagBit(\I O域处的xx输入输出

在I/O域的输出值事件处的动作 Float F_TAG;

F_TAG =GetTagFloat(\return(F_TAG /100); WINCC运行画面最小化 HWND WinCCHwnd;

WinCCHwnd=FindWindow(\CloseWindow(WinCCHwnd); WINDOWSxx提供的标准对话框 {BOOL bool1; HWND Hwnd; int iRet;

Hwnd = FindWindow(NULL,\运行系统- \

1 / 11

if (!Hwnd) Hwnd = FindWindow(NULL,\运行系统- \if (!Hwnd) printf(\iRet=MessageBox(Hwnd,\确认合闸\确认对话框

\MODAL);

switch (iRet){case IDYES: printf(\SetTagBit(\break; case IDNO:

printf(\SetTagBit(\break; case IDCANCEL:

printf(\break;}}

本画框的功能是点击按钮的时候弹出windows询问对话框其中“确认合闸”为对话内容,对话框的名称为“确认对话框”

用户不同显示不同的按钮

你可以在用户管理器给每个用户不同的权限,使他们对按钮有不同的操作权,这是最简便的。但是如果一定要根据用户不同显示不同的按钮就要用C脚本了

2 / 11

下面这段代码可以加在有两个按钮的画面的对象属性--事件--画面对象--其他--打开画面,三个用户名是user1,user2,user3,按钮名称是按钮1,按钮2,你可以自行修改,这里假设已经进行过用户登录的操作,当打开有这两个按钮的画面时执行下列脚本判断用户并显示相应的按钮

if (strcmp(GetTagChar(\{} else

{SetVisible(lpszPictureName,\按钮1\SetVisible(lpszPictureName,\按纽2\if(strcmp(GetTagChar(\{} else

{SetVisible(lpszPictureName,\按钮1\SetVisible(lpszPictureName,\按钮2\if (strcmp(GetTagChar(\{} else

{SetVisible(lpszPictureName,\按钮1\SetVisible(lpszPictureName,\按钮2\

strcmp是比较字符串的语句,比较文本变量只能用它,帮助里没有的,用它比较读取到的用户名GetTagChar(\和三个用户名\,你把这段语句加到一个按钮的鼠标动作里,看点击按钮会不会两个按钮现实和隐藏。登录登出对话框

3 / 11

#pragma code (\#include \#pragma code() PWRTLogin('c');

PWRTLogin参数必须是CHAR字符。它指定了显示对话框的监视器。如果只使用一个监视器,那么保留默认参数“c”或者指定“1”。

#pragma code (\#include \#pragma code() PWRTLogout();

PWRTLogin参数必须是CHAR字符。它指定了显示对话框的监视器。如果只使用一个监视器,那么保留默认参数“c”或者指定“1”。

WinCC如何实现鼠标OnMouseOVer事件

用WINDOWAPI函数GetCusorPos获取当前鼠标位置,用GetWindowRect函数获取窗口位置,两值相减得鼠标在WINCCframe上的相对位置。用全局脚本(设定为1s定时刷新),然后获取要OnMouseOver事件的物体的位置,并与鼠标位置相比较,如一致则触发自己定义的动作。

#i nclude \

int gscAction( void ){#pragma code(\32.dll\

BOOL GetCusorPos(POINT lpPoint); //获取鼠标的位置(绝对位置-对应屏幕分辨率)BOOL GetWindowRect(HWND hwnd,LPRECT lpRect); //获取窗体位置

#pragma code();

4 / 11

POINT pPos; RECT rRec; HWND hwnd; BOOL bRet,bRet2;

long lLeft,lTop,lWidth,lHeight; long lX,lY; char szStr[100];

hwnd=FindWindow(NULL,\如语言为中文应为\运行系统-\

bRet=GetCursorPos(&pPos); if (bRet==0) goto over;

bRet2=GetWindowRect(hwnd,&rRec); if (bRet2==0) goto over; lX=pPos.x-rRec.left;//鼠标对{置 lY=pPos.y-rRec.top;//鼠标位置

//如果为非全屏模式,需将上述数值中的高height判断减去标题栏的宽度 //printf(\%d,y:

%d\\r\\n\

//printf(\%d,y:

%d\\r\\n\

5 / 11