WINCC腳本整理_第1頁
WINCC腳本整理_第2頁
WINCC腳本整理_第3頁
WINCC腳本整理_第4頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、切換按鈕001SetTagBit("TE_BOOL",!GetTagBit("TE_BOOL");002BOOL AA=GetTagBit("TE_BOOL");if(A)SetTagBit("TE_BOOL",0);ElseSetTagBit("TE_BOOL",1);003SetTagBit("TE_BOOL ",1-GetTagBit("TE_BOOL ");I O 域處的 xx 輸入輸出在 I/O 域的輸出值事件處的動作Float F_TAG;F_

2、TAG =GetTagFloat("TE_FLOAT");return(F_TAG /100);WINCC運(yùn)行畫面最小化HWND WinCCHwnd;WinCCHwnd=FindWindow("PDLRTisAliveAndWaitsForYou",NULL);CloseWindow(WinCCHwnd);WINDOWSxx提供的標(biāo)準(zhǔn)對話框BOOL bool1;HWND Hwnd;int iRet;Hwnd = FindWindow(NULL,"WinCC運(yùn)-行系統(tǒng) - ");1/11if (!Hwnd) Hwnd = FindWin

3、dow(NULL,"WinCC運(yùn)-行系統(tǒng) - ");if (!Hwnd) printf("rnGetWinCC Handle Failed!");iRet=MessageBox(Hwnd,"確認(rèn)合閘 "," 確認(rèn)對話框",MB_YESNOCANCEL|MB_ICONEXCLAMATION|MB_SETFOREGROUND|MB_SYSTEM MODAL);switch (iRet)case IDYES:printf("user do YESrn");SetTagBit("TE_QUES

4、T",1);break;case IDNO:printf("user do NOrn");SetTagBit("TE_QUEST",0);break;case IDCANCEL:printf("user do CANCELrn");break;本畫框的功能是點(diǎn)擊按鈕的時候彈出 windows 詢問對話框其中 “確認(rèn)合閘 ” 為對話內(nèi)容,對話框的名稱為 “確認(rèn)對話框 ”用戶不同顯示不同的按鈕你可以在用戶管理器給每個用戶不同的權(quán)限,使他們對按鈕有不同的操作權(quán),這是最簡便的。但是如果一定要根據(jù)用戶不同顯示不同的按鈕就要用 C腳本了

5、2/11下面這段代碼可以加在有兩個按鈕的畫面的對象屬性 -事件 -畫面對象 -其他-打開畫面,三個用戶名是 user1, user2,user3,按鈕名稱是按鈕 1,按鈕2,你可以自行修改,這里假設(shè)已經(jīng)進(jìn)行過用戶登錄的操作,當(dāng)打開有這兩個按鈕的畫面時執(zhí)行下列腳本判斷用戶并顯示相應(yīng)的按鈕if(strcmp(GetTagChar("CurrentUser"),"user1") )elseSetVisible(lpszPictureName,"按鈕 1",TRUE);SetVisible(lpszPictureName,"按紐 2

6、",FALSE);if(strcmp(GetTagChar("CurrentUser"),"user2") )elseSetVisible(lpszPictureName,"按鈕 1",FALSE);SetVisible(lpszPictureName,"按鈕 2",TRUE);if (strcmp(GetTagChar("CurrentUser"),"user3") )elseSetVisible(lpszPictureName,"按鈕 1",

7、TRUE);SetVisible(lpszPictureName,"按鈕 2",TRUE);strcmp 是比較字符串的語句,比較文本變量只能用它,幫助里沒有的,用它比較讀取到的用戶名 GetTagChar("CurrentUser")和三個用戶名 "userX",你把這段語句加到一個按鈕的鼠標(biāo)動作里,看點(diǎn)擊按鈕會不會兩個按鈕現(xiàn)實(shí)和隱藏。登錄登出對話框3/11#pragma code ("useadmin.dll")#include "PWRT_api.h"#pragma code()PWRTL

8、ogin('c');PWRTLogin參數(shù)必須是 CHAR字符。它指定了顯示對話框的監(jiān)視器。如果只使用一個監(jiān)視器,那么保留默認(rèn)參數(shù) “c或”者指定 “1。”#pragma code ("useadmin.dll")#include "PWRT_api.h"#pragma code()PWRTLogout();PWRTLogin參數(shù)必須是 CHAR字符。它指定了顯示對話框的監(jiān)視器。如果只使用一個監(jiān)視器,那么保留默認(rèn)參數(shù) “c或”者指定 “1?!盬inCC如何實(shí)現(xiàn)鼠標(biāo) OnMouseOVer事件用 WINDOWAPI函數(shù) GetCusorPo

9、s獲取當(dāng)前鼠標(biāo)位置,用 GetWindowRect 函數(shù)獲取窗口位置,兩值相減得鼠標(biāo)在 WINCCframe上的相對位置。用全局腳本(設(shè)定為 1s 定時刷新),然后獲取要 OnMouseOver 事件的物體的位置,并與鼠標(biāo)位置相比較,如一致則觸發(fā)自己定義的動作。 i nclude "apdefap.h"int gscAction( void )#pragma code("user32.dll");BOOL GetCusorPos(POINT lpPoint); 獲/取鼠標(biāo)的位置(絕對位置 -對應(yīng)屏幕分辨率) BOOL GetWindowRect(HWND

10、 hwnd,LPRECT lpRect);獲/取窗體位置#pragma code();4/11POINT pPos;RECT rRec;HWND hwnd;BOOL bRet,bRet2;long lLeft,lTop,lWidth,lHeight;long lX,lY;char szStr100;hwnd=FindWindow(NULL,"WinCC-Runtime - "); /如語言為中文應(yīng)為 "WinCC運(yùn)行系統(tǒng) -"if (hwnd=0) printf("rnError! WinCc Handle is %d",hwnd);

11、goto over;bRet=GetCursorPos(&pPos);if (bRet=0) goto over;bRet2=GetWindowRect(hwnd,&rRec);if (bRet2=0) goto over;lX=pPos.x-rRec.left;/鼠標(biāo)對 置lY=pPos.y-rRec.top;/鼠標(biāo)位置/ 如果為非全屏模式,需將上述數(shù)值中的高 height 判斷減去標(biāo)題欄的寬度/printf("The Current Cusor Pos is x:%d,y:%drn",pPos.x,pPos.y);/printf("The Cu

12、sor Pos in Window is x:%d,y:%drn",pPos.x-lLeft2,pPos.y-lTop2);5/11lLeft=GetLeft("NewPdl0.Pdl","Text1");/Return - Type :long intlTop=GetTop("NewPdl0.Pdl","Text1");/Return - Type :long intlWidth=GetWidth("NewPdl0.Pdl","Text1");/Return -

13、Type :long intlHeight=GetHeight("NewPdl0.Pdl","Text1");/Return - Type :long intif (lX>=lLeft)&&(lY>=lTop)&&(lX<=lLeft+lWidth)&&(lY<=lTop+lHeight) sprintf(szStr,"%d,%d",lX,lY);SetText("NewPdl0.Pdl","Text1",szStr);/R

14、eturn - Type :char*/printf("The Text1 Pos is x:%d,y:%drn",lLeft2,lTop-lTop2);over:return 0; 退出 WINCC監(jiān)控時選擇退出方式6/11DMExitWinCCEx (DM_SDMODE_SYSTEM);或者使用動態(tài)向?qū)ㄟ^給變量 ExitSystem賦不同的數(shù)值實(shí)現(xiàn)不同的方式int a;a=GetTagWord("ExitSystem");/返回類型 :WORDswitch(a)case 1 :MExitWinCCEx (DM_SDMODE_REBOOT);brea

15、k;case 2 :DMExitWinCCEx (DM_SDMODE_SYSTEM);break;case 4 :ExitWinCC();break; /DMExitWinCCEx (DM_SDMODE_WINCC);case 8 :DMExitWinCCEx (DM_SDMODE_LOGOFF);break;如何實(shí)現(xiàn)用戶登陸日志 wincc 中用 c 腳本實(shí)現(xiàn) ?break;#pragma code("kernel32.dll")VOID GetLocalTime(LPSYSTEMTIME lpSystemTime);#pragma code()char* usernam

16、e;char buf128;static char preuser128;unsigned a,b,c,d,e,f;FILE* fp;7/11SYSTEMTIME sysTime;/ 讀取系統(tǒng)時間 ,并且復(fù)制給變量 a,b,c,d,e,fGetLocalTime(&sysTime);a=sysTime.wHour;b=sysTime.wMinute;f=sysTime.wYear; e=sysTime.wMonth;d=sysTime.wDay;c=sysTime.wSecond;username = GetTagChar("CurrentUser");得/到當(dāng)前用

17、戶名稱fp= fopen("c:wincclog.txt", "a+");/創(chuàng)建文件if(strcmp(username, preuser)!=0)/ 如果當(dāng)前用戶名稱和前一個用戶名不同if(strcmp(username, "") != 0)&&(strcmp(preuser, "") = 0)/ 如果當(dāng)前用戶名稱不空同時前一個用戶名為空sprintf(buf, " 用戶 :%st 登陸時間是:t %d-%d-%d,%d-%d-%dn", username,a,b,c,d,e,

18、f);fputs(buf, fp);elseif(strcmp(username, "") = 0)&&(strcmp(preuser, "") != 0)/ 如果當(dāng)前用戶名稱為空同時前一個用戶名不空sprintf(buf," 用戶 :%st 退出時間是:t%d-%d-%d,%d-%d-%dn",preuser,a,b,c,d,e,f);fputs(buf, fp);elsesprintf(buf," 用戶 :%st 退出時間是:8/11t%d-%d-%d,%d-%d-%dn",preuser,a,

19、b,c,d,e,f);fputs(buf, fp);sprintf(buf," 用戶 :%st 登陸時間是:t%d-%d-%d,%d-%d-%dn",username,a,b,c,d,e,f); fputs(buf, fp);strcpy(preuser, username); fclose(fp);return 0;用戶登陸 xx:(包括用戶的登陸退出信息,以便查詢在什么時間段是哪個用戶在使用這個監(jiān)控軟件)設(shè)置語言英語 SetLanguage(0x409);法語 SetLanguage(0x407);德語 SetLanguage(0x40C);調(diào)用計算器如果在 C 腳本中

20、僅僅有一句ProgramExecute("CALC.exe")此時不關(guān)計算器就切換畫面,則計算器都在后臺運(yùn)行。所以在腳本中加入使計算器必須顯示在 WINDOW的激活層上。HWND Hwnd;BOOL bRet;9/11Hwnd=FindWindow(NULL,"Calculator");if (!Hwnd)ProgramExecute("CALC.exe");Hwnd=FindWindow(NULL,"Calculator");if (Hwnd)printf("rn%d",Hwnd);bRet=

21、SetWindowPos(Hwnd,HWND_TOPMOST,300,300,200,200,SWP_NOSIZE);if (!bRet) printf("rnSetWindowPos Error!"); 修改密碼 #pragma code("UseGen.dll")#include "USEGENAP.H"#pragma code()LPCMN_ERROR err;if (PWGENConnect("CC_ass_04-09-21_16:35:22",err) )if(PWGENChangePassword(GetTagChar(

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論