12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878 |
- #include "stdafx2.h"
- #include "mainfrm.h"
- #include "guitask.h"
- #include "fileutil.h"
- #include "array.h"
- #include "iniutil.h"
- #include "GUIConsole_UserCode.h"
- #include "import_libSysInit.h"
- #include "EventCode.h"
- #include "AccessAuthorization_client_g.h"
- using namespace AccessAuthorization;
- #include "UpgradeManager_client_g.h"
- using namespace UpgradeManager;
- #include "CardIssuerStand_client_g.h"
- using namespace CardIssuerStand;
- #include "MaterialMgrCnn.h"
- #include "mod_GuiConsole.h"
- #ifdef DEVOPS_ON_ST /*DevOps流水线编译,ST环境*/
- #define RVC_TITLE_STRING "STver."
- #elif defined(DEVOPS_ON_UAT)/*DevOps流水线编译,UAT环境*/
- #define RVC_TITLE_STRING "UATver."
- #elif defined(DEVOPS_ON_PRD)/*DevOps流水线编译,PRD环境*/
- #define RVC_TITLE_STRING ""
- #elif defined(DEVOPS_ON_DEV)/*DevOps流水线编译,Dev环境*/
- #define RVC_TITLE_STRING "DEVver."
- #else/*本地编译等非DevOps环境编译的版本*/
- #define RVC_TITLE_STRING "TESTver."
- #endif
- LRESULT CAboutDlg::OnClose(UINT uMsg, WPARAM wParam, LPARAM lParam)
- {
- EndDialog(0);
- return 0;
- }
- void CAboutDlg::OnOK(UINT uNotifyCode, int nID, CWindow wndCtl)
- {
- char szY2KTime[64] = {};
- GetDlgItem(IDC_EDIT1).GetWindowTextA(szY2KTime, sizeof(szY2KTime));
- int nLen = strlen(szY2KTime);
- if (nLen == 0)
- return;
- DWORD nY2KTime(0);
- int nRet= sscanf_s(szY2KTime, "%X", &nY2KTime);
- if (nRet == 0)
- {
- MessageBox("invalid y2k time");
- return;
- }
-
- CSmallDateTime dtSysTime(nY2KTime);
- GetDlgItem(IDC_EDIT2).SetWindowTextA(dtSysTime.ToTimeString());
- }
- void CAboutDlg::OnOK2(UINT uNotifyCode, int nID, CWindow wndCtl)
- {
- GetDlgItem(IDC_EDIT3).SetWindowTextA("");
- CDateTimePickerCtrl dt1;
- dt1.Attach(GetDlgItem(IDC_DATETIMEPICKER1));
- SYSTEMTIME st1 = {};
- dt1.GetSystemTime(&st1);
- CDateTimePickerCtrl dt2;
- dt2.Attach(GetDlgItem(IDC_DATETIMEPICKER2));
- SYSTEMTIME st2 = {};
- dt2.GetSystemTime(&st2);
- st1.wHour = st2.wHour;
- st1.wMinute = st2.wMinute;
- st1.wSecond = st2.wSecond;
- st1.wMilliseconds = st2.wMilliseconds;
-
- auto pEntity = m_pGUITask->GetEntity();
- CSmallDateTime dtQueryTime;
- dtQueryTime.FromSystemTime(st1);
- CBootInfo info = {};
- pEntity->GetFunction()->GetRebootInfo(dtQueryTime, info);
-
- CSimpleStringA str = CSimpleStringA::Format("start: %s, reboot: %s, ver: %s, reason: %d, reason count: %d, way: %d, way count: %d",
- (const char*)info.tmStart.ToTimeString(), (const char*)info.tmReboot.ToTimeString(), (const char*)info.InstallVersion.ToString(),
- info.eTriggerReason, info.wSameReasonTime, info.eWay, info.wSameWayTime);
- GetDlgItem(IDC_EDIT3).SetWindowTextA(str);
- }
- void CAboutDlg::OnOK3(UINT uNotifyCode, int nID, CWindow wndCtl)
- {
- char szFile[256] = {};
- GetDlgItem(IDC_EDIT4).GetWindowTextA(szFile, sizeof(szFile));
- if (strlen(szFile) == 0)
- {
- MessageBoxA("请输入要验证签名的文件路径!");
- return;
- }
- auto pEntity = m_pGUITask->GetEntity();
- CSimpleStringA strErrMsg;
- auto rc = pEntity->GetFunction()->VerifySignature(szFile, strErrMsg);
- if (rc == Error_Succeed)
- MessageBoxA("签名验证通过!");
- else
- MessageBoxA(CSimpleStringA::Format("签名验证不通过:%s", (const char*)strErrMsg));
- }
- void CAboutDlg::OnOK4(UINT uNotifyCode, int nID, CWindow wndCtl)
- {
- auto pEntity = m_pGUITask->GetEntity();
- CSystemStaticInfo info;
- auto rc = pEntity->GetFunction()->GetSystemStaticInfo(info);
- if (rc != Error_Succeed)
- {
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("GetSystemStaticInfo fail: %d", rc);
- return;
- }
- CSimpleStringA str = CSimpleStringA::Format("terminalno: %s, type: %s, site: %s, version: %s",
- (const char*)info.strTerminalID, (const char*)info.strMachineType,
- (const char*)info.strSite, (const char*)info.InstallVersion.ToString());
- GetDlgItem(IDC_EDIT3).SetWindowTextA(str);
- }
- LRESULT CAboutDlg::OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam)
- {
- CenterWindow();
- return 0;
- }
- LRESULT CLoginDlg::OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam)
- {
- CenterWindow();
- GetDlgItem(IDC_EditUser).SetFocus();
- return 0;
- }
- void CLoginDlg::OnOK(UINT uNotifyCode, int nID, CWindow wndCtl)
- {
- char szUserID[32] = {};
- GetDlgItem(IDC_EditUser).GetWindowTextA(szUserID, sizeof(szUserID));
- char szPassword[32] = {};
- GetDlgItem(IDC_EditPassword).GetWindowTextA(szPassword, sizeof(szPassword));
- EndDialog(nID);
- m_strUserID = szUserID;
- if (m_strUserID.Compare("admin") != 0)
- {
- if (m_strUserID.GetLength() == 8) // SAP用户
- m_strUserID = "SP" + m_strUserID;
- else
- m_strUserID = "SZ" + m_strUserID;
- }
- m_strPassword = szPassword;
- }
- void CLoginDlg::OnCancel(UINT uNotifyCode, int nID, CWindow wndCtl)
- {
- EndDialog(nID);
- m_strUserID = "";
- m_strPassword = "";
- }
- LRESULT CSysInfoView::OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam)
- {
- m_listView1 = GetDlgItem(IDC_VIEWLIST1);
- m_listView1.AddColumn("Item1", 0);
- m_listView1.AddColumn("Item2", 1);
- RECT rc = {};
- m_listView1.GetClientRect(&rc);
- m_listView1.SetColumnWidth(0, (rc.right-rc.left)*1/2);
- m_listView1.SetColumnWidth(1, LVSCW_AUTOSIZE_USEHEADER);
- return 0;
- }
- void CSysInfoView::OutputMsg(const char *pMsg)
- {
- ::PostMessage(GetTopLevelParent().m_hWnd, WM_SHOW_MSG, 0, (LPARAM) strdup(pMsg));
- }
- DWORD64 CSysInfoView::GetFolderSize(LPCTSTR szPath, DWORD *dwFiles, DWORD *dwFolders)
- {
- TCHAR szFileFilter[512];
- TCHAR szFilePath[512];
- HANDLE hFind = NULL;
- WIN32_FIND_DATA fileinfo;
- DWORD64 dwSize = 0;
- strcpy(szFilePath,szPath);
- strcat(szFilePath,"\\");
- strcpy(szFileFilter,szFilePath);
- strcat(szFileFilter,"*.*");
- hFind = FindFirstFile(szFileFilter,&fileinfo);
- if (hFind == INVALID_HANDLE_VALUE)
- return 0;
- do
- {
- if(fileinfo.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
- {
- if (!strcmp(fileinfo.cFileName,".") || !strcmp(fileinfo.cFileName,".."))
- {
- //Do nothing for "." and ".." folders
- }
- else
- {
- TCHAR sztmp[512];
- strcpy(sztmp,szFilePath);
- strcat(sztmp,fileinfo.cFileName);
- dwSize = dwSize + GetFolderSize(sztmp, dwFiles, dwFolders);
- if(dwFolders != NULL)
- {
- ++(*dwFolders);
- }
- }
- }
- else if(dwFiles != NULL)
- {
- ++(*dwFiles);
- }
- dwSize += fileinfo.nFileSizeLow;
- }
- while(FindNextFile(hFind,&fileinfo));
- FindClose(hFind);
- return dwSize;
- }
- // 查看操作系统信息
- void CSysInfoView::OnViewOSInfo(UINT /*uNotifyCode*/, int /*nID*/, CWindow /*wnd*/)
- {
- // 查询操作系统信息
- CSimpleStringA strResult = "操作系统信息:\r\n";
- // OS版本
- OSVERSIONINFO osvi;
- ZeroMemory(&osvi, sizeof(OSVERSIONINFO));
- osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
- GetVersionEx(&osvi);
- strResult = strResult + CSimpleStringA::Format(" 操作系统版本: %d.%d.%d\r\n", osvi.dwMajorVersion, osvi.dwMinorVersion, osvi.dwBuildNumber);
- // OS盘符
- _ULARGE_INTEGER lpFreeBytesAvailableToCaller = {}, lpTotalNumberOfBytes = {}, lpTotalNumberOfFreeBytes = {};
- char szRoot[4];
-
- DWORD dwAllDrives = GetLogicalDrives();
- if (dwAllDrives == 0)
- {
- LOG_TRACE("GetLogicalDrives() return 0");
- return ;
- }
-
- for(int i=0; i<26 && dwAllDrives > 0; i++)
- {
- bool bHasDrive = dwAllDrives & 0x1;
- dwAllDrives = dwAllDrives >> 1;
- if (!bHasDrive)
- continue;
- sprintf((char*)szRoot,"%c:\\", i+'A');
-
- if(GetDriveType(szRoot) == DRIVE_FIXED)
- {
- GetDiskFreeSpaceEx(szRoot, &lpFreeBytesAvailableToCaller, &lpTotalNumberOfBytes, &lpTotalNumberOfFreeBytes);
-
- strResult += CSimpleStringA::Format(" %s 总容量:%8d MB,可用容量:%8d MB\r\n", (const char*)szRoot,
- (DWORD)(lpTotalNumberOfBytes.QuadPart / (1024 *1024)), (DWORD)(lpTotalNumberOfFreeBytes.QuadPart / (1024 *1024)));
- }
- }
- // 查询相关目录占用空间
- auto pEntity = m_pGUITask->GetEntity();
- CSimpleStringA strRootPath;
- pEntity->GetFunction()->GetPath("Root", strRootPath);
- DWORD nFileCount(0), nFolderCount(0);
- auto nTotalSize = GetFolderSize(strRootPath, &nFileCount, &nFolderCount);
- if (nTotalSize >0)
- {
- strResult += CSimpleStringA::Format(" 框架安装目录:{%s}, 共有 %d个文件,%d个子目录,占用磁盘空间:%.1f MB\r\n\r\n",
- (const char*)strRootPath, nFileCount, nFolderCount, (nTotalSize/(1024*1024.0)));
- }
- // 输出
- OutputMsg(strResult);
- }
- // 查看框架信息
- void CSysInfoView::OnViewFWInfo(UINT /*uNotifyCode*/, int /*nID*/, CWindow /*wnd*/)
- {
- CSimpleStringA strResult = "终端基本信息:\r\n";
- auto pFunc = m_pGUITask->GetEntity()->GetFunction();
- CSystemStaticInfo staticInfo;
- auto rc = pFunc->GetSystemStaticInfo(staticInfo);
- if (rc == Error_Succeed)
- {
- CSimpleStringA strLightPacks ="";
- for(int i=0; i<staticInfo.LightPackInfos.GetCount(); i++)
- {
- if (i >0)
- strLightPacks += "、";
- strLightPacks += staticInfo.LightPackInfos[i].strPackName;
- }
- strResult += CSimpleStringA::Format(
- " 终端号码:{%s}\r\n"
- " 设备型号:{%s}\r\n"
- " 硬件版本:{%s}\r\n"
- " 登记地址:{%s}\r\n"
- " 定位信息:{%f, %f}\r\n"
- " 软件版本:{%s}\r\n"
- " 安装包名:{%s}\r\n"
- " 安装时间:{%s}\r\n"
- " 切换时间:{%s}\r\n"
- " 上次启动:{%s}\r\n"
- " 前一版本:{%s}\r\n"
- " 后一版本:{%s}\r\n"
- " 轻量安装:{%s}\r\n"
- " 运行次数:{%d}\r\n"
- " 当天次数:{%d}\r\n",
- (const char*)staticInfo.strTerminalID,
- (const char*)staticInfo.strMachineType,
- (const char*)staticInfo.MachineVersion.ToString(),
- (const char*)staticInfo.strEnrolAddr,
- staticInfo.EnrolGPS.GetLatitude(), staticInfo.EnrolGPS.GetLongitude(),
- (const char*)staticInfo.InstallVersion.ToString(),
- (const char*)staticInfo.InstallPack,
- (const char*)staticInfo.tmCreateDate.ToTimeString(),
- (const char*)staticInfo.tmSwithOverDate.ToTimeString(),
- (const char*)staticInfo.tmCurrentTime.ToTimeString(),
- (const char*)staticInfo.PreviousInstallVersion.ToString(),
- (const char*)staticInfo.LatterInstallVersion.ToString(),
- (const char*)strLightPacks,
- staticInfo.nTotalRunCount,
- staticInfo.nTodayRunCount);
- }
- CSystemRunInfo runInfo;
- rc = pFunc->GetSystemRunInfo(runInfo);
- if (rc == Error_Succeed)
- {
- CSimpleStringA strEntityList = "";
- for(int i=0; i<runInfo.strRunningEntityNames.GetCount(); i++)
- {
- if (i>0)
- strEntityList += "、";
- strEntityList += runInfo.strRunningEntityNames[i];
- }
- strResult += CSimpleStringA::Format(
- " 调试级别:{%d}\r\n"
- " 运行实体:{%s}\r\n",
- (int)runInfo.eDebugLevel,
- (const char*)strEntityList);
- }
- // 输出
- OutputMsg(strResult);
- }
- void CSysInfoView::ResetListAndButtons(const char *pszOpName, char *pszColName1, char *pszColName2,
- char *pszBtnName1, char *pszBtnName2, char *pszBtnName3, char *pszBtnName4)
- {
- m_strOpName = pszOpName;
- m_listView1.EnableWindow((pszColName1 != NULL || pszColName2 != NULL) ? TRUE : FALSE);
- m_listView1.DeleteAllItems();
- m_listView1.DeleteColumn(1);
- m_listView1.DeleteColumn(0);
-
- int nColCount = 0;
- if (pszColName1 != NULL)
- m_listView1.AddColumn(pszColName1, nColCount++);
-
- if (pszColName2 != NULL)
- m_listView1.AddColumn(pszColName2, nColCount++);
- if (nColCount >0)
- {
- RECT rc = {};
- m_listView1.GetClientRect(&rc);
- m_listView1.SetColumnWidth(0, (rc.right-rc.left-20)*1/nColCount);
- m_listView1.SetColumnWidth(1, (rc.right-rc.left-20)*1/nColCount);
- }
- CWindow button = GetDlgItem(IDC_VARBUTTON1);
- if (pszBtnName1 == NULL)
- {
- button.EnableWindow(FALSE);
- button.SetWindowTextA("动作1");
- }
- else
- {
- button.EnableWindow(TRUE);
- button.SetWindowTextA(pszBtnName1);
- }
- button = GetDlgItem(IDC_VARBUTTON2);
- if (pszBtnName2 == NULL)
- {
- button.EnableWindow(FALSE);
- button.SetWindowTextA("动作2");
- }
- else
- {
- button.EnableWindow(TRUE);
- button.SetWindowTextA(pszBtnName2);
- }
- button = GetDlgItem(IDC_VARBUTTON3);
- if (pszBtnName3 == NULL)
- {
- button.EnableWindow(FALSE);
- button.SetWindowTextA("动作3");
- }
- else
- {
- button.EnableWindow(TRUE);
- button.SetWindowTextA(pszBtnName3);
- }
- button = GetDlgItem(IDC_VARBUTTON4);
- if (pszBtnName4 == NULL)
- {
- button.EnableWindow(FALSE);
- button.SetWindowTextA("动作4");
- }
- else
- {
- button.EnableWindow(TRUE);
- button.SetWindowTextA(pszBtnName4);
- }
- }
- // 查看本地日志
- void CSysInfoView::OnViewSysLog(UINT /*uNotifyCode*/, int /*nID*/, CWindow /*wnd*/)
- {
- ResetListAndButtons("ViewLog", "日志文件", "文件路径", "日志列表", "查看日志", NULL, NULL);
- auto pFunc = m_pGUITask->GetEntity()->GetFunction();
- CSimpleStringA strSysLogPath;
- pFunc->GetPath("SysLog", strSysLogPath);
- int nItemCount = 0;
- m_listView1.InsertItem( nItemCount, "SysLog\\");
- m_listView1.SetItemText(nItemCount, 1, strSysLogPath);
- nItemCount++;
- CSimpleStringA strDbgPath;
- pFunc->GetPath("Dbg", strDbgPath);
- auto pDbgDirList = fileutil_get_sub_dirs2_a(strDbgPath, 50);
- for (int i = 0; i < pDbgDirList->nelts; ++i)
- {
- char *pszDirName = ARRAY_IDX(pDbgDirList, i, char*);
- char *p = strrchr(pszDirName, '\\');
- if (p == NULL)
- p = pszDirName;
- else
- p++;
- char szName[128];
- sprintf(szName, "%s\\", p);
- m_listView1.InsertItem( nItemCount, szName);
- m_listView1.SetItemText(nItemCount, 1, pszDirName);
- nItemCount++;
- }
- toolkit_array_free2(pDbgDirList);
- }
- // 日志查看处理
- void CSysInfoView::OnViewLogSubCmd(int nID)
- {
- int nSelectedIndex = m_listView1.GetSelectedIndex();
- if (nSelectedIndex <0 || nSelectedIndex >= m_listView1.GetItemCount())
- return;
- if (nID == IDC_VARBUTTON1)
- {
- char szName[128] = {};
- m_listView1.GetItemText(nSelectedIndex, 0, szName, sizeof(szName));
- if (strncmp(szName, " |--", 5) == 0)
- {
- // 文件层
- OutputMsg("当前项非文件目录!\r\n");
- return;
- }
-
- //MessageBox(CSimpleStringA::Format("日志列表:%s", szName));
- // 判断文件夹文件是否已经显示
- char szNextName[128] = {};
- if (nSelectedIndex < m_listView1.GetItemCount()-1
- && m_listView1.GetItemText(nSelectedIndex+1, 0, szNextName, sizeof(szNextName)) >0
- && strncmp(szNextName, " |--", 5) == 0)
- {
- OutputMsg("目录文件已加载!\r\n");
- return;
- }
- char szFullPath[128] = {};
- m_listView1.GetItemText(nSelectedIndex, 1, szFullPath, sizeof(szFullPath));
- int nInsertIndex = nSelectedIndex + 1;
- auto pLogList = fileutil_get_sub_files2_a(szFullPath, 50);
- for (int i = 0; i < pLogList->nelts; ++i)
- {
- char *pszLogPath = ARRAY_IDX(pLogList, i, char*);
- char *p = strrchr(pszLogPath, '\\');
- if (p == NULL)
- p = pszLogPath;
- else
- p++;
- char szLogName[128];
- sprintf(szLogName, " |--%s", p);
- m_listView1.InsertItem( nInsertIndex, szLogName);
- m_listView1.SetItemText(nInsertIndex, 1, pszLogPath);
- nInsertIndex++;
- }
- toolkit_array_free2(pLogList);
- OutputMsg(CSimpleStringA::Format("目录[%s]共有%d个日志文件\r\n", szName, nInsertIndex - nSelectedIndex -1));
- }
- else
- {
- char szName[128] = {};
- m_listView1.GetItemText(nSelectedIndex, 0, szName, sizeof(szName));
- if (strncmp(szName, " |--", 5) != 0)
- {
- OutputMsg("当前非文件项!\r\n");
- return;
- }
- char szLogPath[128] = {};
- m_listView1.GetItemText(nSelectedIndex, 1, szLogPath, sizeof(szLogPath));
- OutputMsg(CSimpleStringA::Format("查看日志: %s\r\n", szLogPath));
- //system(CSimpleStringA::Format("notepad %s", szLogPath));
- ShellExecute(NULL,"open","NOTEPAD.EXE",szLogPath,NULL,SW_SHOWNORMAL);
- }
- }
- // 查看实体配置
- void CSysInfoView::OnViewEntityConfig(UINT /*uNotifyCode*/, int /*nID*/, CWindow /*wnd*/)
- {
- ResetListAndButtons("ViewConfig", "实体名称", "配置类型", "查看配置", NULL, NULL, NULL);
- auto pFunc = m_pGUITask->GetEntity()->GetFunction();
- CAutoArray<CSimpleStringA> strEntityNames;
- CAutoArray<WORD> wEntityIDs;
- pFunc->GetAllRegistedEntity(strEntityNames, wEntityIDs);
- m_listView1.InsertItem(0, "Root");
- m_listView1.SetItemText(0, 1, "硬件配置");
- m_listView1.InsertItem(1, "Shell");
- m_listView1.SetItemText(1, 1, "软件配置");
- for(int i=0; i<strEntityNames.GetCount(); i++)
- {
- CSimpleStringA strEntityName = strEntityNames[i];
- for(int j=0; j<m_listView1.GetItemCount(); j++)
- {
- char szText[128] = {};
- m_listView1.GetItemText(j, 0, szText, sizeof(szText));
- if (stricmp(szText, strEntityName) >0)
- {
- m_listView1.InsertItem(j, strEntityName);
- m_listView1.SetItemText(j, 1, strEntityName=="CenterSetting"? "集中配置":"实体配置");
- break;
- }
- }
- }
- }
- // 实体配置查看处理
- void CSysInfoView::OnViewConfigSubCmd(int nID)
- {
- int nSelectedIndex = m_listView1.GetSelectedIndex();
- if (nSelectedIndex <0 || nSelectedIndex >= m_listView1.GetItemCount())
- return;
- char szEntityName[64];
- m_listView1.GetItemText(nSelectedIndex, 0, szEntityName, sizeof(szEntityName));
- CSimpleStringA strCfgPath;
- auto pFunc = m_pGUITask->GetEntity()->GetFunction();
- if (strcmp(szEntityName, "Root") == 0)
- {
- pFunc->GetPath("HardwareCfg", strCfgPath);
- }
- else
- {
- pFunc->GetPath("Cfg", strCfgPath);
- }
- strCfgPath += CSimpleStringA::Format("\\%s.ini", szEntityName);
- if (!ExistsFileA(strCfgPath))
- {
- OutputMsg(CSimpleStringA::Format("没有找到配置文件%s.ini\r\n", szEntityName));
- return;
- }
- OutputMsg(CSimpleStringA::Format("查看配置%s.ini\r\n", szEntityName));
- ShellExecute(NULL,"open","NOTEPAD.EXE",strCfgPath,NULL,SW_SHOWNORMAL);
- }
- // 查看升级日志
- void CSysInfoView::OnViewUpgradeConfig(UINT /*uNotifyCode*/, int /*nID*/, CWindow /*wnd*/)
- {
- ResetListAndButtons("ViewUpgradeLog", "升级日志", "日志路径", "查看日志", NULL, NULL, NULL);
- auto pFunc = m_pGUITask->GetEntity()->GetFunction();
- CSimpleStringA strPath;
- pFunc->GetPath("RunInfo", strPath);
- strPath += "\\InstallLog";
- int nInsertIndex = 0;
- auto pLogList = fileutil_get_sub_files2_a(strPath, 50);
- for (int i = 0; i < pLogList->nelts; ++i)
- {
- char *pszLogPath = ARRAY_IDX(pLogList, i, char*);
- char *p = strrchr(pszLogPath, '\\');
- if (p == NULL)
- p = pszLogPath;
- else
- p++;
- m_listView1.InsertItem( nInsertIndex, p);
- m_listView1.SetItemText(nInsertIndex, 1, pszLogPath);
- nInsertIndex++;
- }
- toolkit_array_free2(pLogList);
- OutputMsg(CSimpleStringA::Format("共有%d个升级文件\r\n", nInsertIndex));
- }
- // 查看升级日志处理
- void CSysInfoView::OnViewUpgradeLogSubCmd(int nID)
- {
- int nSelectedIndex = m_listView1.GetSelectedIndex();
- if (nSelectedIndex <0 || nSelectedIndex >= m_listView1.GetItemCount())
- return;
- char szLogName[64];
- m_listView1.GetItemText(nSelectedIndex, 0, szLogName, sizeof(szLogName));
- char szLogPath[128];
- m_listView1.GetItemText(nSelectedIndex, 1, szLogPath, sizeof(szLogPath));
- OutputMsg(CSimpleStringA::Format("查看日志文件%s\r\n", szLogName));
- ShellExecute(NULL,"open","NOTEPAD.EXE",szLogPath,NULL,SW_SHOWNORMAL);
- }
- // 查看安装目录
- void CSysInfoView::OnViewInstallDir(UINT /*uNotifyCode*/, int /*nID*/, CWindow /*wnd*/)
- {
- ResetListAndButtons("ViewInstallDir", "目录/文件", "文件属性", "返回上层", "查看目录", NULL, NULL);
- GetDlgItem(IDC_VARBUTTON1).EnableWindow(FALSE);
- auto pFunc = m_pGUITask->GetEntity()->GetFunction();
- CSimpleStringA strPath;
- pFunc->GetPath("RootVer", strPath);
- m_strCurViewDir = strPath;
- OnViewInstallDirSubCmd(IDC_VARBUTTON2);
- }
- // 查看升级日志处理
- void CSysInfoView::OnViewInstallDirSubCmd(int nID)
- {
- if (nID == IDC_VARBUTTON1)
- {
- auto pFunc = m_pGUITask->GetEntity()->GetFunction();
- CSimpleStringA strPath;
- pFunc->GetPath("RootVer", strPath);
- if (strPath == m_strCurViewDir)
- {
- OutputMsg("当前目录为根目录\r\n");
- return;
- }
- // 返回上层
- char szTmp[256] = {};
- strcpy(szTmp, m_strCurViewDir);
- char *p = strrchr(szTmp, '\\');
- if (p == NULL)
- return;
- *p = 0;
- m_strCurViewDir = szTmp;
- if (strPath == m_strCurViewDir)
- GetDlgItem(IDC_VARBUTTON1).EnableWindow(FALSE);
- }
- else if (nID == IDC_VARBUTTON2)
- {
- // 查看目录
- int nSelectedIndex = m_listView1.GetSelectedIndex();
- if (nSelectedIndex <0 && m_listView1.GetItemCount() >0)
- return;
- if (nSelectedIndex>=0)
- {
- char szDirName[64];
- m_listView1.GetItemText(nSelectedIndex, 0, szDirName, sizeof(szDirName));
- if (strncmp(szDirName, "[D]", 3) != 0)
- {
- OutputMsg(CSimpleStringA::Format("当前项不是目录: %sr\n", szDirName));
- return;
- }
- char *p = szDirName + 3;
- m_strCurViewDir += CSimpleStringA::Format("\\%s", p);
- GetDlgItem(IDC_VARBUTTON1).EnableWindow(TRUE);
- }
- }
- else
- {
- return;
- }
- // 显示当前目录项
- m_listView1.DeleteAllItems();
- int nIndex = 0;
- WIN32_FIND_DATAA fd = {};
- CSimpleStringA strFindDir = m_strCurViewDir + "\\*";
- HANDLE hFind = FindFirstFileA(strFindDir, &fd);
- if (hFind != INVALID_HANDLE_VALUE)
- {
- do
- {
- if (strcmp(fd.cFileName, ".") == 0 || strcmp(fd.cFileName, "..") == 0)
- continue;
- if (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
- {
- // 目录
- int j =0;
- for(; j<nIndex; j++)
- {
- char szTmp[64];
- m_listView1.GetItemText(j, 0, szTmp, sizeof(szTmp));
- if(strncmp(szTmp, "[D]", 3) != 0)
- break;
- }
-
- m_listView1.InsertItem(j, CSimpleStringA::Format("[D]%s", fd.cFileName));
- nIndex++;
- }
- else
- {
- // 文件
- m_listView1.InsertItem(nIndex, fd.cFileName);
- SYSTEMTIME st = {};
- FILETIME ft = {};
- FileTimeToLocalFileTime(&fd.ftLastWriteTime, &ft);
- FileTimeToSystemTime(&ft, &st);
- DWORD dwSize = fd.nFileSizeLow;
- CSimpleStringA strTemp = CSimpleStringA::Format("%.4d-%.2d-%.2d %.2d:%.2d:%.2d修改, %d字节",
- st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond, dwSize);
- m_listView1.SetItemText(nIndex, 1, strTemp);
- nIndex++;
- }
- }
- while (FindNextFileA(hFind, &fd));
- FindClose(hFind);
- }
- else
- {
- OutputMsg("当前目录为空r\n");
- }
- }
- // 监控变量
- void CSysInfoView::OnViewSysVar(UINT /*uNotifyCode*/, int /*nID*/, CWindow /*wnd*/)
- {
- ResetListAndButtons("ViewSysVar", "变量名称", "当前值", "手动刷新", "监控变量", "取消监控", NULL);
- auto pFunc = m_pGUITask->GetEntity()->GetFunction();
- CSimpleStringA strPath;
- pFunc->GetPath("Cfg", strPath);
- strPath += "\\shell.ini";
- auto arr = inifile_read_section_key_all(strPath, "SysEvent");
- for (int i = 0; i < arr->nelts; ++i)
- {
- char *pszVarName = ARRAY_IDX(arr, i, char*);
- m_listView1.InsertItem(i, pszVarName);
-
- CSimpleStringA strSysVar;
- pFunc->GetSysVar(pszVarName, strSysVar);
- m_listView1.SetItemText(i, 1, strSysVar);
- }
- toolkit_array_free2(arr);
- OutputMsg(CSimpleStringA::Format("共%d个系统变量\r\n", m_listView1.GetItemCount()));
- }
- void CSysInfoView::OnSysVarEvent(const char *pszKey, const char *pszValue,const char *pszOldValue,const char *pszEntityName)
- {
- for(int i=0; i<m_listView1.GetItemCount(); i++)
- {
- char szVarName[64];
- m_listView1.GetItemText(i, 0, szVarName, sizeof(szVarName));
- if (strcmp(pszKey, szVarName) ==0)
- {
- m_listView1.SetItemText(i, 1, pszValue);
- break;
- }
- }
- OutputMsg(CSimpleStringA::Format("[OnSysVarEvent] var: {%s}, old value: {%s}, new value: {%s}\r\n", pszKey, pszOldValue, pszValue));
- }
- // 查看变量处理
- void CSysInfoView::OnViewSysVarSubCmd(int nID)
- {
- auto pFunc = m_pGUITask->GetEntity()->GetFunction();
- if (nID == IDC_VARBUTTON1) // 手工刷新
- {
- for(int i=0; i<m_listView1.GetItemCount(); i++)
- {
- char szVarName[64] = {};
- m_listView1.GetItemText(i, 0, szVarName, sizeof(szVarName));
- CSimpleStringA strSysVar;
- pFunc->GetSysVar(szVarName, strSysVar);
- m_listView1.SetItemText(i, 1, strSysVar);
- }
- }
- else if(nID == IDC_VARBUTTON2) // 订阅当前变量
- {
- int nSelectedIndex = m_listView1.GetSelectedIndex();
- if (nSelectedIndex <0 || nSelectedIndex >= m_listView1.GetItemCount())
- return;
- char szVarName[64];
- m_listView1.GetItemText(nSelectedIndex, 0, szVarName, sizeof(szVarName));
-
- auto rc = pFunc->RegistSysVarEvent(szVarName, this);
- if (rc == Error_Succeed)
- {
- OutputMsg(CSimpleStringA::Format("监控系统变量(%s)成功\r\n", szVarName));
- }
- else
- {
- OutputMsg(CSimpleStringA::Format("监控系统变量(%s)失败: 0x%X\r\n", szVarName, rc));
- }
- }
- else if(nID == IDC_VARBUTTON3) // 取消订阅
- {
- int nSelectedIndex = m_listView1.GetSelectedIndex();
- if (nSelectedIndex <0 || nSelectedIndex >= m_listView1.GetItemCount())
- return;
- char szVarName[64];
- m_listView1.GetItemText(nSelectedIndex, 0, szVarName, sizeof(szVarName));
- auto rc = pFunc->UnregistSysVarEvent(szVarName);
- if (rc == Error_Succeed)
- {
- OutputMsg(CSimpleStringA::Format("取消监控系统变量(%s)成功\r\n", szVarName));
- }
- else
- {
- OutputMsg(CSimpleStringA::Format("取消监控系统变量(%s)失败: 0x%X\r\n", szVarName, rc));
- }
- }
- }
- // 监控实体日志
- void CSysInfoView::OnMonitorSysLog(UINT /*uNotifyCode*/, int /*nID*/, CWindow /*wnd*/)
- {
- ResetListAndButtons("MonitorLog", "实体名称", "是否监控", "开始监控输出", "停止监控输出", "开始监控实体", "停止监控实体");
- if(m_pGUITask->HasSubscibeLog())
- {
- GetDlgItem(IDC_VARBUTTON1).EnableWindow(FALSE);
- GetDlgItem(IDC_VARBUTTON2).EnableWindow(TRUE);
- }
- else
- {
- GetDlgItem(IDC_VARBUTTON1).EnableWindow(TRUE);
- GetDlgItem(IDC_VARBUTTON2).EnableWindow(FALSE);
- }
- auto pFunc = m_pGUITask->GetEntity()->GetFunction();
- CAutoArray<CSimpleStringA> strEntityNames;
- CAutoArray<WORD> wEntityIDs;
- auto rc = pFunc->GetAllRegistedEntity(strEntityNames, wEntityIDs);
- int i=0;
- for(; i<strEntityNames.GetCount(); i++)
- {
- int j=0;
- for(; j<i; j++)
- {
- char szName[64] = {};
- m_listView1.GetItemText(j, 0, szName, sizeof(szName));
- if (stricmp(strEntityNames[i], szName) <0)
- break;
- }
- m_listView1.InsertItem(j, strEntityNames[i]);
- CEntityRunInfo info = {};
- pFunc->GetEntityRunInfo(strEntityNames[i], info);
- m_listView1.SetItemText(j, 1, info.eDebugLevel > 0 ? "Y" : "N");
- }
- OutputMsg(CSimpleStringA::Format("共%d个实体\r\n", i));
- }
- LRESULT CSysInfoView::OnListItemchanged(NMHDR* phdr)
- {
- NMLISTVIEW* pNMListView = (NMLISTVIEW*) phdr;
- if((pNMListView->uChanged==LVIF_STATE) && (pNMListView->uNewState & LVIS_SELECTED))
- {
- // 选中某项
- int nIndex = pNMListView->iItem;
- char szName[64] = {};
- m_listView1.GetItemText(nIndex, 0, szName, sizeof(szName));
- if (m_strOpName == "ViewLog") // 显示日志
- {
- if (strncmp(szName, " |--", 5) == 0)
- {
- GetDlgItem(IDC_VARBUTTON1).EnableWindow(FALSE);
- GetDlgItem(IDC_VARBUTTON2).EnableWindow(TRUE);
- }
- else
- {
- GetDlgItem(IDC_VARBUTTON1).EnableWindow(TRUE);
- GetDlgItem(IDC_VARBUTTON2).EnableWindow(FALSE);
- }
- }
- else if (m_strOpName == "ViewInstallDir") // 显示安装目录
- {
- if (strncmp(szName, "[D]", 3) == 0)
- GetDlgItem(IDC_VARBUTTON2).EnableWindow(TRUE);
- else
- GetDlgItem(IDC_VARBUTTON2).EnableWindow(FALSE);
- }
- else if (m_strOpName == "MonitorLog") // 监控日志
- {
- CEntityRunInfo info = {};
- auto pFunc = m_pGUITask->GetEntity()->GetFunction();
- pFunc->GetEntityRunInfo(szName, info);
- if (info.eDebugLevel >0)
- {
- GetDlgItem(IDC_VARBUTTON3).EnableWindow(FALSE);
- GetDlgItem(IDC_VARBUTTON4).EnableWindow(TRUE);
- }
- else
- {
- GetDlgItem(IDC_VARBUTTON3).EnableWindow(TRUE);
- GetDlgItem(IDC_VARBUTTON4).EnableWindow(FALSE);
- }
- }
- }
- return 0;
- }
- // 监控日志处理
- void CSysInfoView::OnMonitorLogSubCmd(int nID)
- {
- if (nID == IDC_VARBUTTON1) // 开始监控
- {
- auto rc = m_pGUITask->SubscribeLog();
- if (rc == Error_Succeed)
- {
- GetDlgItem(IDC_VARBUTTON1).EnableWindow(FALSE);
- GetDlgItem(IDC_VARBUTTON2).EnableWindow(TRUE);
- OutputMsg("开始监控日志成功\r\n");
- }
- else
- {
- OutputMsg(CSimpleStringA::Format("开始监控日志失败: 0x%X\r\n", rc));
- }
- }
- else if (nID == IDC_VARBUTTON2) // 停止监控
- {
- auto rc = m_pGUITask->UnSubscribeLog();
- if (rc == Error_Succeed)
- {
- GetDlgItem(IDC_VARBUTTON1).EnableWindow(TRUE);
- GetDlgItem(IDC_VARBUTTON2).EnableWindow(FALSE);
- OutputMsg("结束监控日志成功\r\n");
- }
- else
- {
- OutputMsg(CSimpleStringA::Format("结束监控日志失败: 0x%X\r\n", rc));
- }
- }
- else if (nID == IDC_VARBUTTON3) // 监控实体
- {
- int nSelected = m_listView1.GetSelectedIndex();
- if (nSelected <0)
- return;
- char szName[64] = {};
- m_listView1.GetItemText(nSelected, 0, szName, sizeof(szName));
- auto rc = m_pGUITask->SetDebugLevel(szName, 1);
- if (rc == Error_Succeed)
- {
- CEntityRunInfo info = {};
- auto pFunc = m_pGUITask->GetEntity()->GetFunction();
- pFunc->GetEntityRunInfo(szName, info);
- assert(info.eDebugLevel >0);
- m_listView1.SetItemText(nSelected, 1, "Y");
- GetDlgItem(IDC_VARBUTTON3).EnableWindow(FALSE);
- GetDlgItem(IDC_VARBUTTON4).EnableWindow(TRUE);
- OutputMsg(CSimpleStringA::Format("监控实体{%s}日志成功\r\n", szName));
- }
- else
- {
- OutputMsg(CSimpleStringA::Format("监控实体{%s}日志失败: 0x%X\r\n", szName, rc));
- }
- }
- else if (nID == IDC_VARBUTTON4) // 停止监控实体
- {
- int nSelected = m_listView1.GetSelectedIndex();
- if (nSelected <0)
- return;
- char szName[64] = {};
- m_listView1.GetItemText(nSelected, 0, szName, sizeof(szName));
- auto rc = m_pGUITask->SetDebugLevel(szName, 0);
- if (rc == Error_Succeed)
- {
- CEntityRunInfo info = {};
- auto pFunc = m_pGUITask->GetEntity()->GetFunction();
- pFunc->GetEntityRunInfo(szName, info);
- assert(info.eDebugLevel ==0);
- m_listView1.SetItemText(nSelected, 1, "N");
- GetDlgItem(IDC_VARBUTTON3).EnableWindow(TRUE);
- GetDlgItem(IDC_VARBUTTON4).EnableWindow(FALSE);
- OutputMsg(CSimpleStringA::Format("取消监控实体{%s}日志成功\r\n", szName));
- }
- else
- {
- OutputMsg(CSimpleStringA::Format("取消监控实体{%s}日志失败: 0x%X\r\n", szName, rc));
- }
- }
- }
- // 查看已下载文件
- void CSysInfoView::OnViewDownloadFile(UINT /*uNotifyCode*/, int /*nID*/, CWindow /*wnd*/)
- {
- ResetListAndButtons("ViewDownload", "已下载文件", NULL, NULL, NULL, NULL, NULL);
- auto pFunc = m_pGUITask->GetEntity()->GetFunction();
- CSimpleStringA strPath;
- pFunc->GetPath("Downloads", strPath);
-
- auto pFileList = fileutil_get_sub_files2_a(strPath, 50);
- for (int i = 0; i < pFileList->nelts; ++i)
- {
- char *pszFileName = ARRAY_IDX(pFileList, i, char*);
- char *p = strrchr(pszFileName, '\\');
- if (p == NULL)
- p = pszFileName;
- else
- p++;
- m_listView1.InsertItem( i, p);
- }
- toolkit_array_free2(pFileList);
- }
- void CSysInfoView::OnVarButton(UINT /*uNotifyCode*/, int nID, CWindow /*wnd*/)
- {
- if (m_strOpName == "ViewLog")
- {
- OnViewLogSubCmd(nID);
- }
- else if (m_strOpName == "ViewConfig")
- {
- OnViewConfigSubCmd(nID);
- }
- else if (m_strOpName == "ViewUpgradeLog")
- {
- OnViewUpgradeLogSubCmd(nID);
- }
- else if (m_strOpName == "ViewInstallDir")
- {
- OnViewInstallDirSubCmd(nID);
- }
- else if (m_strOpName == "ViewSysVar")
- {
- OnViewSysVarSubCmd(nID);
- }
- else if (m_strOpName == "MonitorLog")
- {
- OnMonitorLogSubCmd(nID);
- }
- }
- LRESULT CSysInitView::OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam)
- {
- DoDataExchange(FALSE);
- InitMessage();
- changeMessageFilter(TRUE);
- InitRect();
- InitWidget();
- //InitDll();
- //CheckSystemInit();
- return 0;
- }
- void CSysInitView::InitRect()
- {
- CRect tempRect;
- GetClientRect(tempRect);
- m_systemInitBtnRect = CRect(tempRect.Width() / 3 - 55, tempRect.top + 25, tempRect.Width() / 3 + 55, tempRect.top + 40);
- m_systemRetoreBtnRect = CRect(tempRect.Width() / 6 * 5 - 55, tempRect.top + 25, tempRect.Width() / 6 * 5 + 55, tempRect.top + 40);
- m_accountConfigCheckRect = CRect(m_systemInitBtnRect.left - 165, m_systemInitBtnRect.bottom + 10
- , m_systemInitBtnRect.left - 55, m_systemInitBtnRect.bottom + 30);
- m_voiceConfigCheckRect = CRect(m_accountConfigCheckRect.right, m_systemInitBtnRect.bottom + 10
- , m_accountConfigCheckRect.right + 110, m_systemInitBtnRect.bottom + 30);
- m_closeWifiCheckRect = CRect(m_voiceConfigCheckRect.right, m_systemInitBtnRect.bottom + 10
- , m_voiceConfigCheckRect.right + 110, m_systemInitBtnRect.bottom + 30);
- m_closeAutoRotationCheckRect = CRect(m_closeWifiCheckRect.right, m_systemInitBtnRect.bottom + 10, m_closeWifiCheckRect.right + 110, m_systemInitBtnRect.bottom + 30);
-
- m_defaultDixCheckRect = CRect(m_accountConfigCheckRect.left, m_accountConfigCheckRect.bottom + 5
- , m_accountConfigCheckRect.right, m_accountConfigCheckRect.bottom + 25);
- m_minDPICheckRect = CRect(m_voiceConfigCheckRect.left, m_voiceConfigCheckRect.bottom + 5
- , m_voiceConfigCheckRect.right, m_voiceConfigCheckRect.bottom + 25);
- m_systemMainIntiCheckRect = CRect(m_closeWifiCheckRect.left, m_closeWifiCheckRect.bottom + 5, m_closeWifiCheckRect.right, m_closeWifiCheckRect.bottom + 25);
- m_systemMainRestoreCheckRect = CRect(m_systemRetoreBtnRect.left, m_systemRetoreBtnRect.bottom + 5, m_systemRetoreBtnRect.left + 110, m_systemRetoreBtnRect.bottom + 25);
- m_initStaticRect = CRect(m_accountConfigCheckRect.left - 5, m_systemInitBtnRect.top - 17,
- m_closeAutoRotationCheckRect.right + 5, m_systemMainIntiCheckRect.bottom + 5);
- m_restoreStaticRect = CRect(m_systemRetoreBtnRect.left - 5, m_systemRetoreBtnRect.top - 17,
- m_systemRetoreBtnRect.right + 5, m_systemMainRestoreCheckRect.bottom + 5);
- m_msgListRect = CRect(10, m_systemMainIntiCheckRect.bottom + 10, tempRect.right - 10, tempRect.bottom - 10);
- }
- void CSysInitView::InitWidget()
- {
- m_systemInitBtn.MoveWindow(m_systemInitBtnRect);
- m_systemRetoreBtn.MoveWindow(m_systemRetoreBtnRect);
- m_accountConfigCheck.MoveWindow(&m_accountConfigCheckRect);
- m_voiceConfigCheck.MoveWindow(&m_voiceConfigCheckRect);
- m_closeWifiCheck.MoveWindow(&m_closeWifiCheckRect);
- m_closeAutoRotationCheck.MoveWindow(&m_closeAutoRotationCheckRect);
- m_systemMainIntiCheck.MoveWindow(&m_systemMainIntiCheckRect);
- m_defaultDixCheck.MoveWindow(&m_defaultDixCheckRect);
- m_minDPICheck.MoveWindow(&m_minDPICheckRect);
- m_systemMainRestoreCheck.MoveWindow(&m_systemMainRestoreCheckRect);
- m_msgList.MoveWindow(&m_msgListRect);
- m_initStatic.MoveWindow(&m_initStaticRect);
- m_restoreStatic.MoveWindow(&m_restoreStaticRect);
- m_systemInitBtn.SetCheck(1);
- m_systemMainRestoreCheck.SetCheck(1);
- CRect m_rect;
- GetClientRect(&m_rect); //获取对话框的大小
- m_msgList.AddColumn(_T("初始化步骤"), 0);
- m_msgList.AddColumn(_T("结果"), 1);
- RECT rc = {};
- m_msgList.GetClientRect(&rc);
- m_msgList.SetColumnWidth(0, (rc.right-rc.left)* 15 / 20);
- m_msgList.SetColumnWidth(1, LVSCW_AUTOSIZE_USEHEADER);
- ListView_SetExtendedListViewStyle(m_msgList.m_hWnd, m_msgList.GetStyle() | LVS_EX_GRIDLINES);
- }
- void CSysInitView::InitDll()
- {
- CString dllPath =CString(_T("libSysInit.dll"));
- m_dllWrc = LoadLibrary(dllPath);
- RVCInit_SetLogPath = (RVCINIT_SETLOGPATH)GetProcAddress(m_dllWrc, RVCINITSETLOGPATH);
- RVCInit_sysInitBegin = (RVCINIT_SYSINITBEGIN)GetProcAddress(m_dllWrc, RVCINITSYSINITBEGIN);
- RVCInit_isSystemx64 = (RVCINIT_ISSYSTEMX64)GetProcAddress(m_dllWrc, RVCINITISSYSTEMX64);
- RVCInit_sysTypeCheck = (RVCINIT_SYSTYPECHECK)GetProcAddress(m_dllWrc, RVCINITSYSTYPECHECK);
- RVCInit_EnableAdmin = (RVCINIT_ENABLEADMIN)GetProcAddress(m_dllWrc, RVCINITENABLEADMIN);
- RVCInit_RemoveOtherAccouts = (RVCINIT_REMOVEOTHERACCOUTS)GetProcAddress(m_dllWrc, RVCINITREMOVEOTHERACCOUTS);
- RVCInit_AddCmbUser = (RVCINIT_ADDCMBUSER)GetProcAddress(m_dllWrc, RVCINITADDCMBUSER);
- RVCInit_checkAccounts = (RVCINIT_CHECKACCOUNTS)GetProcAddress(m_dllWrc, RVCINITCHECKACCOUNTS);
- RVCInit_VoiceConfigDefault = (RVCINIT_VOICECONFIGDEFAULT)GetProcAddress(m_dllWrc, RVCINITVOICECONFIGDEFAULT);
- RVCInit_CheckVoiceDefault = (RVCINIT_CHECKVOICEDEFAULT)GetProcAddress(m_dllWrc, RVCINITCHECKVOICEDEFAULT);
- RVCInit_CloseWifi = (RVCINIT_CLOSEWIFI)GetProcAddress(m_dllWrc, RVCINITCLOSEWIFI);
- RVCInit_CheckWifi = (RVCINIT_CHECKWIFI)GetProcAddress(m_dllWrc, RVCINITCHECKWIFI);
- RVCInit_CheckWifiExist = (RVCINIT_CHECKWIFIEXIST)GetProcAddress(m_dllWrc, RVCINITCHECKWIFIEXIST);
- RVCInit_CloseAutoRotation = (RVCINIT_CLOSEAUTOROTATION)GetProcAddress(m_dllWrc, RVCINITCLOSEAUTOROTATION);
- RVCInit_checkAutoRotation = (RVCINIT_CHECKAUTOROTATION)GetProcAddress(m_dllWrc, RVCINITCHECKAUTOROTATION);
- RVCInit_setScreen = (RVCINIT_SETSCREEN)GetProcAddress(m_dllWrc, RVCINITSETSCREEN);
- RVCInit_checkScreen = (RVCINIT_CHECKSCREEN)GetProcAddress(m_dllWrc, RVCINITCHECKSCREEN);
- RVCInit_SetMinDPI = (RVCINIT_SETMINDPI)GetProcAddress(m_dllWrc, RVCINITSETMINDPI);
- RVCInit_checkMinDPI = (RVCINIT_CHECKMINDPI)GetProcAddress(m_dllWrc, RVCINITCHECKMINDPI);
- RVCInit_InitAdmin = (RVCINIT_INITADMIN)GetProcAddress(m_dllWrc, RVCINITINITADMIN);
- RVCInit_InitCmbUser = (RVCINIT_INITCMBUSER)GetProcAddress(m_dllWrc, RVCINITINITCMBUSER);
- RVCInit_checkMainInit = (RVCINIT_CHECKMAININIT)GetProcAddress(m_dllWrc, RVCINITCHECKMAININIT);
- RVCInit_mainInit = (RVCINIT_MAININIT)GetProcAddress(m_dllWrc, RVCINITMAININIT);
- RVCInit_endInit = (RVCINIT_ENDINIT)GetProcAddress(m_dllWrc, RVCINITENDINIT);
- RVCInit_InitRestore = (RVCINIT_INITRESTORE)GetProcAddress(m_dllWrc, RVCINITINITRESTORE);
- if (NULL == m_dllWrc || NULL == RVCInit_SetLogPath || NULL == RVCInit_sysInitBegin || NULL == RVCInit_EnableAdmin || NULL == RVCInit_RemoveOtherAccouts
- || NULL == RVCInit_AddCmbUser || NULL == RVCInit_checkAccounts || NULL == RVCInit_VoiceConfigDefault || NULL == RVCInit_CheckVoiceDefault
- || NULL == RVCInit_CloseWifi || NULL == RVCInit_CloseAutoRotation || NULL == RVCInit_checkAutoRotation || NULL == RVCInit_setScreen
- || NULL == RVCInit_checkScreen || NULL == RVCInit_SetMinDPI || NULL == RVCInit_checkMinDPI || NULL == RVCInit_mainInit
- || NULL == RVCInit_endInit || NULL == RVCInit_InitRestore || NULL == RVCInit_InitAdmin || NULL == RVCInit_InitCmbUser
- || NULL == RVCInit_isSystemx64 || NULL == RVCInit_sysTypeCheck || NULL == RVCInit_checkMainInit || NULL == RVCInit_CheckWifi
- || NULL == RVCInit_CheckWifiExist)
- {
- return;
- }
- CSimpleStringA strDbgPath;
- auto pFunc = m_pGUITask->GetEntity()->GetFunction();
- pFunc->GetPath("Dbg", strDbgPath);
- char logPath[300] = "";
- sprintf(logPath, "%s\\SysInit", strDbgPath.GetData());
- RVCInit_SetLogPath(logPath);
- }
- void CSysInitView::OutputMsg(const char *pMsg)
- {
- ::PostMessage(GetTopLevelParent().m_hWnd, WM_SHOW_MSG, 0, (LPARAM) strdup(pMsg));
- }
- void CSysInitView::AddMsgToListView(CString item, CString result)
- {
- m_msgList.InsertItem(nItemCount, item);
- m_msgList.SetItemText(nItemCount, 1, result);
- nItemCount++;
- }
- void CSysInitView::EasyAddMsgToListView(CString item, BOOL isSuccess)
- {
- AddMsgToListView(item, isSuccess ? _T("成功") : _T("失败"));
- }
- void CSysInitView::CleanListView()
- {
- m_msgList.DeleteAllItems();//清空上一次显示内容
- nItemCount = 0;
- }
- void CSysInitView::CheckSystemInit()
- {
- auto pFunc = m_pGUITask->GetEntity()->GetFunction();
- CSmartPointer<IConfigInfo> spConfig;
- auto rc = pFunc->OpenConfig(Config_CenterSetting, spConfig);
- if (rc != Error_Succeed)
- return;
- int checkSysInit = 0;
- rc = spConfig->ReadConfigValueInt(m_pGUITask->GetEntity()->GetEntityName(), "CheckSysInit", checkSysInit);
- if (rc != Error_Succeed)
- return;
- CSystemStaticInfo stStaticinfo;
- pFunc->GetSystemStaticInfo(stStaticinfo);
- if (1 == checkSysInit)
- CloseHandle((HANDLE)_beginthreadex(NULL, 0, (unsigned int(__stdcall *)(void *))SysInitCheck, this, 0, NULL));
- }
- void CSysInitView::modifyCheckStatus(DWORD status)
- {
- m_accountConfigCheck.SetCheck(1);
- /*默认必须设置账户
- if (ENABLE_ACCOUNT_CONFIG == (status & ENABLE_ACCOUNT_CONFIG))
- m_accountConfigCheck.SetCheck(1);
- else
- m_accountConfigCheck.SetCheck(0);
- */
- if (ENABLE_VOICE_CONFIG == (status & ENABLE_VOICE_CONFIG))
- m_voiceConfigCheck.SetCheck(1);
- else
- m_voiceConfigCheck.SetCheck(0);
- if (ENABLE_CLOSE_WIFI == (status & ENABLE_CLOSE_WIFI))
- m_closeWifiCheck.SetCheck(1);
- else
- m_closeWifiCheck.SetCheck(0);
- if (ENABLE_CLOSE_ROTATION == (status & ENABLE_CLOSE_ROTATION))
- m_closeAutoRotationCheck.SetCheck(1);
- else
- m_closeAutoRotationCheck.SetCheck(0);
- if (ENABLE_DEFAULT_DIX == (status & ENABLE_DEFAULT_DIX))
- m_defaultDixCheck.SetCheck(1);
- else
- m_defaultDixCheck.SetCheck(0);
- if(ENABLE_MIN_DPI == (status & ENABLE_MIN_DPI))
- m_minDPICheck.SetCheck(1);
- else
- m_minDPICheck.SetCheck(0);
- if(ENABLE_MAIN_INIT == (status & ENABLE_MAIN_INIT))
- m_systemMainIntiCheck.SetCheck(1);
- else
- m_systemMainIntiCheck.SetCheck(0);
- }
- DWORD SysInitCheck(LPVOID lpv)
- {
- CSysInitView *sysInit = (CSysInitView *)lpv;
- DWORD result = 0;
- if (RVCInit_checkAccounts())
- sysInit->AddMsgToListView(_T("操作系统定制:检查账户状态"), _T("已定制"));
- else
- {
- result |= ENABLE_ACCOUNT_CONFIG;
- sysInit->AddMsgToListView(_T("操作系统定制:检查账户状态"), _T("未定制"));
- }
- if (RVCInit_CheckVoiceDefault())
- sysInit->AddMsgToListView(_T("操作系统定制:检查声音配置"), _T("已定制"));
- else
- {
- result |= ENABLE_VOICE_CONFIG;
- sysInit->AddMsgToListView(_T("操作系统定制:检查声音配置"), _T("未定制"));
- }
- if (RVCInit_CheckWifiExist())
- {
- if (RVCInit_CheckWifi())
- {
- result |= ENABLE_CLOSE_WIFI;
- sysInit->AddMsgToListView(_T("操作系统定制:检查是否关闭无线网卡"), _T("未定制"));
- }
- else
- sysInit->AddMsgToListView(_T("操作系统定制:检查是否关闭无线网卡"), _T("已定制"));
- }
- else
- sysInit->AddMsgToListView(_T("操作系统定制:未检测到无线网卡!!"), _T(""));
-
- if (RVCInit_checkAutoRotation())
- {
- result |= ENABLE_CLOSE_ROTATION;
- sysInit->AddMsgToListView(_T("操作系统定制:检查是否关闭自动旋转"), _T("未定制"));
- }
- else
- sysInit->AddMsgToListView(_T("操作系统定制:检查是否关闭自动旋转"), _T("已定制"));
- if (RVCInit_checkScreen(1920, 1080))
- sysInit->AddMsgToListView(_T("操作系统定制:检查屏幕分辨率设置为1920*1080"), _T("已定制"));
- else
- {
- result |= ENABLE_DEFAULT_DIX;
- sysInit->AddMsgToListView(_T("操作系统定制:检查屏幕分辨率设置为1920*1080"), _T("未定制"));
- }
- TCHAR userName[256];
- DWORD nameLen = 256;
- if (!GetUserName(userName, &nameLen))
- return FALSE;
-
- CString showMsg;
- showMsg.Format(_T("操作系统定制:检查当前账户%s设置为最小项目"), userName);
- if (RVCInit_checkMinDPI(NULL, userName))
- sysInit->AddMsgToListView(showMsg, _T("已定制"));
- else
- {
- result |= ENABLE_MIN_DPI;
- sysInit->AddMsgToListView(showMsg, _T("未定制"));
- }
- TCHAR errMsg[1024] = _T("");
- if (RVCInit_checkMainInit(errMsg))
- sysInit->AddMsgToListView(_T("操作系统定制:框架初始化"), _T("已定制"));
- else
- {
- result |= ENABLE_MAIN_INIT;
- sysInit->AddMsgToListView(errMsg, _T("未定制"));
- }
- sysInit->modifyCheckStatus(result);
- if (ENABLE_NONE_CONFIG != result)
- {
- //检查失败,需要进行定制
- ::PostMessage(sysInit->GetParent(), WM_CHECK_SYSINIT_FAIL, NULL, NULL);
- sysInit->OutputMsg("检测到未完成系统定制,请先进行系统定制");
- }
- else
- ::PostMessageA(sysInit->GetParent(), WM_CHECK_SYSINIT_SUCCESS, NULL, NULL);
- return result;
- }
- BOOL CSysInitView::CheckThreadRunning()
- {
- DWORD initCode = 0, restoreCode = 0;
- if (NULL == m_initThread && NULL == m_restoreThread)
- return TRUE;
- if (NULL != m_initThread) ::GetExitCodeThread(m_initThread, &initCode);
- if (NULL != m_restoreThread) ::GetExitCodeThread(m_restoreThread, &restoreCode);
- if (STILL_ACTIVE == initCode)
- {
- MessageBox(_T("正在进行系统定制,请不要重复点击"));
- return FALSE;
- }
- else if (STILL_ACTIVE == restoreCode)
- {
- MessageBox(_T("正在进行系统定制还原,请不要重复点击"));
- return FALSE;
- }
- return TRUE;
- }
- void CSysInitView::TestHighLevelDbg(BOOL isShow, BOOL isHighLevel)
- {
- ::PostMessage(this->GetParent(), WM_SHOW_MAINTAIN_VIEW, isShow ? 1 : 0, isHighLevel ? 1 : 0);
- }
- DWORD SysInitBegin(LPVOID lpv)
- {
- CSysInitView *initDlg = (CSysInitView *)lpv;
- initDlg->CleanListView();
- CString showMsg;
- TCHAR errMsg[1024] = _T("");
- char rvcInitDir[1024] = "";
- if (!getRvcInitDir(rvcInitDir))
- return 0;
-
- initDlg->AddMsgToListView(_T("正在进行文件拷贝..."), _T(""));
- if (!RVCInit_sysInitBegin(rvcInitDir, errMsg))
- {
- initDlg->EasyAddMsgToListView(_T("操作系统定制初始化"), FALSE);
- return 0;
- }
- else
- {
- initDlg->EasyAddMsgToListView(_T("Dll文件拷贝"), TRUE);
- showMsg.Format(_T("当前操作系统版本为%d位"), RVCInit_isSystemx64() ? 64 : 32);
- initDlg->AddMsgToListView(showMsg, _T(""));
- }
- if (1 == initDlg->m_accountConfigCheck.GetCheck())
- {
- showMsg.Format(_T("开启管理员账号"));
- if (!RVCInit_EnableAdmin())
- {
- initDlg->EasyAddMsgToListView(showMsg, FALSE);
- return 0;
- }
- else
- initDlg->EasyAddMsgToListView(showMsg, TRUE);
- showMsg.Format(_T("删除其他账户"));
- if (!RVCInit_RemoveOtherAccouts())
- {
- initDlg->EasyAddMsgToListView(showMsg, FALSE);
- return 0;
- }
- else
- initDlg->EasyAddMsgToListView(showMsg, TRUE);
- showMsg.Format(_T("创建CmbUser"));
- if (!RVCInit_AddCmbUser())
- {
- initDlg->EasyAddMsgToListView(showMsg, FALSE);
- return 0;
- }
- else
- initDlg->EasyAddMsgToListView(showMsg, TRUE);
- }
- if (1 == initDlg->m_voiceConfigCheck.GetCheck())
- {
- showMsg.Format(_T("声音配置"));
- if (!RVCInit_VoiceConfigDefault())
- {
- initDlg->EasyAddMsgToListView(showMsg, FALSE);
- return 0;
- }
- else
- initDlg->EasyAddMsgToListView(showMsg, TRUE);
- }
- if (1 == initDlg->m_closeWifiCheck.GetCheck())
- {
- if (RVCInit_CheckWifiExist())
- {
- if (!RVCInit_CloseWifi())
- {
- showMsg.Format(_T("未能禁用wifi,请检查是否存在无线网卡"));
- initDlg->EasyAddMsgToListView(showMsg, FALSE);
- return 0;
- }
- else
- {
- showMsg.Format(_T("禁用wifi"));
- initDlg->EasyAddMsgToListView(showMsg, TRUE);
- }
- }
- else
- initDlg->AddMsgToListView(_T("未检测到无线网卡,未进行相关设置"), _T(""));
-
- }
- if (1 == initDlg->m_closeAutoRotationCheck.GetCheck())
- {
- showMsg.Format(_T("禁用自动旋转"));
- if (PAD_LIB == RVCInit_sysTypeCheck() || PAD_FLB == RVCInit_sysTypeCheck())
- {
- if (!RVCInit_CloseAutoRotation())
- {
- initDlg->EasyAddMsgToListView(showMsg, FALSE);
- return 0;
- }
- else
- initDlg->EasyAddMsgToListView(showMsg, TRUE);
- }
- else
- initDlg->AddMsgToListView(_T("检测到当前设备不是PAD,未能禁用自动旋转功能!"), _T(""));
- }
- if (1 == initDlg->m_defaultDixCheck.GetCheck())
- {
- showMsg.Format(_T("设置分辨率为1920*1080"));
- if (!RVCInit_setScreen(1920, 1080))
- {
- initDlg->EasyAddMsgToListView(showMsg, FALSE);
- return 0;
- }
- else
- initDlg->EasyAddMsgToListView(showMsg, TRUE);
- }
- if (!RVCInit_checkAccounts())
- {
- initDlg->EasyAddMsgToListView(_T("检查到账户信息不正确,请先进行账户配置"), FALSE);
- return 0;
- }
- if (!RVCInit_InitAdmin())
- {
- initDlg->EasyAddMsgToListView(_T("初始化Administrator用户"), FALSE);
- return 0;
- }
- //等待explorer.exe初始化
- Sleep(10 * 1000);
- initDlg->EasyAddMsgToListView(_T("初始化Administrator用户"), TRUE);
-
- if (1 == initDlg->m_minDPICheck.GetCheck())
- {
- showMsg.Format(_T("为Administrator设置为最小项目"));
- if (!RVCInit_SetMinDPI(NULL, _T("Administrator")))
- {
- initDlg->EasyAddMsgToListView(showMsg, FALSE);
- return 0;
- }
- else
- initDlg->EasyAddMsgToListView(showMsg, TRUE);
- }
- if (!RVCInit_InitCmbUser())
- {
- initDlg->EasyAddMsgToListView(_T("初始化CmbUser用户"), FALSE);
- return 0;
- }
- //等待explorer.exe初始化
- Sleep(10 * 1000);
- initDlg->EasyAddMsgToListView(_T("初始化CmbUser用户"), TRUE);
- if (1 == initDlg->m_minDPICheck.GetCheck())
- {
- showMsg.Format(_T("为CmbUser设置为最小项目"));
- if (!RVCInit_SetMinDPI(NULL, _T("CmbUser")))
- {
- initDlg->EasyAddMsgToListView(showMsg, FALSE);
- return 0;
- }
- else
- initDlg->EasyAddMsgToListView(showMsg, TRUE);
- }
- if (1 == initDlg->m_systemMainIntiCheck.GetCheck())
- {
- if (!RVCInit_mainInit(errMsg))
- initDlg->EasyAddMsgToListView(errMsg, FALSE);
- else
- initDlg->EasyAddMsgToListView(_T("框架初始化"), TRUE);
- }
- if (!RVCInit_endInit())
- initDlg->EasyAddMsgToListView(_T("释放资源"), FALSE);
- initDlg->EasyAddMsgToListView(_T("系统定制初始化"), TRUE);
- if (IDOK == MessageBox(NULL, _T("系统定制初始化完成,重启后功能生效(由于账户变化,若不重启可能会影响系统使用)。点击确认重启系统。"), _T("是否重启"), MB_OKCANCEL))
- system("shutdown -f -r -t 00");
-
- return 0;
- }
- DWORD SysRestoreBegin(LPVOID lpv)
- {
- CSysInitView *initDlg = (CSysInitView *)lpv;
- initDlg->CleanListView();
- CString showMsg;
- showMsg.Format(_T("取消系统定制功能初始化"));
- if (1 == initDlg->m_systemMainRestoreCheck.GetCheck())
- {
- if (!RVCInit_InitRestore(true))
- initDlg->EasyAddMsgToListView(showMsg, FALSE);
- else
- {
- initDlg->EasyAddMsgToListView(showMsg, TRUE);
- if (IDOK == MessageBox(NULL, _T("已取消系统定制,点击确认重启系统。"), _T("是否重启"), MB_OKCANCEL))
- system("shutdown -f -r -t 00");
- }
- }
- return 0;
- }
- BOOL getRvcInitDir(char *dirPath)
- {
- char pathbuf[1024] = "";
- int pathlen = ::GetModuleFileNameA(NULL, pathbuf, 1024);//获得GuiConsole路径
- // 替换掉单杠
- while (pathlen > 0)
- {
- if (pathbuf[pathlen--] == '\\')
- break;
- }
- pathbuf[++pathlen] = '\0';
- memcpy(dirPath, pathbuf, (pathlen + 1 > 1024 ? 1024 : pathlen + 1));
- return pathlen;
- }
- LRESULT CSysInitView::OnBnClickedSystemInit(UINT /*uNotifyCode*/, int /*nID*/, CWindow /*wnd*/)
- {
- if (0 == m_accountConfigCheck.GetCheck() && 0 == m_voiceConfigCheck.GetCheck() && 0 == m_closeWifiCheck.GetCheck() && 0 == m_closeAutoRotationCheck.GetCheck()
- && 0 == m_defaultDixCheck.GetCheck() && 0 == m_systemMainIntiCheck.GetCheck() && 0 == m_minDPICheck.GetCheck())
- {
- AddMsgToListView(_T("请选择需要初始化的部分"), _T(""));
- return 0;
- }
- if (CheckThreadRunning())
- m_initThread = (HANDLE)_beginthreadex(NULL, 0, (unsigned int (__stdcall *)(void *))SysInitBegin, this, 0, NULL);
- return 0;
- }
- LRESULT CSysInitView::OnBnClickedSystemRestore(UINT /*uNotifyCode*/, int /*nID*/, CWindow /*wnd*/)
- {
- if (CheckThreadRunning())
- if (IDOK == MessageBox("注意:只有框架初始化功能还原,其他功能不会还原。点击确认开始还原初始化。", "警告", MB_OKCANCEL))
- m_restoreThread = (HANDLE)_beginthreadex(NULL, 0, (unsigned int (__stdcall *)(void *))SysRestoreBegin, this, 0, NULL);
-
- return 0;
- }
- LRESULT CControlView::OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam)
- {
- CComboBox cbBox =(CComboBox) GetDlgItem(IDC_COMBO1);
- cbBox.AddString("请选择物料类型");
- cbBox.AddString("[DebitCard] 普通借记卡");
- cbBox.AddString("[RetainCard] 吞卡登记");
- //cbBox.AddString("[UKey] 专业版证书");
- //cbBox.AddString("[Receipt] 回单打印卷纸");
- //cbBox.AddString("[Paper] 文件打印纸");
- //cbBox.AddString("[RFIDCard] 小额钱包卡");
- cbBox.SetCurSel(0);
- return 0;
- }
- // 通过健康实体重启Shell
- void CControlView::OnRestartShell(UINT /*uNotifyCode*/, int /*nID*/, CWindow /*wnd*/)
- {
- LogEvent(Severity_Middle, EVENT_CONSOLE_REQ_RESTART_SHELL, "请求框架重启");
- }
- // 通过健康实体重启电源
- void CControlView::OnRestartPower(UINT /*uNotifyCode*/, int /*nID*/, CWindow /*wnd*/)
- {
- LogEvent(Severity_Middle, EVENT_CONSOLE_REQ_RESTART_POWER, "请求电源重启");
- }
- // 通过健康实体关闭Shell
- void CControlView::OnShutdownShell(UINT /*uNotifyCode*/, int /*nID*/, CWindow /*wnd*/)
- {
- LogEvent(Severity_Middle, EVENT_CONSOLE_REQ_SHUTDOWN_SHELL, "请求框架退出");
- }
- // 退出准入
- void CControlView::OnExitAccessAuth(UINT /*uNotifyCode*/, int /*nID*/, CWindow /*wnd*/)
- {
- auto pEntity = m_pGUITask->GetEntity();
- AccessAuthService_ClientBase *pClient = new AccessAuthService_ClientBase(pEntity);
- auto rc = pClient->Connect();
- if (rc == Error_Succeed)
- {
- AccessAuthService_Unregist_Info info = {};
- info.nReason = 4;
- info.nWay = 0;
- rc = (*pClient)(EntityResource::getLink().upgradeLink())->Unregist(info);
- if (rc == Error_Succeed)
- OutputMsg("请求退出准入成功\r\n");
- else
- OutputMsg(CSimpleStringA::Format("请求退出准入失败: 0x%X\r\n", rc));
- pClient->GetFunction()->CloseSession();
- }
- else
- {
- OutputMsg(CSimpleStringA::Format("连接准入实体失败: 0x%X\r\n", rc));
- pClient->SafeDelete();
- }
-
- }
- // 重新准入
- void CControlView::OnRestartAuth(UINT /*uNotifyCode*/, int /*nID*/, CWindow /*wnd*/)
- {
- auto pEntity = m_pGUITask->GetEntity();
- AccessAuthService_ClientBase *pClient = new AccessAuthService_ClientBase(pEntity);
- auto rc = pClient->Connect();
- if (rc == Error_Succeed)
- {
- rc = (*pClient)(EntityResource::getLink().upgradeLink())->Regist();
- if (rc == Error_Succeed)
- OutputMsg("请求重新准入成功\r\n");
- else
- OutputMsg(CSimpleStringA::Format("请求重新准入失败: 0x%X\r\n", rc));
- pClient->GetFunction()->CloseSession();
- }
- else
- {
- OutputMsg(CSimpleStringA::Format("连接准入实体失败: 0x%X\r\n", rc));
- pClient->SafeDelete();
- }
-
- }
- // 物料维护
- void CControlView::OnMaterialManager(UINT /*uNotifyCode*/, int /*nID*/, CWindow /*wnd*/)
- {
- GetDlgItem(IDC_STATIC1).ShowWindow(SW_SHOW);
- GetDlgItem(IDC_STATIC2).ShowWindow(SW_SHOW);
- GetDlgItem(IDC_COMBO1).ShowWindow(SW_SHOW);
- }
- void CControlView::OnSelectChanged(UINT uNotifyCode, int nID, CWindow wndCtl)
- {
- CComboBox cbBox =(CComboBox) GetDlgItem(IDC_COMBO1);
- int nIndex = cbBox.GetCurSel();
- if (nIndex == 0)
- return;
- // 显示相关控件
- GetDlgItem(IDC_STATIC3).ShowWindow(SW_SHOW);
- GetDlgItem(IDC_STATIC4).ShowWindow(SW_SHOW);
- GetDlgItem(IDC_STATIC5).ShowWindow(SW_SHOW);
- GetDlgItem(IDC_STATIC6).ShowWindow(SW_SHOW);
- GetDlgItem(IDC_STATIC7).ShowWindow(SW_SHOW);
- GetDlgItem(IDC_STATIC8).ShowWindow(SW_SHOW);
- GetDlgItem(IDC_STATIC9).ShowWindow(SW_SHOW);
- GetDlgItem(IDC_EDIT2).ShowWindow(SW_SHOW);
- GetDlgItem(IDC_EDIT3).ShowWindow(SW_SHOW);
- GetDlgItem(IDC_EDIT4).ShowWindow(SW_SHOW);
- GetDlgItem(IDC_EDIT5).ShowWindow(SW_SHOW);
- GetDlgItem(IDC_EDIT6).ShowWindow(SW_SHOW);
- GetDlgItem(IDC_EDIT7).ShowWindow(SW_SHOW);
- GetDlgItem(IDC_EDIT8).ShowWindow(SW_SHOW);
- GetDlgItem(IDC_COMMITRESULT).ShowWindow(SW_SHOW);
- GetDlgItem(IDC_CANCELCHECK).ShowWindow(SW_SHOW);
- auto pEntity =(CGUIConsoleEntity*) m_pGUITask->GetEntity();
-
- char szText[128] = {};
- cbBox.GetLBText(nIndex, szText);
- char *p = strchr(szText, ']');
- if (p == NULL)
- {
- OutputMsg(CSimpleStringA::Format("无效设备名:%s\r\n", szText));
- return;
- };
-
- *p = 0;
- unsigned int nCapacity = 0;
- unsigned int nBackEndCount = 0;
- unsigned int nTerminalCount = 0;
- unsigned int nRemainCount = 0;
- CSimpleStringA strDevCode = &szText[1];
- if (strDevCode == "DebitCard" || strDevCode == "RetainCard")
- {
- // 查询发卡器发卡计数\吞卡计数
- GetDlgItem(IDC_EDIT4).SetWindowTextA("0");
- CardIssuerStandService_ClientBase *pClient = new CardIssuerStandService_ClientBase(pEntity);
- auto rc = pClient->Connect();
- if (rc == Error_Succeed)
- {
- CardIssuerStandService_GetMaterialCount_Req req = {};
- CardIssuerStandService_GetMaterialCount_Ans ret = {};
- rc = (*pClient)(EntityResource::getLink().upgradeLink())->GetMaterialCount(req, ret, 10000);
- if (rc == Error_Succeed)
- {
- if (strDevCode == "DebitCard")
- {
- nTerminalCount = ret.issued;
- nRemainCount = ret.remains;
- GetDlgItem(IDC_EDIT4).SetWindowTextA(CSimpleStringA::Format("%d", nTerminalCount));
- GetDlgItem(IDC_EDIT8).SetWindowTextA(CSimpleStringA::Format("%d", nRemainCount));
- }
- else if (strDevCode == "RetainCard")
- {
- nTerminalCount = ret.captured;
- nRemainCount = ret.captured;
- GetDlgItem(IDC_EDIT4).SetWindowTextA(CSimpleStringA::Format("%d", nRemainCount));
- GetDlgItem(IDC_EDIT8).SetWindowTextA(CSimpleStringA::Format("%d", nRemainCount));
- }
- }
- else
- {
- OutputMsg(CSimpleStringA::Format("调用发卡器实体失败:0x%X\r\n", rc));
- }
- pClient->GetFunction()->CloseSession();
- }
- else
- {
- OutputMsg(CSimpleStringA::Format("连接发卡器实体失败:0x%X\r\n", rc));
- pClient->SafeDelete();
- }
-
- }
- else
- {
- OutputMsg(CSimpleStringA::Format("暂不支持此设备:%s\r\n", (const char*)strDevCode));
- return;
- }
- // 通讯取后台计数
- GetDlgItem(IDC_EDIT2).SetWindowTextA("0"); // 放置数量
- GetDlgItem(IDC_EDIT3).SetWindowTextA("0"); // 使用数量
-
- CSystemStaticInfo staticInfo;
- pEntity->GetFunction()->GetSystemStaticInfo(staticInfo);
- CMaterialMgrCnn *pCnn = new CMaterialMgrCnn(pEntity);
- if (pCnn->ConnectFromCentralSetting() && pCnn->IsConnectionOK())
- {
- auto rc = pCnn->GetMaterialCounter(strDevCode, staticInfo.strTerminalID, "", nCapacity, nBackEndCount);
- if (rc == Error_Succeed)
- {
- GetDlgItem(IDC_EDIT2).SetWindowTextA(CSimpleStringA::Format("%d", nCapacity)); // 放置数量
- GetDlgItem(IDC_EDIT3).SetWindowTextA(CSimpleStringA::Format("%d", nBackEndCount)); // 后台数量
- }
- else
- OutputMsg(CSimpleStringA::Format("获取后台物料计数失败: 0x%X\r\n", rc));
- pCnn->Close();
- }
- else
- OutputMsg("连接物料管理服务失败\r\n");
- pCnn->DecRefCount();
- pCnn = NULL;
- }
- // 提交复核结果
- void CControlView::OnCommitResult(UINT /*uNotifyCode*/, int /*nID*/, CWindow /*wnd*/)
- {
- auto pEntity =(CGUIConsoleEntity*) m_pGUITask->GetEntity();
- CSystemStaticInfo staticInfo;
- auto pFunc = pEntity->GetFunction();
- pFunc->GetSystemStaticInfo(staticInfo);
-
- CComboBox cbBox =(CComboBox) GetDlgItem(IDC_COMBO1);
- char szText[32] = {};
- cbBox.GetWindowTextA(szText, sizeof(szText));
- char *p = strchr(szText, ']');
- if (p == NULL)
- {
- MessageBox(CSimpleStringA::Format("无效设备名:%s\r\n", szText));
- return;
- };
-
- *p = 0;
- CSimpleStringA strMaterialCode = &szText[1];
- CSimpleStringA strTerminalNo = staticInfo.strTerminalID;
- // 判断计数是否不符
- // 实际剩余
- memset(szText, 0, sizeof(szText));
- GetDlgItem(IDC_EDIT5).GetWindowTextA(szText, sizeof(szText));
- if (strlen(szText) == 0)
- {
- MessageBoxA("请输入实际剩余数量");
- return;
- }
- int nActRemainCount = atoi(szText);
- // 终端剩余计数
- memset(szText, 0, sizeof(szText));
- GetDlgItem(IDC_EDIT8).GetWindowTextA(szText, sizeof(szText));
- int nDevRemainCount = atoi(szText);
- // 终端使用计数
- memset(szText, 0, sizeof(szText));
- GetDlgItem(IDC_EDIT4).GetWindowTextA(szText, sizeof(szText));
- int nUsedCounter = atoi(szText);
- // 重置数量
- memset(szText, 0, sizeof(szText));
- GetDlgItem(IDC_EDIT6).GetWindowTextA(szText, sizeof(szText));
- if (strlen(szText) == 0)
- {
- MessageBoxA("请输入重置数量");
- return;
- }
- int nResetCapacity = atoi(szText);
- // 核对意见
- char szComment[256] = {};
- GetDlgItem(IDC_EDIT7).GetWindowTextA(szComment, sizeof(szComment));
-
- if (nActRemainCount != nDevRemainCount && strlen(szComment)==0)
- {
- MessageBoxA("剩余计数不符,请输入不符原因");
- return;
- }
-
- // 重置硬件计数
- ErrorCodeEnum rc = Error_Succeed;
- if (strMaterialCode == "DebitCard" || strMaterialCode == "RetainCard")
- {
- CardIssuerStandService_ClientBase *pClient = new CardIssuerStandService_ClientBase(pEntity);
- rc = pClient->Connect();
- if (rc == Error_Succeed)
- {
- CardIssuerStandService_SetMaterialCount_Req req = {};
- if (strMaterialCode == "DebitCard")
- {
- req.bRemains = true;
- req.remains = nResetCapacity;
- req.bIssued = true;
- req.issued = 0;
- req.bMixed = true;
- req.mixed = 0;
- req.bCaptured = false;
- }
- else if (strMaterialCode == "RetainCard")
- {
- req.bCaptured = true;
- req.captured = 0;
- req.bRemains = false;
- req.bIssued = false;
- req.bMixed = false;
- }
- CardIssuerStandService_SetMaterialCount_Ans ret = {};
- rc = (*pClient)(EntityResource::getLink().upgradeLink())->SetMaterialCount(req, ret, 10000);
- pClient->GetFunction()->CloseSession();
- }
- else
- {
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("连接CardIssuer实体失败");
- pClient->SafeDelete();
- }
-
- }
- else
- {
- rc = Error_Unexpect;
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("未知物料: {%s}", (const char*)strMaterialCode);
- }
- if (rc != Error_Succeed)
- {
- MessageBoxA(CSimpleStringA::Format("重置终端计数失败(0x%X)", rc));
- LogWarn(Severity_Middle, rc, 0, CSimpleStringA::Format("重置终端计数失败(0x%X)", rc));
- return;
- }
- // 重置后台计数
- CMaterialMgrCnn *pCnn = new CMaterialMgrCnn(pEntity);
- if (pCnn->ConnectFromCentralSetting() && pCnn->IsConnectionOK())
- {
- auto rc = pCnn->ResetMaterialCounter(strMaterialCode, strTerminalNo, pEntity->GetCurMaintainer(), nResetCapacity, nUsedCounter, nActRemainCount, szComment);
- pCnn->Close();
- }
- pCnn->DecRefCount();
- pCnn = NULL;
- if (rc == Error_Succeed)
- {
- ClearAndHideMaterialEditView();
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("重置物料{%s}计数成功", (const char*)strMaterialCode);
- MessageBoxA("重置物料计数成功");
- }
- else
- {
- MessageBoxA(CSimpleStringA::Format("重置后端计数失败(0x%X)", rc));
- LogWarn(Severity_Middle, rc, 0, CSimpleStringA::Format("重置后端计数失败(0x%X)", rc));
- }
- }
- // 取消复核
- void CControlView::OnCancelCheck(UINT /*uNotifyCode*/, int /*nID*/, CWindow /*wnd*/)
- {
- ClearAndHideMaterialEditView();
- }
- void CControlView::ClearAndHideMaterialEditView()
- {
- // 清空内容
- GetDlgItem(IDC_EDIT2).SetWindowTextA("");
- GetDlgItem(IDC_EDIT3).SetWindowTextA("");
- GetDlgItem(IDC_EDIT4).SetWindowTextA("");
- GetDlgItem(IDC_EDIT5).SetWindowTextA("");
- GetDlgItem(IDC_EDIT6).SetWindowTextA("");
- GetDlgItem(IDC_EDIT7).SetWindowTextA("");
- GetDlgItem(IDC_EDIT8).SetWindowTextA("");
- GetDlgItem(IDC_STATIC1).ShowWindow(SW_HIDE);
- GetDlgItem(IDC_STATIC2).ShowWindow(SW_HIDE);
- GetDlgItem(IDC_STATIC3).ShowWindow(SW_HIDE);
- GetDlgItem(IDC_STATIC4).ShowWindow(SW_HIDE);
- GetDlgItem(IDC_STATIC5).ShowWindow(SW_HIDE);
- GetDlgItem(IDC_STATIC6).ShowWindow(SW_HIDE);
- GetDlgItem(IDC_STATIC7).ShowWindow(SW_HIDE);
- GetDlgItem(IDC_STATIC8).ShowWindow(SW_HIDE);
- GetDlgItem(IDC_STATIC9).ShowWindow(SW_HIDE);
- GetDlgItem(IDC_COMBO1).ShowWindow(SW_HIDE);
- GetDlgItem(IDC_EDIT2).ShowWindow(SW_HIDE);
- GetDlgItem(IDC_EDIT3).ShowWindow(SW_HIDE);
- GetDlgItem(IDC_EDIT4).ShowWindow(SW_HIDE);
- GetDlgItem(IDC_EDIT5).ShowWindow(SW_HIDE);
- GetDlgItem(IDC_EDIT6).ShowWindow(SW_HIDE);
- GetDlgItem(IDC_EDIT7).ShowWindow(SW_HIDE);
- GetDlgItem(IDC_EDIT8).ShowWindow(SW_HIDE);
- GetDlgItem(IDC_COMMITRESULT).ShowWindow(SW_HIDE);
- GetDlgItem(IDC_CANCELCHECK).ShowWindow(SW_HIDE);
- CComboBox cbBox =(CComboBox) GetDlgItem(IDC_COMBO1);
- cbBox.SetCurSel(0);
- }
- void CControlView::OutputMsg(const char *pMsg)
- {
- ::PostMessage(GetTopLevelParent().m_hWnd, WM_SHOW_MSG, 0, (LPARAM) strdup(pMsg));
- }
- LRESULT CHighLevelView::OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam)
- {
- return 0;
- }
- // 手工升级
- void CHighLevelView::OnManualUpgrade(UINT /*uNotifyCode*/, int /*nID*/, CWindow /*wnd*/)
- {
- // 选择升级文件
- CFileDialog dlg(TRUE, ".zip", NULL, OFN_READONLY, "zip files\0*.zip\0all files\0*.*\0");
- if (dlg.DoModal() == IDOK)
- {
- CSimpleStringA strPackPath = dlg.m_szFileName;
- if (!strPackPath.IsEndWith(".zip"))
- {
- OutputMsg("升级包必须为zip压缩包\r\n");
- return;
- }
- CSimpleStringA strPackName = strrchr(strPackPath, '\\') +1;
- auto pEntity = m_pGUITask->GetEntity();
- auto pFunc = pEntity->GetFunction();
- CSimpleStringA strDownloadPath;
- pFunc->GetPath("Downloads", strDownloadPath);
- if (!strPackPath.IsStartWith(strDownloadPath))
- {
- strDownloadPath += strrchr(strPackPath, '\\');
- if (CopyFileA(strPackPath, strDownloadPath, FALSE))
- OutputMsg(CSimpleStringA::Format("拷贝升级包{%s}到下载目录成功\r\n", (const char*)strPackName));
- else
- {
- OutputMsg(CSimpleStringA::Format("拷贝升级包{%s}到下载目录失败\r\n", (const char*)strPackName));
- return;
- }
- }
- // 调用升级实体手工升级
- UpgradeMgrService_ClientBase *pClient = new UpgradeMgrService_ClientBase(pEntity);
- auto rc = pClient->Connect();
- if (rc == Error_Succeed)
- {
- UpgradeMgrService_RegistLocalPack_Req req = {};
- UpgradeMgrService_RegistLocalPack_Ans ans = {};
- req.strPackFile = strPackName;
- rc = (*pClient)(EntityResource::getLink().upgradeLink())->RegistLocalPack(req, ans, 10000);
- if (rc == Error_Succeed)
- OutputMsg(CSimpleStringA::Format("手工注册升级包{%s}成功\r\n", (const char*)strPackName));
- else
- OutputMsg(CSimpleStringA::Format("手工注册升级包{%s}失败: 0x%X\r\n", (const char*)strPackName, rc));
- pClient->GetFunction()->CloseSession();
- }
- else
- {
- OutputMsg(CSimpleStringA::Format("连接升级实体失败: 0x%X\r\n", rc));
- pClient->SafeDelete();
- }
-
- }
- }
- // 设置调试级别
- void CHighLevelView::OnSetDebugLevel(UINT /*uNotifyCode*/, int /*nID*/, CWindow /*wnd*/)
- {
- auto pEntity = m_pGUITask->GetEntity();
- auto pPrevFunc = pEntity->GetFunction()->GetPrivilegeFunction();
- if (pPrevFunc == NULL)
- {
- OutputMsg("获取IEntityFunctionPrivilege接口失败\r\n");
- return;
- }
- pPrevFunc->SetSysDebugLevel("SpShell", Debug_Middle, false);
- OutputMsg("设置框架调试级别成功\r\n");
- }
- // 恢复调试级别
- void CHighLevelView::OnResetDebugLevel(UINT /*uNotifyCode*/, int /*nID*/, CWindow /*wnd*/)
- {
- auto pEntity = m_pGUITask->GetEntity();
- auto pPrevFunc = pEntity->GetFunction()->GetPrivilegeFunction();
- if (pPrevFunc == NULL)
- {
- OutputMsg("获取IEntityFunctionPrivilege接口失败\r\n");
- return;
- }
- pPrevFunc->SetSysDebugLevel("SpShell", Debug_None, false);
- OutputMsg("恢复框架调试级别成功\r\n");
- }
- void CControlView::OnPrintConfig(UINT, int, CWindow)
- {
- char curPath[1024];
- if (!getRvcInitDir(curPath))
- return;
- strcat(curPath, "\\RvcInit\\OtherTools\\printInstall\\PrintInstall.exe");
- STARTUPINFO si = { sizeof(si) };
- PROCESS_INFORMATION pi;
- si.dwFlags = STARTF_USESHOWWINDOW;
- si.wShowWindow = TRUE; //TRUE表示显示创建的进程的窗口
- if (FALSE == ::CreateProcess(NULL, curPath, NULL, NULL, FALSE, CREATE_NEW_CONSOLE, NULL, NULL, &si, &pi))
- {
- char errMsg[1024];
- sprintf(errMsg, "打开%s失败!", curPath);
- MessageBoxA(errMsg);
- }
- }
- void CControlView::OnCameraConfig(UINT, int, CWindow)
- {
- char curPath[1024];
- if (!getRvcInitDir(curPath))
- return;
- strcat(curPath, "\\RvcInit\\OtherTools\\cameraInstall\\CameraInstall.exe");
- STARTUPINFO si = { sizeof(si) };
- PROCESS_INFORMATION pi;
- si.dwFlags = STARTF_USESHOWWINDOW;
- si.wShowWindow = TRUE; //TRUE表示显示创建的进程的窗口
- if (FALSE == ::CreateProcess(NULL, curPath, NULL, NULL, FALSE, CREATE_NEW_CONSOLE, NULL, NULL, &si, &pi))
- {
- char errMsg[1024];
- sprintf(errMsg, "打开%s失败!", curPath);
- MessageBoxA(errMsg);
- }
- }
- // 框架版本导回
- void CHighLevelView::OnRollbackUpgrade(UINT /*uNotifyCode*/, int /*nID*/, CWindow /*wnd*/)
- {
- if (MessageBoxA("你确定要回滚框架版本至前一版本不?", "确认", MB_OKCANCEL) != IDOK)
- return;
- auto pEntity = m_pGUITask->GetEntity();
- auto pPrevFunc = pEntity->GetFunction()->GetPrivilegeFunction();
- if (pPrevFunc == NULL)
- {
- OutputMsg("获取IEntityFunctionPrivilege接口失败\r\n");
- return;
- }
- auto rc = pPrevFunc->RollBackToPreviousVersion();
- if (rc == Error_Succeed)
- OutputMsg("导回框架版本成功,重启框架后生效\r\n");
- else
- OutputMsg(CSimpleStringA::Format("导回框架版本失败: 0x%X\r\n", rc));
- }
- // 终端注销
- void CHighLevelView::OnUnregTerminal(UINT /*uNotifyCode*/, int /*nID*/, CWindow /*wnd*/)
- {
- if (MessageBoxA("你确定要注销此终端吗?终端注销后,此终端将无法准入,不能进行联机处理!", "确认", MB_OKCANCEL) != IDOK)
- return;
- auto pEntity = m_pGUITask->GetEntity();
- // 先退出准入
- AccessAuthService_ClientBase *pClient = new AccessAuthService_ClientBase(pEntity);
- auto rc = pClient->Connect();
- if (rc == Error_Succeed)
- {
- AccessAuthService_Unregist_Info info = {};
- info.nWay = 0;
- info.nReason = 4;
- rc = (*pClient)(EntityResource::getLink().upgradeLink())->Unregist(info);
- if (rc == Error_Succeed)
- {
- // 通知健康实体注销终端
- LogEvent(Severity_Middle, EVENT_CONSOLE_REQ_UNREG_TERMINAL, "终端注销成功");
- }
- else
- {
- OutputMsg(CSimpleStringA::Format("终端准入退出失败: 0x%X\r\n", rc));
- }
- pClient->GetFunction()->CloseSession();
- }
- else
- {
- OutputMsg(CSimpleStringA::Format("连接准入实体失败: 0x%X\r\n", rc));
- pClient->SafeDelete();
- }
-
- }
- // 修改登记信息
- void CHighLevelView::OnModifyEnrollInfo(UINT /*uNotifyCode*/, int /*nID*/, CWindow /*wnd*/)
- {
- GetDlgItem(IDC_GROUPINFO).ShowWindow(SW_SHOW);
- GetDlgItem(IDC_LABELGPS).ShowWindow(SW_SHOW);
- GetDlgItem(IDC_LABELADDR).ShowWindow(SW_SHOW);
- GetDlgItem(IDC_EDITGPS).ShowWindow(SW_SHOW);
- GetDlgItem(IDC_EDITADDR).ShowWindow(SW_SHOW);
- GetDlgItem(IDC_MODENROLLINFO2).ShowWindow(SW_SHOW);
- GetDlgItem(IDC_MODENROLLINFO3).ShowWindow(SW_SHOW);
- // 取Root.ini信息
- auto pFunc = m_pGUITask->GetEntity()->GetFunction();
- CSmartPointer<IConfigInfo> pConfig;
- auto rc = pFunc->OpenConfig(Config_Root, pConfig);
- if (rc != Error_Succeed)
- {
- OutputMsg("读取硬件配置失败\r\n");
- return;
- }
- CSimpleStringA strValue;
- pConfig->ReadConfigValue("Terminal", "EnrolGPS", strValue);
- if (strValue.GetLength() >0)
- GetDlgItem(IDC_EDITGPS).SetWindowTextA(strValue);
- pConfig->ReadConfigValue("Terminal", "EnrolAddr", strValue);
- if (strValue.GetLength() >0)
- GetDlgItem(IDC_EDITADDR).SetWindowTextA(strValue);
- }
- // 修改登记信息2
- void CHighLevelView::OnModifyEnrollInfo2(UINT /*uNotifyCode*/, int nID, CWindow /*wnd*/)
- {
- GetDlgItem(IDC_GROUPINFO).ShowWindow(SW_HIDE);
- GetDlgItem(IDC_LABELGPS).ShowWindow(SW_HIDE);
- GetDlgItem(IDC_LABELADDR).ShowWindow(SW_HIDE);
- GetDlgItem(IDC_EDITGPS).ShowWindow(SW_HIDE);
- GetDlgItem(IDC_EDITADDR).ShowWindow(SW_HIDE);
- GetDlgItem(IDC_MODENROLLINFO2).ShowWindow(SW_HIDE);
- GetDlgItem(IDC_MODENROLLINFO3).ShowWindow(SW_HIDE);
- if (nID != IDC_MODENROLLINFO2)
- return;
- char szAddr[256] = {};
- char szGPS[64] = {};
- GetDlgItem(IDC_EDITGPS).GetWindowTextA(szGPS, sizeof(szGPS));
- GetDlgItem(IDC_EDITADDR).GetWindowTextA(szAddr, sizeof(szAddr));
- // 检查GPS值是否合法
- float f1 = 0;
- float f2 = 0;
- int nRet = sscanf(szGPS, "%f,%f", &f1, &f2);
- if (nRet != 2)
- {
- OutputMsg(CSimpleStringA::Format("GPS座标值无效: {%s}\r\n", szGPS));
- return;
- }
- OutputMsg("开始修改登记信息\r\n");
- auto pEntity = m_pGUITask->GetEntity();
- auto pFunc = pEntity->GetFunction();
- // 修改Root.ini
- CSimpleStringA strRootPath;
- pFunc->GetPath("HardwareCfg", strRootPath);
- strRootPath += "\\root.ini";
- inifile_write_str(strRootPath, "Terminal", "EnrolAddr", szAddr);
- inifile_format_write(strRootPath, "Terminal", "EnrolGPS", "\"%s\"", szGPS);
- // 发送到中台
- CMaterialMgrCnn *pCnn = new CMaterialMgrCnn(pEntity);
- if (pCnn->ConnectFromCentralSetting() && pCnn->IsConnectionOK())
- {
- if (pCnn->ModifyEnrolInfo(NULL, NULL, szAddr, szGPS) != Error_Succeed)
- OutputMsg("发送终端部署信息修改请求包失败\r\n");
- else
- OutputMsg("发送终端部署信息修改请求包成功\r\n");
- pCnn->Close();
- }
- else
- OutputMsg("连接物料管理服务失败\r\n");
- pCnn->DecRefCount();
- pCnn = NULL;
- }
- // 启动操作系统Shell
- void CHighLevelView::OnStartOSShell(UINT /*uNotifyCode*/, int nID, CWindow /*wnd*/)
- {
- OutputMsg("启动操作系统Shell\r\n");
- }
- void CHighLevelView::OutputMsg(const char *pMsg)
- {
- ::PostMessage(GetTopLevelParent().m_hWnd, WM_SHOW_MSG, 0, (LPARAM) strdup(pMsg));
- }
- BOOL CMainFrame::PreTranslateMessage( MSG* pMsg )
- {
- if (WM_CHECK_SYSINIT_FAIL == pMsg->message)
- {
- if (FALSE == m_sysInitView.getPageShow())
- {
- m_tabView.AddPage(m_sysInitView, "操作系统定制");
- m_sysInitView.SetPageShow(TRUE);
- }
- m_cansysInitRm = FALSE;
- }
- else if (WM_CHECK_SYSINIT_SUCCESS == pMsg->message)
- m_cansysInitRm = TRUE;
- return CFrameWindowImpl<CMainFrame>::PreTranslateMessage(pMsg);
- }
- BOOL CMainFrame::OnIdle()
- {
- // 控制Toolbar显示
- if (m_tabView.GetActivePage() == 0)
- {
- ::ShowWindow(m_hWndToolBar, SW_SHOWNOACTIVATE);
- UpdateLayout();
- if (m_iSelectIdx != -1)
- {
- EntityEntry e = {};
- auto rc = m_pConsole->GetEntity(GetSelectedEntityName(), e);
- if (rc == Error_Succeed)
- {
- if (e.State == EntityState_NoStart || e.State == EntityState_Close || e.State == EntityState_Killed)
- UIEnable(ID_START, TRUE);
- else
- UIEnable(ID_START, FALSE);
- if (e.State >= EntityState_Idle && e.State <= EntityState_Pause)
- UIEnable(ID_STOP, TRUE);
- else
- UIEnable(ID_STOP, FALSE);
- if (e.State >= EntityState_Idle && e.State <= EntityState_Busy)
- UIEnable(ID_PAUSE, TRUE);
- else
- UIEnable(ID_PAUSE, FALSE);
- if (e.State == EntityState_Pause)
- UIEnable(ID_CONTINUE, TRUE);
- else
- UIEnable(ID_CONTINUE, FALSE);
- if (e.State >= EntityState_Starting && e.State <= EntityState_Close)
- UIEnable(ID_KILL, TRUE);
- else
- UIEnable(ID_KILL, FALSE);
- UIUpdateToolBar();
- return FALSE;
- }
- }
- UIEnable(ID_START, FALSE);
- UIEnable(ID_STOP, FALSE);
- UIEnable(ID_PAUSE, FALSE);
- UIEnable(ID_CONTINUE, FALSE);
- UIEnable(ID_KILL, FALSE);
- UIUpdateToolBar();
- return FALSE;
- }
- else
- {
- ::ShowWindow(m_hWndToolBar, SW_HIDE);
- UpdateLayout();
- return FALSE;
- }
- }
- int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
- {
- CreateSimpleToolBar();
- UIAddToolBar(m_hWndToolBar);
- //CreateSimpleStatusBar();
- m_hWndStatusBar = m_status.Create(m_hWnd, rcDefault, NULL, WS_VISIBLE|WS_CHILD);
- int _parts[] = {400, -1};
- m_status.SetParts(sizeof(_parts)/sizeof(_parts[0]), _parts);
- RECT rc;
- m_status.GetRect(0, &rc);
- m_cmd.SetOwner(this);
- m_cmd.Create(m_hWndStatusBar, &rc, NULL, WS_CHILD|WS_VISIBLE | ES_AUTOHSCROLL | ES_LEFT, WS_EX_STATICEDGE);
- m_status.GetRect(1, &rc);
- m_progressbar.Create(m_hWndStatusBar, &rc, NULL, WS_VISIBLE|WS_CHILD);
- m_progressbar.SetRange(0, 100);
- m_progressbar.SetStep(1);
- m_progressbar.SetPos(0);
-
- m_hWndClient = m_splitter.Create(m_hWnd, rcDefault, NULL, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN);
- UpdateLayout();
- // output
- m_output.Create(m_splitter, rcDefault, NULL,
- WS_CHILD|WS_VISIBLE|ES_AUTOVSCROLL|ES_LEFT|ES_MULTILINE|WS_VSCROLL, WS_EX_STATICEDGE);
- m_output_font.CreateFont(12,0,0,0,FALSE,FALSE,FALSE,0,DEFAULT_CHARSET,
- OUT_CHARACTER_PRECIS, CLIP_CHARACTER_PRECIS,DEFAULT_QUALITY, DEFAULT_PITCH,NULL);
- m_output.SetFont(m_output_font);
- m_wndOutput.SubclassWindow(m_output.m_hWnd);
-
- CRect rect;
- GetClientRect(rect);
- m_splitter.SetSplitterPos(rect.Height()*3/5);
-
- // TabView
- m_tabView.Create(m_splitter, rcDefault, NULL, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN, WS_EX_CLIENTEDGE);
- //m_tabView.SetTitleBarWindow(m_hWnd);
-
- m_splitter.SetSplitterPanes(m_tabView, m_output);
-
- m_verticalSplitter.Create(m_tabView, rcDefault, NULL, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN);
- m_tabView.AddPage(m_verticalSplitter, "实体状态");
- m_tabView.SetActivePage(0);
- m_sysInitView.Create(m_tabView, rcDefault);
-
- m_left_list.Create(m_verticalSplitter, rcDefault, NULL,
- WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN |
- LVS_REPORT | LVS_AUTOARRANGE | LVS_SHOWSELALWAYS | LVS_SINGLESEL, 0, IDC_LIST1);
- m_left_list.SetExtendedListViewStyle(LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT, 0);
- m_right_list.Create(m_verticalSplitter, rcDefault, NULL,
- WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN |
- LVS_REPORT | LVS_AUTOARRANGE | LVS_SHOWSELALWAYS | LVS_SINGLESEL, 0, IDC_LIST2);
- m_right_list.SetExtendedListViewStyle(LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT, 0);
- m_verticalSplitter.SetSplitterPos((rect.Width()-10)/2);
- m_verticalSplitter.SetSplitterPanes(m_left_list, m_right_list);
-
- LVCOLUMN col = {0};
- col.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT;
- col.fmt = LVCFMT_LEFT;
- col.cx = 3*rect.Width() / 10-20;
- col.pszText = _T("entity");
- m_left_list.InsertColumn(0, &col);
- m_right_list.InsertColumn(0, &col);
- col.pszText = _T("type");
- col.cx = 3*rect.Width() / 40-1;
- m_left_list.InsertColumn(1, &col);
- m_right_list.InsertColumn(1, &col);
- col.pszText = _T("state");
- col.cx = 3*rect.Width() / 40-1;
- m_left_list.InsertColumn(2, &col);
- m_right_list.InsertColumn(2, &col);
- col.pszText = _T("pid");
- col.cx = rect.Width() / 20-1;
- m_left_list.InsertColumn(3, &col);
- m_right_list.InsertColumn(3, &col);
-
- CMessageLoop* pLoop = _Module.GetMessageLoop();
- pLoop->AddMessageFilter(this);
- pLoop->AddIdleHandler(this);
- // load all entity
- CAutoArray<EntityEntry> Entities;
- m_pConsole->GetAllEntity(Entities);
- // order by entity name
- int arrOrderIndex[255] = {};
- for(int i=0; i<Entities.GetCount(); i++)
- {
- int nIndex = 0;
- for(int j=0; j<i; j++)
- {
- if (Entities[j].Name .Compare(Entities[i].Name) < 0)
- nIndex++;
- else
- arrOrderIndex[j]++;
- }
- arrOrderIndex[i] = nIndex;
- }
- for (int i = 0; i < Entities.GetCount(); ++i)
- {
- int nIndex = 0;
- for(; nIndex<Entities.GetCount(); nIndex++)
- {
- if (arrOrderIndex[nIndex] == i)
- break;
- }
- LoadEntity(i, Entities[nIndex], Entities.GetCount());
- }
- // load start menu items
- #if _DEBUG
- CAutoArray<StartMenuEntry> StartMenus;
- ErrorCodeEnum Error = m_pConsole->GetCustomizeStartMenuList(StartMenus);
- if (Error == Error_Succeed && StartMenus.GetCount() > 0) {
- CMenuHandle menuMain = GetMenu();
-
- int i;
- CMenuHandle menuStartList = menuMain.GetSubMenu(2);
-
- if (menuStartList == NULL) {
- menuStartList.CreatePopupMenu();
- menuMain.AppendMenuA(MF_BYPOSITION, menuStartList, "&StartEntity");
- }
- for (i = 0; i < StartMenus.GetCount(); ++i) {
- char content[512];
- if (i < 9) {
- wsprintfA(content, "%s %s\tctrl+%d", (LPCSTR)StartMenus[i].strEntity, (LPCSTR)StartMenus[i].strCmdLine, i+1);
- } else {
- wsprintfA(content, "%s %s", (LPCSTR)StartMenus[i].strEntity, (LPCSTR)StartMenus[i].strCmdLine);
- }
- menuStartList.AppendMenuA(MF_STRING, ID_STARTMENU_BEGIN+i, content);
- }
- }
- #endif
- ::AtlLoadAccelerators(MAKEINTRESOURCE(IDR_MAINFRAME));
-
- m_pConsole->SubscribeLog();
- // 标题显示版本和终端号
- CSimpleStringA strInfo;
- auto nRet = m_pConsole->GetFrameworkInfo(strInfo);
- if (nRet == Error_Succeed)
- {
- char szBuf[256] = {};
- GetWindowText(szBuf, 255);
- SetWindowText(CSimpleStringA::Format("%s - %s", szBuf, strInfo));
- }
- CenterWindow();
- return 0;
- }
- void CMainFrame::OnSysCommand(UINT nID, CPoint point)
- {
- if (nID == SC_CLOSE || nID == SC_MINIMIZE)
- {
- SetMsgHandled(TRUE);
- // bring back window
- //SetWindowPos(HWND_BOTTOM, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
- ShowWindow(SW_MINIMIZE);
- }
- else
- SetMsgHandled(FALSE);
- }
- //LRESULT CMainFrame::OnClose(UINT uMsg, WPARAM wParam, LPARAM lParam)
- //{
- // if (wParam != -1 || lParam != -1) {
- // //output_printf("cannot close self!\r\n");
- // ShowWindow(SW_MINIMIZE);
- // } else {
- // SetMsgHandled(FALSE);
- // }
- // return 0;
- //}
- int CMainFrame::FindEntitylistItemIndex(int entity_id)
- {
- int i;
- for (i = 0; i < m_left_list.GetItemCount(); ++i) {
- int id = ((int)m_left_list.GetItemData(i)) >> 16;
- if (id == entity_id)
- return i*2;
- }
- for (i = 0; i < m_right_list.GetItemCount(); ++i) {
- int id = ((int)m_right_list.GetItemData(i)) >> 16;
- if (id == entity_id)
- return i*2+1;
- }
- return -1;
- }
- int CMainFrame::FindEntitylistItemIndex(const char *entity_name)
- {
- int i;
- for (i = 0; i < m_left_list.GetItemCount(); ++i) {
- char str[128];
- m_left_list.GetItemText(i, 0, str, sizeof(str));
- char *p = strchr(str, ':');
- if (p)
- *p = 0;
- if (_stricmp(entity_name, str) == 0)
- return i*2;
- }
- for (i = 0; i < m_right_list.GetItemCount(); ++i) {
- char str[128];
- m_right_list.GetItemText(i, 0, str, sizeof(str));
- char *p = strchr(str, ':');
- if (p)
- *p = 0;
- if (_stricmp(entity_name, str) == 0)
- return i*2+1;
- }
- return -1;
- }
- void CMainFrame::SetEntityState(int entity_id, int state, int pid)
- {
- int idx = FindEntitylistItemIndex(entity_id);
- if (idx != -1) {
- char tmp[16];
- wsprintfA(tmp, "%d", pid);
- if (idx & 1) {
- m_right_list.SetItem((idx-1)/2, 2, LVIF_TEXT, (LPCSTR)EntityEntry::GetStateName(state), 0, 0, 0, NULL);
- m_right_list.SetItem((idx-1)/2, 3, LVIF_TEXT, tmp, 0, 0, 0, NULL);
- } else {
- m_left_list.SetItem(idx/2, 2, LVIF_TEXT, (LPCSTR)EntityEntry::GetStateName(state), 0, 0, 0, NULL);
- m_left_list.SetItem(idx/2, 3, LVIF_TEXT, tmp, 0, 0, 0, NULL);
- }
- }
- }
- void CMainFrame::SetEntityState(const char *entity_name, int state, int pid)
- {
- int idx = FindEntitylistItemIndex(entity_name);
- if (idx != -1) {
- char tmp[16];
- wsprintfA(tmp, "%d", pid);
- if (idx & 1) {
- m_right_list.SetItem((idx-1)/2, 2, LVIF_TEXT, (LPCSTR)EntityEntry::GetStateName(state), 0, 0, 0, NULL);
- m_right_list.SetItem((idx-1)/2, 3, LVIF_TEXT, tmp, 0, 0, 0, NULL);
- } else {
- m_left_list.SetItem(idx/2, 2, LVIF_TEXT, (LPCSTR)EntityEntry::GetStateName(state), 0, 0, 0, NULL);
- m_left_list.SetItem(idx/2, 3, LVIF_TEXT, tmp, 0, 0, 0, NULL);
- }
- }
- }
- void CMainFrame::LoadEntity( int nIndex, EntityEntry &e, int nTotal)
- {
- char tmp[16];
- wsprintfA(tmp, "%d", e.Pid);
- CSimpleStringA strName = CSimpleStringA::Format("%s:%s", (LPCSTR)e.Name, (LPCSTR)e.ModuleName);
- //if (idx & 1) {
- if (nIndex >= (nTotal+1)/2) {
- //idx = (idx-1)/2;
- nIndex = nIndex - (nTotal+1)/2;
- m_right_list.InsertItem(LVIF_PARAM|LVIF_TEXT, nIndex, (LPCSTR)strName, 0, 0, 0, (e.Id & 0xFFFF) << 16 | (e.DebugLevel & 0xFFFF));
- m_right_list.AddItem(nIndex, 1, (LPCSTR)EntityEntry::GetTypeName(e.Type));
- m_right_list.AddItem(nIndex, 2, (LPCSTR)EntityEntry::GetStateName(e.State));
- m_right_list.AddItem(nIndex, 3, tmp);
- } else {
- //idx = idx / 2;
- m_left_list.InsertItem(LVIF_PARAM|LVIF_TEXT, nIndex, (LPCSTR)strName, 0, 0, 0, (e.Id & 0xFFFF) << 16 | (e.DebugLevel & 0xFFFF));
- m_left_list.AddItem(nIndex, 1, (LPCSTR)EntityEntry::GetTypeName(e.Type));
- m_left_list.AddItem(nIndex, 2, (LPCSTR)EntityEntry::GetStateName(e.State));
- m_left_list.AddItem(nIndex, 3, tmp);
- }
- }
- void CMainFrame::OnStartEntityFinished(ErrorCodeEnum ErrorResult, const char *entity_name, void *pData)
- {
- if (ErrorResult == Error_Succeed) {
- output_printf("start %s entity ok!\r\n", entity_name);
-
- } else {
- output_printf("start %s entity failed! Error = 0x%08X \r\n", entity_name, ErrorResult);
- }
- m_bOperationPending = FALSE;
- KillTimer(0);
- m_progressbar.SetPos(0);
- }
- void CMainFrame::OnStopEntityFinished(ErrorCodeEnum ErrorResult, const char *entity_name, void *pData)
- {
- if (ErrorResult == Error_Succeed) {
- output_printf("stop %s entity ok!\r\n", entity_name);
- } else {
- output_printf("stop %s entity failed! Error = 0x%08X\r\n", entity_name, ErrorResult);
- }
- m_bOperationPending = FALSE;
- KillTimer(0);
- m_progressbar.SetPos(0);
- }
- void CMainFrame::OnPauseEntityFinished(ErrorCodeEnum ErrorResult, const char *entity_name, void *pData)
- {
- if (ErrorResult == Error_Succeed) {
- output_printf("pause %s entity ok!\r\n", entity_name);
- } else {
- output_printf("pause %s entity failed! Error = 0x%08X\r\n", entity_name, ErrorResult);
- }
- m_bOperationPending = FALSE;
- KillTimer(0);
- m_progressbar.SetPos(0);
- }
- void CMainFrame::OnContinueEntityFinished(ErrorCodeEnum ErrorResult, const char *entity_name, void *pData)
- {
- if (ErrorResult == Error_Succeed) {
- output_printf("continue %s entity ok!\r\n", entity_name);
- } else {
- output_printf("continue %s entity failed! Error = 0x%08X\r\n", entity_name, ErrorResult);
- }
- m_bOperationPending = FALSE;
- KillTimer(0);
- m_progressbar.SetPos(0);
- }
- void CMainFrame::OnTerminateEntityFinished(ErrorCodeEnum ErrorResult, const char *entity_name, void *pData)
- {
- if (ErrorResult == Error_Succeed) {
- output_printf("terminate %s entity ok!\r\n", entity_name);
- } else {
- output_printf("terminate %s entity failed! Error = 0x%08X\r\n", entity_name, ErrorResult);
- }
- m_bOperationPending = FALSE;
- KillTimer(0);
- m_progressbar.SetPos(0);
- }
- void CMainFrame::OnEntityStateChanged(const char *entity_name, int new_state, int pid)
- {
- SetEntityState(entity_name, new_state, pid);
- }
- #define PREFIX_LEN 15
- // [16:13:23.123]
- void CMainFrame::output_printf(const char *fmt, ...)
- {
- int len;
- va_list arg;
- va_start(arg, fmt);
- len = _vscprintf(fmt, arg);
- if (len > 0) {
- SYSTEMTIME st;
- char *buf;
- GetLocalTime(&st);
- buf = (char*)malloc(PREFIX_LEN + len+1);
- sprintf(buf, "[%02d:%02d:%02d.%03d] ", st.wHour, st.wMinute, st.wSecond, st.wMilliseconds);
- vsprintf(buf+PREFIX_LEN, fmt, arg);
- m_strOuput += buf;
- m_nLineCount++;
- // 检测最大长度
- CheckOutputMaxLen();
-
- if (!m_bVScrolling)
- {
- m_output.SetWindowText(m_strOuput);
-
- //m_output.SetFocus();
- //m_output.ShowCaret();
- m_output.SetSel(m_strOuput.GetLength(), m_strOuput.GetLength());
- m_output.LineScroll(-1);
- }
-
- free(buf);
- }
- va_end(arg);
- }
- void CMainFrame::CheckOutputMaxLen()
- {
- if (m_nLineCount > 200)
- {
- int count = 0;
- int index = 0;
- while(count < 50 && index < m_strOuput.GetLength())
- {
- index = m_strOuput.Find("\r\n", index);
- if (index == -1)
- break;
- index += 2;
- count++;
- }
- if (index >0 && index < m_strOuput.GetLength())
- {
- m_strOuput.Delete(0, index);
- m_nLineCount -= count;
- }
- else
- {
- m_strOuput = "";
- m_nLineCount = 0;
- }
- }
- }
- #undef PREFIX_LEN
- LRESULT CMainFrame::OnShowMaintainView( UINT uMsg, WPARAM wParam, LPARAM lParam )
- {
- int nPageCount = m_tabView.GetPageCount();
- bool bShowView = wParam == 1;
- bool bHighLevel = lParam == 1;
- int nCurPageIndex = m_tabView.GetActivePage();
- int extendPage = m_sysInitView.getPageShow() ? 1 : 0;
- if (!bShowView)
- {
- while (nPageCount > 1 + (m_cansysInitRm ? 0 : extendPage))
- {
- m_tabView.RemovePage(--nPageCount);
- }
- if (m_cansysInitRm)
- {
- m_sysInitView.SetPageShow(FALSE);
- }
- }
- else
- {
- if (nPageCount == 1 + extendPage)
- {
- if (FALSE == m_sysInitView.getPageShow())
- {
- static BOOL firstTime = TRUE;
- if (!firstTime)
- m_sysInitView.Create(m_tabView, rcDefault);
- else
- firstTime = FALSE;
- m_tabView.AddPage(m_sysInitView.m_hWnd, "操作系统定制");
- m_sysInitView.SetPageShow(TRUE);
- }
- m_sysInfoView.Create(m_tabView);
- m_tabView.AddPage(m_sysInfoView.m_hWnd, "信息浏览");
-
- m_controlView.Create(m_tabView);
- m_tabView.AddPage(m_controlView.m_hWnd, "常规维护");
- }
- else if (nPageCount == 3 + extendPage && bHighLevel)
- {
- m_highLevelView.Create(m_tabView);
- m_tabView.AddPage(m_highLevelView.m_hWnd, "高级维护");
- }
- else if (nPageCount == 4 + extendPage && !bHighLevel)
- {
- m_tabView.RemovePage(4);
- }
- }
- if (nCurPageIndex <m_tabView.GetPageCount())
- m_tabView.SetActivePage(nCurPageIndex);
- return 0;
- }
- LRESULT CMainFrame::OnShowBeginInitView( UINT uMsg, WPARAM wParam, LPARAM lParam )
- {
- bool bShowView = wParam == 1;
-
- //初始化按钮显示,add by zl 20170227
- CMenuHandle menuMain = GetMenu();
- if (bShowView)
- {
- menuMain.EnableMenuItem(ID_FILE_INITIALIZE, MF_ENABLED);
- }
- else
- {
- menuMain.EnableMenuItem(ID_FILE_INITIALIZE, MF_GRAYED);
- }
- return 0;
- }
- LRESULT CMainFrame::OnShowMobileDialView( UINT uMsg, WPARAM wParam, LPARAM lParam )
- {
- bool bShowView = wParam == 1;
- CMenuHandle menuMain = GetMenu();
- if (bShowView) {
- menuMain.EnableMenuItem(ID_SETTINGS_DIAL, MF_ENABLED);
- }
- else {
- menuMain.EnableMenuItem(ID_SETTINGS_DIAL, MF_GRAYED);
- }
- return 0;
- }
- LRESULT CMainFrame::OnShowMsg( UINT uMsg, WPARAM wParam, LPARAM lParam )
- {
- char *pMsg = (char*)lParam;
- output_printf(pMsg);
- delete pMsg;
- return 0;
- }
- LRESULT CMainFrame::OnGuiConsole( UINT uMsg, WPARAM wParam, LPARAM lParam )
- {
- callback_entry *entry = static_cast<callback_entry*>((void*)lParam);
- LOG_ASSERT(entry);
- switch (entry->op) {
- case OP_START_ENTITY:
- OnStartEntityFinished(entry->ErrorResult, entry->EntityName, entry->pRawData);
- break;
- case OP_STOP_ENTITY:
- OnStopEntityFinished(entry->ErrorResult, entry->EntityName, entry->pRawData);
- break;
- case OP_PAUSE_ENTITY:
- OnPauseEntityFinished(entry->ErrorResult, entry->EntityName, entry->pRawData);
- break;
- case OP_CONTINUE_ENTITY:
- OnContinueEntityFinished(entry->ErrorResult, entry->EntityName, entry->pRawData);
- break;
- case OP_TERMINATE_ENTITY:
- OnTerminateEntityFinished(entry->ErrorResult, entry->EntityName, entry->pRawData);
- break;
- case OP_FIRE_ENTITY_STATE:
- OnEntityStateChanged(entry->EntityName, entry->state, wParam);
- break;
- default:
- LOG_ASSERT(0);
- break;
- }
- delete entry;
- return 0;
- }
- LRESULT CMainFrame::OnListLeftItemchanged(NMHDR* phdr)
- {
- NMLISTVIEW* pnmlv = (NMLISTVIEW*) phdr;
- m_iSelectIdx = m_left_list.GetSelectedIndex();
- if (m_iSelectIdx != -1) {
- m_iSelectIdx = m_iSelectIdx * 2;
- }
- return 0;
- }
- LRESULT CMainFrame::OnListRightItemchanged(NMHDR* phdr)
- {
- NMLISTVIEW* pnmlv = (NMLISTVIEW*) phdr;
- m_iSelectIdx = m_right_list.GetSelectedIndex();
- if (m_iSelectIdx != -1) {
- m_iSelectIdx = m_iSelectIdx * 2+1;
- }
- return 0;
- }
- LRESULT CMainFrame::OnListLeftItemclicked(NMHDR* phdr)
- {
- m_iSelectIdx = m_left_list.GetSelectedIndex();
- if (m_iSelectIdx != -1) {
- m_iSelectIdx = m_iSelectIdx * 2;
- }
- return 0;
- }
- LRESULT CMainFrame::OnListRightItemclicked(NMHDR* phdr)
- {
- m_iSelectIdx = m_right_list.GetSelectedIndex();
- if (m_iSelectIdx != -1) {
- m_iSelectIdx = m_iSelectIdx * 2+1;
- }
- return 0;
- }
- void CMainFrame::OnTimer(UINT_PTR nIDEvent)
- {
- if (CSmallDateTime::GetNow() - m_OperationBeginTime >= 5)
- {
- output_printf("last operation timeout!\r\n");
- m_bOperationPending = FALSE;
- KillTimer(0);
- m_progressbar.SetPos(0);
- }
- else
- {
- if (m_bOperationPending)
- {
- m_progressbar.StepIt();
- }
- }
- }
- void CMainFrame::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar pScrollBar)
- {
- m_bVScrolling = (nSBCode != SB_ENDSCROLL);
- if(!m_bVScrolling)
- {
- m_output.SetWindowText(m_strOuput);
- m_output.SetFocus();
- m_output.ShowCaret();
- m_output.SetSel(m_strOuput.GetLength(), m_strOuput.GetLength());
- m_output.LineScroll(-1);
- }
- SetMsgHandled(FALSE);
- }
- int CMainFrame::GetEntityDebugLevel(const char *pszEntity)
- {
- int nIndex = FindEntitylistItemIndex(pszEntity);
- if (nIndex != -1)
- {
- if (nIndex & 1)
- {
- return ((int)m_right_list.GetItemData((nIndex-1)/2)) & 0xFFFF;
- }
- else
- {
- return ((int)m_left_list.GetItemData(nIndex/2)) & 0xFFFF;
- }
- }
- return 0;
- }
- CSimpleStringA CMainFrame::GetSelectedEntityName()
- {
- if (m_iSelectIdx == -1)
- return "";
- char entity_name[80];
- if (m_iSelectIdx & 1)
- {
- m_right_list.GetItemText((m_iSelectIdx-1)/2, 0, entity_name, sizeof(entity_name));
- }
- else
- {
- m_left_list.GetItemText(m_iSelectIdx/2, 0, entity_name, sizeof(entity_name));
- }
- char *p = strchr(entity_name, ':');
- if (p)
- *p=0;
- return entity_name;
- }
- void CMainFrame::OnStart(UINT /*uNotifyCode*/, int /*nID*/, CWindow /*wnd*/)
- {
- if (m_iSelectIdx == -1)
- return;
- if (m_bOperationPending) {
- output_printf("operation is doing now, please wait for a result!\r\n");
- } else {
- StartEntity(GetSelectedEntityName(), NULL);
- }
- }
- void CMainFrame::OnStop(UINT /*uNotifyCode*/, int /*nID*/, CWindow /*wnd*/)
- {
- if (m_iSelectIdx == -1)
- return;
- if (m_bOperationPending) {
- output_printf("operation is doing now, please wait for a result!\r\n");
- } else {
- StopEntity(GetSelectedEntityName());
- }
- }
- void CMainFrame::OnPause(UINT /*uNotifyCode*/, int /*nID*/, CWindow /*wnd*/)
- {
- if (m_iSelectIdx == -1)
- return;
- if (m_bOperationPending) {
- output_printf("operation is doing now, please wait for a result!\r\n");
- } else {
- PauseEntity(GetSelectedEntityName());
- }
- }
- void CMainFrame::OnContinue(UINT /*uNotifyCode*/, int /*nID*/, CWindow /*wnd*/)
- {
- if (m_iSelectIdx == -1)
- return;
- if (m_bOperationPending) {
- output_printf("operation is doing now, please wait for a result!\r\n");
- } else {
- ContinueEntity(GetSelectedEntityName());
- }
- }
- void CMainFrame::OnKill(UINT /*uNotifyCode*/, int /*nID*/, CWindow /*wnd*/)
- {
- if (m_iSelectIdx == -1)
- return;
- if (m_bOperationPending) {
- output_printf("operation is doing now, please wait for a result!\r\n");
- } else {
- TerminateEntity(GetSelectedEntityName());
- }
- }
- void CMainFrame::OnFresh(UINT /*uNotifyCode*/, int /*nID*/, CWindow /*wnd*/)
- {
- CAutoArray<EntityEntry> Entities;
- m_pConsole->GetAllEntity(Entities);
- for (int i = 0; i < Entities.GetCount(); ++i) {
- SetEntityState(Entities[i].Name, Entities[i].State, Entities[i].Pid);
- }
- }
- void CMainFrame::OnAbout(UINT /*uNotifyCode*/, int /*nID*/, CWindow /*wnd*/)
- {
- /*ATL::CSimpleDialog<IDD_ABOUTBOX> dlg;
- dlg.DoModal();*/
- CAboutDlg dlg(m_pConsole);
- dlg.DoModal();
- }
- void CMainFrame::OnInitialize(UINT /*uNotifyCode*/, int /*nID*/, CWindow /*wnd*/)
- {
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("begin initialize...");
- m_pConsole->BeginInitialize();
- }
- void CMainFrame::OnDeleteKeySet(UINT /*uNotifyCode*/, int /*nID*/, CWindow /*wnd*/)
- {
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("delete keyset...");
- m_pConsole->DeleteKeySet();
- }
- void CMainFrame::OnMaintain(UINT /*uNotifyCode*/, int /*nID*/, CWindow /*wnd*/)
- {
- //DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("begin maintain, validate user now");
- CLoginDlg dlg;
- if (dlg.DoModal() == IDOK)
- {
- CMenuHandle menuMain = GetMenu();
- menuMain.EnableMenuItem(ID_FILE_HIGHLEVEL, MF_GRAYED);
- auto pEntity = m_pConsole->GetEntity();
- CMaterialMgrCnn *pCnn = new CMaterialMgrCnn(pEntity);
- if (pCnn->ConnectFromCentralSetting() && pCnn->IsConnectionOK())
- {
- auto rc = pCnn->MaintainerLogin(dlg.m_strUserID, dlg.m_strPassword);
- if (rc == Error_Succeed)
- {
- MessageBoxA("维护用户登录验证通过");
- menuMain.EnableMenuItem(ID_FILE_HIGHLEVEL, MF_ENABLED);
- auto pGUIEntity = (CGUIConsoleEntity*)pEntity;
- pGUIEntity->PostUserLoginEvent(dlg.m_strUserID);
- }
- else
- MessageBoxA(CSimpleStringA::Format("维护用户登录验证失败(0x%X)", rc));
- pCnn->Close();
- }
- else
- MessageBoxA("连接物料管理服务失败");
- pCnn->DecRefCount();
- pCnn = NULL;
- }
- }
- void CMainFrame::OnHighLevel(UINT /*uNotifyCode*/, int /*nID*/, CWindow /*wnd*/)
- {
- auto pEntity = m_pConsole->GetEntity();
- auto pGUIEntity = (CGUIConsoleEntity*)pEntity;
- pGUIEntity->Empower(pGUIEntity->GetCurMaintainer());
- }
- //void CMainFrame::OnReboot(UINT /*uNotifyCode*/, int /*nID*/, CWindow /*wnd*/)
- //{
- // m_pConsole->ReqFrameworkQuit();
- //}
- void CMainFrame::OnShellExit(UINT /*uNotifyCode*/, int /*nID*/, CWindow /*wnd*/)
- {
- m_pConsole->ReqFrameworkQuit(false);
- //ShowWindow(SW_MINIMIZE);
- }
- void CMainFrame::OnOSRestart(UINT /*uNotifyCode*/, int /*nID*/, CWindow /*wnd*/)
- {
- m_pConsole->ReqFrameworkQuit(true);
- //ShowWindow(SW_MINIMIZE);
- }
- void CMainFrame::SetEntityDebugLevel(const char *pszEntity, int nDebugLevel)
- {
- m_pConsole->SetDebugLevel(pszEntity, nDebugLevel);
- }
- void CMainFrame::StartEntity(const char *entity_name, const char *cmdline)
- {
- ErrorCodeEnum Error = m_pConsole->AsyncStartEntity(entity_name, cmdline, NULL);
- if (Error == Error_Succeed) {
- output_printf("starting %s\r\n", entity_name);
- m_bOperationPending = TRUE;
- m_OperationBeginTime = CSmallDateTime::GetNow();
- SetTimer(0, 100, NULL);
- } else {
- output_printf("start %s failed, error = 0x%08X\r\n", entity_name, Error);
- }
- }
- void CMainFrame::StopEntity(const char *entity_name)
- {
- ErrorCodeEnum Error = m_pConsole->AsyncStopEntity(entity_name, NULL);
- if (Error == Error_Succeed) {
- output_printf("stopping %s\r\n", entity_name);
- m_bOperationPending = TRUE;
- m_OperationBeginTime = CSmallDateTime::GetNow();
- SetTimer(0, 100, NULL);
- } else {
- output_printf("stop %s failed, error = 0x%08X\r\n", entity_name, Error);
- }
- }
- void CMainFrame::PauseEntity(const char *entity_name)
- {
- ErrorCodeEnum Error = m_pConsole->AsyncPauseEntity(entity_name, NULL);
- if (Error == Error_Succeed) {
- output_printf("pausing %s\r\n", entity_name);
- m_bOperationPending = TRUE;
- m_OperationBeginTime = CSmallDateTime::GetNow();
- SetTimer(0, 100, NULL);
- } else {
- output_printf("pause %s failed, error = %d\r\n", entity_name, Error);
- }
- }
- void CMainFrame::ContinueEntity(const char *entity_name)
- {
- ErrorCodeEnum Error = m_pConsole->AsyncContinueEntity(entity_name, NULL);
- if (Error == Error_Succeed) {
- output_printf("continuing %s\r\n", entity_name);
- m_bOperationPending = TRUE;
- m_OperationBeginTime = CSmallDateTime::GetNow();
- SetTimer(0, 100, NULL);
- } else {
- output_printf("continue %s failed, error = %d\r\n", entity_name, Error);
- }
- }
- void CMainFrame::TerminateEntity(const char *entity_name)
- {
- ErrorCodeEnum Error = m_pConsole->AsyncTerminateEntity(entity_name, NULL);
- if (Error == Error_Succeed) {
- output_printf("terminating %s\r\n", entity_name);
- m_bOperationPending = TRUE;
- m_OperationBeginTime = CSmallDateTime::GetNow();
- SetTimer(0, 100, NULL);
- } else {
- output_printf("terminate %s failed, error = %d\r\n", entity_name, Error);
- }
- }
- void CMainFrame::OnEditEnter(const char *tmp)
- {
- char entity[128];
- if (_strnicmp(tmp, "start", 5) == 0) { /* start entity */
- const char *p = tmp+5;
- while (*p == ' ') p++;
- if (sscanf(p, "%s", entity) == 1) {
- const char *cmdline = p + strlen(entity);
- while (*cmdline == ' ') cmdline++;
- StartEntity(entity, cmdline);
- } else {
- output_printf("invalid input format!\r\n");
- }
- } else if (_strnicmp(tmp, "stop", 4) == 0) { /* stop entity */
- const char *p = tmp+4;
- while (*p == ' ') p++;
- if (sscanf(p, "%s", entity) == 1) {
- StopEntity(entity);
- } else {
- output_printf("invalid input format!\r\n");
- }
- } else if (_strnicmp(tmp, "pause", 5) == 0) { /* pause entity */
- const char *p = tmp+5;
- while (*p == ' ') p++;
- if (sscanf(p, "%s", entity) == 1) {
- PauseEntity(entity);
- } else {
- output_printf("invalid input format!\r\n");
- }
- } else if (_strnicmp(tmp, "continue", 8) == 0) { /* continue entity */
- const char *p = tmp+8;
- while (*p == ' ') p++;
- if (sscanf(p, "%s", entity) == 1) {
- ContinueEntity(entity);
- } else {
- output_printf("invalid input format!\r\n");
- }
- } else if (_strnicmp(tmp, "terminate", 9) == 0) { /* terminate entity */
- const char *p = tmp+9;
- while (*p == ' ') p++;
- if (sscanf(p, "%s", entity) == 1) {
- TerminateEntity(entity);
- } else {
- output_printf("invalid input format!\r\n");
- }
- } else if (_stricmp(tmp, "help") == 0 || _stricmp(tmp, "?") == 0) {
- Usage();
- }
- else if (_stricmp(tmp, "show console") == 0)
- {
- m_pConsole->ShowOutputConsole();
- }
- else if (_stricmp(tmp, "close console") == 0)
- {
- m_pConsole->CloseOutputConsole();
- }
- m_cmd.SetWindowText(NULL);
- }
- void CMainFrame::Usage()
- {
- output_printf("help -- display help usage\r\n");
- output_printf("start <Entity_Name> [arg1] [arg2] ... [argn] -- start entity with args[optional] \r\n");
- output_printf("stop <Entity_Name> -- stop entity\r\n");
- output_printf("pause <Entity_Name> -- pause entity\r\n");
- output_printf("continue <Entity_Name> -- pause entity\r\n");
- output_printf("terminate <Entity_Name> -- terminate entity\r\n");
- output_printf("show console -- output running info into console\r\n");
- output_printf("close console -- close output console\r\n");
- }
- HBRUSH CMainFrame::OnCtlColorEdit( CDCHandle dc, CEdit edit )
- {
- if (m_output.m_hWnd == edit.m_hWnd)
- {
- dc.SetTextColor(RGB(0, 255, 0));
- dc.SetBkColor(RGB(0,0,0));
- return (HBRUSH)GetStockObject(BLACK_BRUSH);
- } else {
- SetMsgHandled(FALSE);
- return 0;
- }
- }
- HBRUSH CMainFrame::OnCtlColorStatic( CDCHandle dc, CStatic wndStatic )
- {
- if (m_output.m_hWnd == wndStatic.m_hWnd) {
- dc.SetTextColor(RGB(0, 255, 0));
- dc.SetBkColor(RGB(0, 0, 0));
- return (HBRUSH)GetStockObject(BLACK_BRUSH);
- } else {
- SetMsgHandled(FALSE);
- return 0;
- }
- }
- void CMainFrame::OnOutputChanged( UINT uNotifyCode, int nID, CWindow wndCtl )
- {
- int n = m_output.GetWindowTextLength();
- m_strOuput.GetBufferSetLength(n);
- m_output.GetWindowText(m_strOuput.GetBufferSetLength(n), n+1);
- }
- void CMainFrame::OnStartMenuRange(UINT uNotifyCode, int nID, CWindow wndCtl)
- {
- CMenuHandle menuMain = GetMenu();
- CMenuHandle menuStartList = menuMain.GetSubMenu(2);
- WTL::CString strText;
- menuStartList.GetMenuStringA(nID, strText, MF_BYCOMMAND);
- if (strText.GetLength() > 0) {
- int m = strText.Find("\t", 0);
- if (m > 0) {
- strText = strText.Left(m);
- }
- const char *p = strchr(strText, ' ');
- if (p) {
- char name[128];
- memcpy(name, strText, p-(LPCSTR)strText);
- name[p-(LPCSTR)strText] = 0;
- p++;
- StartEntity(name, p);
- }
- }
- }
- LRESULT CMainFrame::OnChangeStartState(UINT uMsg, WPARAM wParam, LPARAM lParam)
- {
- LOG_FUNCTION();
- ShowWindow(SW_SHOW);
- m_bStarted = true;
- return 0;
- }
- void CCommandEdit::OnChar( UINT nChar, UINT nRepCnt, UINT nFlags )
- {
- if (nChar == VK_RETURN) {
- char tmp[512];
- int n = GetWindowText(tmp, sizeof(tmp));
- if (n <= 0)
- return;
- if (m_nHistorySize) {
- int last = (m_nHistoryHead + m_nHistorySize-1) % MAX_HISTORY;
- if (strcmp(tmp, m_strHistoryList[last]) != 0) {
- m_nHistoryCursor = (m_nHistoryHead + m_nHistorySize) % MAX_HISTORY;
- m_strHistoryList[m_nHistoryCursor] = tmp;
- m_nHistorySize = (m_nHistorySize + 1) % MAX_HISTORY;
- }
- } else {
- m_nHistoryCursor = (m_nHistoryHead + m_nHistorySize) % MAX_HISTORY;
- m_strHistoryList[m_nHistoryCursor] = tmp;
- m_nHistorySize = (m_nHistorySize + 1) % MAX_HISTORY;
- }
- m_frm->OnEditEnter(tmp);
- SetWindowText(NULL);
- } else {
- SetMsgHandled(FALSE);
- }
- }
- void CCommandEdit::OnKeyDown( UINT nChar, UINT nRepCnt, UINT nFlags )
- {
- int last = m_nHistoryCursor;
- if (nChar == VK_UP) {
- if (m_nHistoryCursor != m_nHistoryHead)
- m_nHistoryCursor = (m_nHistoryCursor + MAX_HISTORY - 1) % MAX_HISTORY;
- SetWindowText(m_strHistoryList[last]);
- } else if (nChar == VK_DOWN) {
- if (m_nHistorySize && (m_nHistoryCursor != (m_nHistoryHead+m_nHistorySize-1) % MAX_HISTORY))
- m_nHistoryCursor = (m_nHistoryCursor + 1) % MAX_HISTORY;
- SetWindowText(m_strHistoryList[last]);
- } else {
- SetMsgHandled(FALSE);
- }
- }
- void StartPageDlg::UpdateTerminalBasicInfo()
- {
- CSimpleStringA basicInoShowText(CSimpleStringA("v") + m_baseInfo.strSoftwareVersion + "\r\n" + m_baseInfo.strTerminalNo + "\r\n" + m_baseInfo.strMachineType);
- if (strlen(RVC_TITLE_STRING) > 0) {
- basicInoShowText.Append("-");
- basicInoShowText.Append(RVC_TITLE_STRING);
- }
- GetDlgItem(IDC_STATIC_BASICINFO).SetWindowTextA(basicInoShowText.GetData());
- }
- LRESULT StartPageDlg::OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam)
- {
- LOG_FUNCTION();
- MoveWindow(0, 0, 960, 610);
- CRect rc;
- GetWindowRect(&rc);
- GetDlgItem(IDC_STATIC1).MoveWindow(rc.left + 40, rc.top + 38, 187, 24);
- GetDlgItem(IDC_STATIC2).MoveWindow(rc.left + 385, rc.top + 97, 108, 39);
- GetDlgItem(IDC_EXITVTM).MoveWindow(rc.left + 67, rc.top + 550, 38, 30);
- GetDlgItem(IDC_PROGRESS).MoveWindow(rc.left + 493, rc.top + 97, 80, 39);
- GetDlgItem(IDC_STATIC_BASICINFO).MoveWindow(rc.left +740, rc.top + 540, 200, 60);
- m_pOutput = new COutputList();
- RECT rect;
- SetRect(&rect, rc.left + 70, rc.top + 168, rc.left + 70 + 820, rc.top + 168 + 367);
- m_pOutput->Create(m_hWnd, rect, "", WS_VISIBLE | WS_CHILD | LBS_OWNERDRAWVARIABLE | LVS_REPORT
- | LBS_HASSTRINGS);
- m_pOutput->ModifyStyle(NULL, WS_HSCROLL | WS_VSCROLL);
- UpdateTerminalBasicInfo();
- CenterWindow();
- return 0;
- }
- LRESULT StartPageDlg::OnNcHitTest(UINT uMsg, WPARAM wParam, LPARAM lParam)
- {
- CRect rc;
- POINT pt;
- pt.x = GET_X_LPARAM(lParam);
- pt.y = GET_Y_LPARAM(lParam);
- GetClientRect(&rc);
- ClientToScreen(&rc);
- return rc.PtInRect(pt) ? HTCAPTION : 0;
- }
- LRESULT StartPageDlg::OnClose(UINT uMsg, WPARAM wParam, LPARAM lParam)
- {
- LOG_FUNCTION();
- DestroyWindow();
- return 0;
- }
- HBRUSH StartPageDlg::OnCtlColorDlg(CDCHandle dc, CWindow wnd)
- {
- if (m_hWnd == wnd.m_hWnd)
- {
- dc.SetBkColor(RGB(0,0,0));
- return (HBRUSH)GetStockObject(WHITE_BRUSH);
- } else {
- SetMsgHandled(FALSE);
- return 0;
- }
- }
- HBRUSH StartPageDlg::OnCtlColorStatic( CDCHandle dc, CStatic wndStatic)
- {
- if (GetDlgItem(IDC_STATIC2).m_hWnd == wndStatic.m_hWnd) {
- dc.SetTextColor(RGB(51, 51, 51));
- dc.SetBkColor(RGB(255, 255, 255));
- CFont font;
- font.CreateFontA(30, 0, 0, 0, FW_HEAVY, FALSE, FALSE, FALSE, ANSI_CHARSET, OUT_CHARACTER_PRECIS,
- CLIP_CHARACTER_PRECIS, DEFAULT_QUALITY, FF_SWISS, "微软雅黑");
- dc.SelectFont(font);
- return (HBRUSH)GetStockObject(WHITE_BRUSH);
- } else if (GetDlgItem(IDC_EXITVTM).m_hWnd == wndStatic.m_hWnd) {
- dc.SetTextColor(RGB(77, 123, 254));
- dc.SetBkColor(RGB(255, 255, 255));
- CFont font;
- font.CreateFontA(22, 0, 0, 0, FW_BOLD, FALSE, FALSE, FALSE, ANSI_CHARSET, OUT_CHARACTER_PRECIS,
- CLIP_CHARACTER_PRECIS, DEFAULT_QUALITY, FF_SWISS, "微软雅黑");
- dc.SelectFont(font);
- return (HBRUSH)GetStockObject(WHITE_BRUSH);
- } else if (GetDlgItem(IDC_STATIC_BASICINFO).m_hWnd == wndStatic.m_hWnd) {
- dc.SetTextColor(RGB(169, 169, 169));
- dc.SetBkColor(RGB(255, 255, 255));
- CFont font;
- font.CreateFontA(20, 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE, ANSI_CHARSET, OUT_CHARACTER_PRECIS,
- CLIP_CHARACTER_PRECIS, DEFAULT_QUALITY, FF_SWISS, "微软雅黑");
- dc.SelectFont(font);
- return (HBRUSH)GetStockObject(WHITE_BRUSH);
- }
- SetMsgHandled(FALSE);
- return 0;
- }
- LRESULT StartPageDlg::OnStnClickedStatic3(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
- {
- m_pStartTask->ReqFrameworkQuit(false);
- return 0;
- }
- static std::wstring s2w(const std::string str)
- {
- wchar_t* wstr = NULL;
- int n = ::MultiByteToWideChar(CP_ACP, 0, str.c_str(), -1, NULL, 0);
- if (n > 0) {
- wstr = new wchar_t[n + 1];
- if (wstr == NULL) {
- return std::wstring();
- }
- std::memset(wstr, 0, (n + 1) * sizeof(wchar_t));
- ::MultiByteToWideChar(CP_ACP, 0, str.c_str(), -1, &wstr[0], n);
- std::wstring strr(wstr);
- delete wstr;
- return strr;
- }
- return std::wstring();
- }
- static std::string W2S(const std::wstring wstr)
- {
- #if defined(_MSC_VER)
- char* str = NULL;
- int n = ::WideCharToMultiByte(CP_ACP, 0, wstr.c_str(), -1, NULL, 0, NULL, NULL);
- if (n > 0) {
- str = new char[n + 1];
- if (str == NULL) {
- return std::string();
- }
- std::memset(str, 0, sizeof(char) * (n + 1));
- ::WideCharToMultiByte(CP_ACP, 0, wstr.c_str(), -1, &str[0], n, NULL, NULL);
- std::string strr(str);
- delete str;
- return strr;
- }
- #else
- ///*TODO(80374374@3/7/2023): */
- #endif //_MSC_VER
- return std::string();
- }
- void StartPageDlg::OutPut(const char* msg, COLORREF rgb)
- {
- CSimpleString str = msg;
-
- CRect rc;
- m_pOutput->GetClientRect(&rc);
- int maxWidth = rc.Width();
- int len = str.GetLength();
- CClientDC dc(m_pOutput->m_hWnd);
- SIZE strsz = {0};
- GetTextExtentPoint32((HDC)dc.m_hDC, str.GetData(), len, &strsz);
- if(strsz.cx == 0)
- return;
- if(strsz.cx < maxWidth - 50)
- {
- m_pOutput->AddString(str.GetData(), rgb);
- m_pOutput->SetItemHeight(m_pOutput->GetCount() - 1, 21);
- m_pOutput->SetCurSel(m_pOutput->GetCount() - 1);
- return;
- }
- auto dstStr = s2w(str.GetData());
- auto leftStr = dstStr.substr(0, dstStr.length() / 2);
- auto rightStr = dstStr.substr(dstStr.length() / 2, dstStr.length() - dstStr.length() / 2);
- m_pOutput->AddString(W2S(leftStr).c_str(), rgb);
- m_pOutput->SetItemHeight(m_pOutput->GetCount() - 1, 21);
- m_pOutput->AddString(W2S(rightStr).c_str(), rgb);
- m_pOutput->SetItemHeight(m_pOutput->GetCount() - 1, 21);
- m_pOutput->SetCurSel(m_pOutput->GetCount() - 1);
- }
- LRESULT StartPageDlg::OnShowMsg( UINT uMsg, WPARAM wParam, LPARAM lParam )
- {
- char *pMsg = (char*)wParam;
- COLORREF rgb = (COLORREF)lParam;
- OutPut(pMsg, rgb);
- delete pMsg;
- return 0;
- }
- LRESULT StartPageDlg::OnShowProgress(UINT uMsg, WPARAM wParam, LPARAM lParam)
- {
- int idleNum, totalNum;
- m_pStartTask->GetIdleEntityNum(idleNum, totalNum);
- CSimpleStringA csProgress = CSimpleString::Format("(%d/%d)", idleNum, totalNum);
- GetDlgItem(IDC_PROGRESS).SetWindowTextA(csProgress.GetData());
- return 0;
- }
- HBRUSH StartPageDlg::OnCtlColorProgress( CDCHandle dc, CStatic wndStatic)
- {
- if (GetDlgItem(IDC_PROGRESS).m_hWnd == wndStatic.m_hWnd) {
- dc.SetTextColor(RGB(51, 51, 51));
- dc.SetBkColor(RGB(255, 255, 255));
- CFont font;
- font.CreateFontA(30, 0, 0, 0, FW_HEAVY, FALSE, FALSE, FALSE, ANSI_CHARSET, OUT_CHARACTER_PRECIS,
- CLIP_CHARACTER_PRECIS, DEFAULT_QUALITY, FF_SWISS, "微软雅黑");
- dc.SelectFont(font);
- return (HBRUSH)GetStockObject(WHITE_BRUSH);
- }else {
- SetMsgHandled(FALSE);
- return 0;
- }
- }
- void COutputList::DrawItem(LPDRAWITEMSTRUCT lpDIS)
- {
- if ((int)lpDIS->itemID < 0)
- return;
- CDCHandle pDC(lpDIS->hDC);
- COLORREF crText;
- CString sText;
- COLORREF crNorm = (COLORREF)lpDIS->itemData; // Color information is in item data.
- COLORREF crHilite = RGB(255-GetRValue(crNorm), 255-GetGValue(crNorm), 255-GetBValue(crNorm));
- // If item has been selected, draw the highlight rectangle using the item's color.
- if ((lpDIS->itemState & ODS_SELECTED) &&
- (lpDIS->itemAction & (ODA_SELECT | ODA_DRAWENTIRE)))
- {
- pDC.FillSolidRect(&lpDIS->rcItem, crNorm);
- }
- // If item has been deselected, draw the rectangle using the window color.
- if (!(lpDIS->itemState & ODS_SELECTED) && (lpDIS->itemAction & ODA_SELECT))
- {
- pDC.FillSolidRect(&lpDIS->rcItem, ::GetSysColor(COLOR_WINDOW));
- }
- // If item has focus, draw the focus rect.
- if ((lpDIS->itemAction & ODA_FOCUS) && (lpDIS->itemState & ODS_FOCUS))
- pDC.DrawFocusRect(&lpDIS->rcItem);
- // If item does not have focus, redraw (erase) the focus rect.
- if ((lpDIS->itemAction & ODA_FOCUS) && !(lpDIS->itemState & ODS_FOCUS))
- pDC.DrawFocusRect(&lpDIS->rcItem);
- // Set the background mode to TRANSPARENT to draw the text.
- int nBkMode = pDC.SetBkMode(TRANSPARENT);
- // If the item's color information is set, use the highlight color
- // gray text color, or normal color for the text.
- if (lpDIS->itemData)
- {
- if (lpDIS->itemState & ODS_SELECTED)
- crText = pDC.SetTextColor(crHilite);
- else if (lpDIS->itemState & ODS_DISABLED)
- crText = pDC.SetTextColor(::GetSysColor(COLOR_GRAYTEXT));
- else
- crText = pDC.SetTextColor(crNorm);
- }
- // Else the item's color information is not set, so use the
- // system colors for the text.
- else
- {
- if (lpDIS->itemState & ODS_SELECTED)
- crText = pDC.SetTextColor(::GetSysColor(COLOR_HIGHLIGHTTEXT));
- else if (lpDIS->itemState & ODS_DISABLED)
- crText = pDC.SetTextColor(::GetSysColor(COLOR_GRAYTEXT));
- else
- crText = pDC.SetTextColor(::GetSysColor(COLOR_WINDOWTEXT));
- }
- // Get and display item text.
- GetText(lpDIS->itemID, sText);
- CRect rect = lpDIS->rcItem;
- // Setup the text format.
- UINT nFormat = DT_LEFT | DT_SINGLELINE | DT_VCENTER;
- if (GetStyle() & LBS_USETABSTOPS)
- nFormat |= DT_EXPANDTABS;
- // Calculate the rectangle size before drawing the text.
- CFont font;
- font.CreateFontA(20, 0, 0, 0, FW_MEDIUM, FALSE, FALSE, FALSE, ANSI_CHARSET, OUT_CHARACTER_PRECIS,
- CLIP_CHARACTER_PRECIS, DEFAULT_QUALITY, FF_SWISS, "微软雅黑");
- pDC.SelectFont(font);
- pDC.DrawText(sText, -1, &rect, nFormat | DT_CALCRECT);
- pDC.DrawText(sText, -1, &rect, nFormat);
- pDC.SetTextColor(crText);
- pDC.SetBkMode(nBkMode);
- }
- void COutputList::MeasureItem(LPMEASUREITEMSTRUCT lpMIS)
- {
- lpMIS->itemHeight = ::GetSystemMetrics(SM_CXMENUCHECK);
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("lpMIS->itemHeight=%d", lpMIS->itemHeight);
- }
- int COutputList::AddString(LPCTSTR lpszItem)
- {
- return ((CListBox*)this)->AddString(lpszItem);
- }
- int COutputList::AddString(LPCTSTR lpszItem, COLORREF rgb)
- {
- int nItem = AddString(lpszItem);
- if (nItem >= 0)
- SetItemData(nItem, rgb);
- return nItem;
- }
- int COutputList::InsertString(int nIndex, LPCTSTR lpszItem)
- {
- return ((CListBox*)this)->InsertString(nIndex, lpszItem);
- }
- int COutputList::InsertString(int nIndex, LPCTSTR lpszItem, COLORREF rgb)
- {
- int nItem = ((CListBox*)this)->InsertString(nIndex,lpszItem);
- if (nItem >= 0)
- SetItemData(nItem, rgb);
- return nItem;
- }
- void COutputList::SetItemColor(int nIndex, COLORREF rgb)
- {
- SetItemData(nIndex, rgb);
- RedrawWindow();
- }
|