SysLib.cpp 36 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133
  1. #include "stdafx.h"
  2. #include <tlhelp32.h>
  3. #include "SysLib.h"
  4. #include <io.h>
  5. #include <odbcinst.h>
  6. #include <afxdb.h>
  7. #include "..\ChineseRes\ChineseRes\resource.h"
  8. #include "crc32.h"
  9. //增加自动启动注册表项
  10. INT AddAutoSysRun(CHAR *strExeFile, INT iAutoRunSystem)
  11. {
  12. HKEY hKey = NULL;
  13. DWORD dwErrorCode = 0;
  14. //创建注册表,有该键则读取,无则创建
  15. dwErrorCode = RegCreateKeyEx(HKEY_LOCAL_MACHINE,
  16. "Software\\Microsoft\\Windows\\CurrentVersion\\Run",
  17. 0,
  18. NULL,
  19. REG_OPTION_NON_VOLATILE,
  20. KEY_ALL_ACCESS,
  21. NULL, //Security
  22. &hKey,
  23. NULL);
  24. if (dwErrorCode == ERROR_SUCCESS)
  25. {
  26. if (iAutoRunSystem)
  27. dwErrorCode = RegSetValueEx(hKey, "tryto-CMS", NULL, REG_SZ, (BYTE*)strExeFile, strlen(strExeFile));
  28. else
  29. dwErrorCode = RegDeleteKey(hKey, "tryto-CMS");
  30. }
  31. if (NULL != hKey)
  32. RegCloseKey(hKey);
  33. hKey = NULL;
  34. return 0;
  35. }
  36. int Handle_DeleteTrayNullIcon( BOOL &bNullBeDel )
  37. {
  38. bNullBeDel = FALSE;
  39. HWND hStatus=::FindWindow("Shell_TrayWnd",NULL); //得到任务栏句柄
  40. if (hStatus==NULL)
  41. {
  42. //AfxMessageBox ( "Get Shell_TrayWnd error!" );
  43. return -1;
  44. }
  45. HWND hNotify=FindWindowEx(hStatus,NULL,"TrayNotifyWnd",NULL); //右下角区域
  46. if (hNotify==NULL)
  47. {
  48. //AfxMessageBox ( "Get TrayNotifyWnd error!" );
  49. return -1;
  50. }
  51. HWND hNotify1=FindWindowEx(hNotify,NULL,"SysPager",NULL);
  52. if (hNotify==NULL)
  53. {
  54. //AfxMessageBox ( "Get SysPager error!" );
  55. return -1;
  56. }
  57. HWND hNotify1_0=FindWindowEx(hNotify1,NULL,"ToolBarWindow32",NULL);//右下角区域(不包括时间)
  58. if (hNotify1_0==NULL)
  59. {
  60. //AfxMessageBox ( "Get ToolBarWindow32 error!" );
  61. return -1;
  62. }
  63. //-------------------以上是得到任务栏右下脚一块地方的句柄
  64. DWORD pid = 0;
  65. GetWindowThreadProcessId(hNotify1_0,&pid);
  66. if (pid==NULL)
  67. {
  68. //AfxMessageBox ( "Get pid error!" );
  69. return -1;
  70. }
  71. HANDLE hProcess=OpenProcess(PROCESS_QUERY_INFORMATION|PROCESS_ALL_ACCESS,true,pid);
  72. if (hProcess==NULL)
  73. {
  74. //AfxMessageBox ( "Get hd error!" );
  75. return -1;
  76. }
  77. ::SendMessage(hNotify1_0,WM_PAINT ,NULL,NULL);
  78. CRect rect;
  79. ::GetWindowRect(hNotify1_0,&rect);
  80. ::InvalidateRect(hNotify1_0,&rect,false);
  81. int iNum=::SendMessage(hNotify1_0,TB_BUTTONCOUNT ,NULL,NULL); //获取任务栏上图标个数
  82. unsigned long n = 0;
  83. TBBUTTON *pButton = new TBBUTTON;
  84. CString strInfo = _T("");
  85. wchar_t name[256] = {0};
  86. TBBUTTON BButton;
  87. unsigned long whd,proid;
  88. CString x;
  89. for(int i=0; i<iNum; i++)
  90. {
  91. ::SendMessage(hNotify1_0,TB_GETBUTTON,i,(LPARAM)(&BButton));
  92. ReadProcessMemory(hProcess,&BButton,pButton,sizeof(TBBUTTON),&n);
  93. if (pButton->iString != 0xffffffff)
  94. {
  95. try
  96. {
  97. ReadProcessMemory(hProcess,(void *)pButton->iString,name,255,&n);
  98. }
  99. catch(...)
  100. {
  101. }
  102. strInfo.Format("%d : %s\n",i+1,CString(name));
  103. TRACE(strInfo);
  104. }
  105. try
  106. {
  107. whd=0;
  108. ReadProcessMemory(hProcess,(void *)pButton->dwData,&whd,4,&n);
  109. }
  110. catch(...)
  111. {
  112. }
  113. proid=NULL;
  114. GetWindowThreadProcessId((HWND)whd,&proid);
  115. if(proid==NULL)
  116. {
  117. bNullBeDel = TRUE;
  118. ::SendMessage(hNotify1_0,TB_DELETEBUTTON,i,0);
  119. }
  120. }
  121. delete pButton;
  122. return 0;
  123. }
  124. int GetSysData()
  125. {
  126. CHAR strFile[MAX_FILE_LENGTH + 1] = "";
  127. CHAR strValue[MAX_VALUE_LENGTH + 1] = "";
  128. int iPosFile = 0;
  129. int iLenghtFile = 0;
  130. ////////////////////////////////////////////////////////////////////////////
  131. //获取应用名
  132. GetModuleFileName(AfxGetApp()->m_hInstance, g_strDirectory, MAX_PATH_LENGTH);
  133. iLenghtFile = strlen(g_strDirectory);
  134. for (iPosFile = iLenghtFile - 1; iPosFile >= 0; iPosFile--)
  135. {
  136. if (g_strDirectory[iPosFile] == '\\')
  137. {
  138. memset(g_strAppName, 0, sizeof(g_strAppName));
  139. memcpy(g_strAppName, g_strDirectory + iPosFile + 1, iLenghtFile - iPosFile - 1);
  140. break;
  141. }
  142. }
  143. //获取系统路径
  144. #ifdef _DEBUG
  145. GetCurrentDirectory(MAX_PATH_LENGTH, g_strDirectory);
  146. #else
  147. GetModuleFileName(AfxGetApp()->m_hInstance, g_strDirectory, MAX_PATH_LENGTH);
  148. iLenghtFile = strlen(g_strDirectory);
  149. for (iPosFile = iLenghtFile - 1; iPosFile >= 0; iPosFile--)
  150. {
  151. if (g_strDirectory[iPosFile] == '\\')
  152. {
  153. g_strDirectory[iPosFile] = '\0';
  154. break;
  155. }
  156. }
  157. #endif
  158. wsprintf(strFile, "%s\\clientset.ini", g_strDirectory);
  159. //Server
  160. GetPrivateProfileString("Server", "ServerIP", "", g_strServerIP, sizeof(g_strServerIP), strFile);
  161. GetPrivateProfileString("Server", "Port", "", g_strServerPort, sizeof(g_strServerPort), strFile);
  162. //是否自动启动系统
  163. GetPrivateProfileString("Other", "AutoRunSystem", "", strValue, sizeof(strValue), strFile);
  164. if (strcmp(strValue, ""))
  165. g_iAutoRunSystem = atoi(strValue);
  166. else
  167. g_iAutoRunSystem = 0;
  168. if (g_iAutoRunSystem <= 0)
  169. g_iAutoRunSystem = 0;
  170. else
  171. g_iAutoRunSystem = 1;
  172. GetPrivateProfileString("User", "UserID", "", g_strLoginUserID, sizeof(g_strLoginUserID), strFile);
  173. GetPrivateProfileString("User", "UserPwd", "", g_strLoginPwd, sizeof(g_strLoginPwd), strFile);
  174. g_nIsDemo = GetPrivateProfileInt("Other", "IsDemo", 0, strFile);
  175. //RunParam
  176. g_nIsPoll = GetPrivateProfileInt("RunParam", "IsPoll", 0, strFile);
  177. g_nPollInterval = GetPrivateProfileInt("RunParam", "PollInterval", 1, strFile);
  178. g_nPollCount = GetPrivateProfileInt("Poll", "PollCount", 0, strFile);
  179. CString strPollPath, strPollDesc;
  180. for( int i = 1; i < g_nPollCount + 1; i++ )
  181. {
  182. if( i > MAX_VIEW_NUM - 1 ) break;
  183. strPollPath.Format("PollPath%d", i);
  184. GetPrivateProfileString("Poll",
  185. (char *)(LPCTSTR)strPollPath, "", g_strPollPath[i-1], sizeof(g_strPollPath[i-1]), strFile);
  186. strPollDesc.Format("PollDesc%d", i);
  187. GetPrivateProfileString("Poll",
  188. (char *)(LPCTSTR)strPollDesc, "", g_strPollDesc[i-1], sizeof(g_strPollDesc[i-1]), strFile);
  189. }
  190. //语言
  191. GetPrivateProfileString("Other", "Language", "", g_strLanguage, sizeof(g_strLanguage), strFile);
  192. //Database
  193. GetPrivateProfileString("Database", "DBType", "", g_strDBType, sizeof(g_strDBType), strFile);
  194. GetPrivateProfileString("Database", "AccessFile", "", g_strAccessFile, sizeof(g_strAccessFile), strFile);
  195. GetPrivateProfileString("Database", "ServerName", "", g_strServerName, sizeof(g_strServerName), strFile);
  196. GetPrivateProfileString("Database", "DataBaseName", "", g_strDataBaseName, sizeof(g_strDataBaseName), strFile);
  197. GetPrivateProfileString("Database", "UserName", "", g_strUserName, sizeof(g_strUserName), strFile);
  198. GetPrivateProfileString("Database", "Password", "", g_strPassword, sizeof(g_strPassword), strFile);
  199. //数据库连接串
  200. if (!_stricmp(g_strDBType, "SQL SERVER"))
  201. sprintf(g_strConnectString, "Provider=sqloledb;Data Source=%s;Initial Catalog=%s;User Id=%s;Password=%s; ",
  202. g_strServerName, g_strDataBaseName, g_strUserName, g_strPassword);
  203. else if (!_stricmp(g_strDBType, "ACCESS97"))
  204. sprintf(g_strConnectString, "Provider=Microsoft.Jet.OLEDB.3.51;Data Source=%s", g_strAccessFile);
  205. else if (!_stricmp(g_strDBType, "ACCESS2000"))
  206. sprintf(g_strConnectString, "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s", g_strAccessFile);
  207. else if(!_stricmp(g_strDBType, "PGSQL"))
  208. sprintf(g_strConnectString, "DRIVER={PostgreSQL ODBC Driver(UNICODE)}; SERVER=%s; port=5432; DATABASE=%s; UID=%s; PWD=%s;",
  209. g_strServerName, g_strDataBaseName, g_strUserName, g_strPassword);
  210. else
  211. sprintf(g_strConnectString, "Provider=sqloledb;Data Source=%s;Initial Catalog=%s;User Id=%s;Password=%s; ",
  212. g_strServerName, g_strDataBaseName, g_strUserName, g_strPassword);
  213. //用户信息
  214. GetPrivateProfileString("User", "UserID", "", g_strDefaultUserID, sizeof(g_strDefaultUserID), strFile);
  215. GetPrivateProfileString("User", "UserPwd", "", g_strDefaultUserPwd, sizeof(g_strDefaultUserPwd), strFile);
  216. //自动跳到报警画面
  217. g_nAlarmToPic = GetPrivateProfileInt("AlarmMode", "AlarmToPic", 0, strFile);;
  218. //AlarmMode
  219. g_nAlarmModeIsDlg = GetPrivateProfileInt("AlarmMode", "Dlg", 0, strFile);
  220. g_nAlarmModeIsSound = GetPrivateProfileInt("AlarmMode", "Sound", 0, strFile);
  221. g_nAlarmModeSoundPlayNum = GetPrivateProfileInt("AlarmMode", "PlayNum", 0, strFile);
  222. //Comm
  223. g_nCommDlgLevel = GetPrivateProfileInt("Common", "LevelDlg", 0, strFile);;
  224. g_nCommWavLevel = GetPrivateProfileInt("Common", "LevelLocalWav", 0, strFile);;
  225. //TTS
  226. g_nTTSType = GetPrivateProfileInt("TTS", "VoiceType", 0, strFile);
  227. //视频采集卡
  228. GetPrivateProfileString("Video", "CapPath", "", g_strVideoCapPath, sizeof(g_strVideoCapPath), strFile);
  229. CString str;
  230. str = CString(g_strVideoCapPath);
  231. str.Replace("\\", "\\\\");
  232. strcpy(g_strVideoCapPath, (char *)(LPCTSTR)str);
  233. //Toolbar显示状态
  234. g_nToolbarTop = GetPrivateProfileInt("Toolbar", "ToolBarTop", 0, strFile);
  235. g_nToolbarLeft = GetPrivateProfileInt("Toolbar", "ToolBarLeft", 0, strFile);
  236. g_nToolbarRun = GetPrivateProfileInt("Toolbar", "ToolBarRun", 0, strFile);
  237. g_nToolBarStatus = GetPrivateProfileInt("Toolbar", "ToolBarStatus", 0, strFile);
  238. ////////////////////////////////////////////////////////////////////////////
  239. //增加自动启动注册表项
  240. #if 0
  241. wsprintf(strFile, "%s\\%s", g_strDirectory, g_strAppName);
  242. AddAutoSysRun(strFile, g_iAutoRunSystem);
  243. #endif
  244. return 0;
  245. }
  246. int GetResourceString()
  247. {
  248. g_strSet.LoadString(IDS_SET);
  249. g_strAdjust.LoadString(IDS_ADJUST);
  250. g_strPictureLink.LoadString(IDS_PICTURELINK);
  251. g_strExit.LoadString(IDS_EXIT);
  252. g_strExLink.LoadString(IDS_EXLINK);
  253. g_strTestAlarm.LoadString(IDS_TESTALARM);
  254. g_strAlarmRed.LoadString(IDS_COMMOND_ALARM_RED);
  255. g_strNoticeRed.LoadString(IDS_COMMOND_NOTICE_RED);
  256. g_strDeviceLog.LoadString(IDS_COMMOND_DEVICE_LOG);
  257. g_strSystemLog.LoadString(IDS_COMMOND_SYSTEM_LOG);
  258. g_strVarManage.LoadString(IDS_COMMOND_VAR_MANAGE);
  259. g_strUserManage.LoadString(IDS_COMMOND_USER_MANAGE);
  260. g_strPwdManage.LoadString(IDS_COMMOND_PWD_MANAGE);
  261. g_strFirstPage.LoadString(IDS_COMMOND_FIRST_PAGE);
  262. g_strNativageTree.LoadString(IDS_COMMOND_NATIVAGE_TREE);
  263. g_strVarTypeID.LoadString(IDS_VARTYPEID);
  264. g_strSelLine.LoadString(IDS_SELLINE);
  265. g_strVarID.LoadString(IDS_VARID);
  266. g_strVarUid1.LoadString(IDS_VARUID1);
  267. g_strVarName1.LoadString(IDS_VARNAME1);
  268. g_strVarDesc.LoadString(IDS_VARDESC);
  269. g_strVarDataLen.LoadString(IDS_VARDATALEN);
  270. g_strOnDesc.LoadString(IDS_ONDESC);
  271. g_strOffDesc.LoadString(IDS_OFFDESC);
  272. g_strMaxValues.LoadString(IDS_MAXVALUES);
  273. g_strMinValues.LoadString(IDS_MINVALUES);
  274. g_strMaxScale.LoadString(IDS_MAXSCALE);
  275. g_strMinScale.LoadString(IDS_MINSCALE);
  276. g_strLowerLimit.LoadString(IDS_LOWERLIMIT);
  277. g_strUpperLimit.LoadString(IDS_UPPERLIMIT);
  278. g_strNormalState.LoadString(IDS_NORMALSTATE);
  279. g_strSetValue.LoadString(IDS_SETVALUE);
  280. g_strRearm.LoadString(IDS_REARM);
  281. g_strOffset.LoadString(IDS_OFFSET);
  282. g_strUint.LoadString(IDS_UNIT);
  283. g_strCollectFreq.LoadString(IDS_COLLECTFREQ);
  284. g_strCoef.LoadString(IDS_COEF);
  285. g_strAlarmLevel.LoadString(IDS_ALARMLEVEL);
  286. g_strReadWrite.LoadString(IDS_READWRITE);
  287. g_strSaveData.LoadString(IDS_SAVEDATA);
  288. g_strCollectThreadData.LoadString(IDS_COLLECTTHRADDATA);
  289. g_strSaveCurve.LoadString(IDS_SAVECURVE);
  290. g_strIsDDE.LoadString(IDS_ISDDE);
  291. g_strRegNum.LoadString(IDS_REGNUM);
  292. g_strFuncID.LoadString(IDS_FUNCID);
  293. g_strChildID.LoadString(IDS_CHILDID);
  294. g_strItemID.LoadString(IDS_ITEMID);
  295. g_strSnmpOid.LoadString(IDS_SNMPOID);
  296. g_strSnmpPublic.LoadString(IDS_SNMPPUBLIC);
  297. g_strDevTypeID.LoadString(IDS_DEVTYPEID);
  298. g_strVarStartAddr.LoadString(IDS_VARSTARTADDR);
  299. g_strRs232Cmd.LoadString(IDS_RS232CMD);
  300. g_strRs232Type.LoadString(IDS_RS232TYPE);
  301. g_strRs232Index.LoadString(IDS_RS232INDEX);
  302. g_strIndentifyTime.LoadString(IDS_IDENTIFYTIME);
  303. g_strRedectTime.LoadString(IDS_REDETECTTIME);
  304. g_strReturnNormalAlarm.LoadString(IDS_RETURNNORMALTOTRIPALARM);
  305. g_strShowCurrValue.LoadString(IDS_SHOWCURRVALUE);
  306. g_strAlarmVarName.LoadString(IDS_ALARMVARNAME);
  307. g_strVarUidIsBlank.LoadString(IDS_VARUIDISBLANK);
  308. g_strVarNameIsBlank.LoadString(IDS_PARAMNAME_CANNOTBLANK);
  309. g_strVarNameExist.LoadString(IDS_VARNAMEEXIST);
  310. g_strVarName2.LoadString(IDS_VARNAME2);
  311. g_strSelDev.LoadString(IDS_SELDEV);
  312. g_strStoneuTech.LoadString(IDS_STONEU_TECH);
  313. g_strPictureFile1.LoadString(IDS_PICTUREFILE1);
  314. g_strCannotLoseAllForm.LoadString(IDS_CANNOTCLOSEALLFORM);
  315. g_strStartBit.LoadString(IDS_STARTBIT);
  316. g_strEndBit.LoadString(IDS_ENDBIT);
  317. g_strVarBitExist.LoadString(IDS_VARBITEXIST);
  318. g_strSelDevice.LoadString(IDS_SELDEV);
  319. g_strOldPasswordCannotBlank.LoadString(IDS_OLDPASSWORDCANNOTBLANK);
  320. g_strOldpasswordInCorrect.LoadString(IDS_OLDPASSWORDINCORRECT);
  321. g_strpasswordInCorrect.LoadString(IDS_PASSWORDINCORRECT);
  322. g_strPasswordNotMatch1.LoadString(IDS_PASSWORDNOTMATCH1);
  323. g_strAll.LoadString(IDS_ALL);
  324. g_strDevName.LoadString(IDS_DEVNAME);
  325. g_strHappentTime1.LoadString(IDS_HAPPENTIME1);
  326. g_strEventArea.LoadString( IDS_EVENTAREA );
  327. g_strCurrValue.LoadString(IDS_CURRVALUE);
  328. g_strDateTime.LoadString(IDS_DATETIME);
  329. g_strHappenTime2.LoadString(IDS_HAPPENTIME2);
  330. g_strWarnContent.LoadString(IDS_WARNCONTENT);
  331. g_strAllDev.LoadString(IDS_ALLDEV);
  332. g_strEthernet.LoadString(IDS_ETHERNET);
  333. g_strMywizard.LoadString(IDS_MYWIZARD);
  334. g_strDevNameInUse.LoadString(IDS_DEVNAMEINUSE);
  335. g_strUserID.LoadString(IDS_USERID);
  336. g_strHintUserName.LoadString(IDS_USERNAME);
  337. g_strTel.LoadString(IDS_TEL);
  338. g_strMobile.LoadString(IDS_MOBIL);
  339. g_strFax.LoadString(IDS_FAX);
  340. g_strMail.LoadString(IDS_EMAIL);
  341. g_strStatus.LoadString(IDS_STATUS);
  342. g_strUserPwd.LoadString(IDS_USERPWD);
  343. g_strUserNameCannotEmpty.LoadString(IDS_USERNAMECANNOTEMPTY);
  344. g_strPasswordNotMatch2.LoadString(IDS_PASSWORDNOTMATCH2);
  345. g_strUserNameExit.LoadString(IDS_USERNAMEEXIT);
  346. g_strID.LoadString(IDS_ID);
  347. g_strDevUid2.LoadString(IDS_DEVUID2);
  348. g_strAlarmStatus.LoadString(IDS_ALARMSTATUS);
  349. g_strAlarmStatusDesc.LoadString(IDS_ALARMSTATUSDESC);
  350. g_strNormalStatusID.LoadString(IDS_NORMALSTATUSID);
  351. g_strAlarmStatusIDCannotEmpty.LoadString(IDS_ALARMSTATUSIDCANNOTEMPTY);
  352. g_strAlarmStatusDescCannotEmpty.LoadString(IDS_ALARMSTATUSDESCCANNOTEMPTY);
  353. g_strNormalStatusIDCannotBlank.LoadString(IDS_NORMALSTATUSIDCANNOTBLANK);
  354. g_strAlarmStatusInfoExist.LoadString(IDS_ALARMSTATUSINFOEXIST);
  355. g_strTimesNewRoman.LoadString(IDS_TIMESNEWROMAN);
  356. g_strEntityProperty.LoadString(IDS_ENTITYPROPERTY);
  357. g_strParamSet.LoadString(IDS_PARAMSET);
  358. g_strHour.LoadString(IDS_HOUR);
  359. g_strDate.LoadString(IDS_DATE);
  360. g_strMean.LoadString(IDS_MEAN);
  361. g_strControl.LoadString(IDS_CONTROL);
  362. g_strTRACE0.LoadString(IDS_TRACE0);
  363. g_strAppwizardCreateApp.LoadString(IDS_APPWIZARDCREATAPP);
  364. g_strPictureFile2.LoadString(IDS_PICTUREFILE2);
  365. g_strSaveModify.LoadString(IDS_SAVEMODIFY);
  366. g_strStoneuIspcms.LoadString(IDS_STONEU_ISPCMS);
  367. g_strUnSelectEntity.LoadString(IDS_UNSELECTENTITY);
  368. g_strIsNotPrimitive.LoadString(IDS_ISNOTPRIMITIVE);
  369. g_strSelect.LoadString(IDS_SELECT);
  370. g_strTrace2.LoadString(IDS_TRACE);
  371. g_strTline.LoadString(IDS_TLINE);
  372. g_strText.LoadString(IDS_TEXT);
  373. g_strRect.LoadString(IDS_RECT);
  374. g_strOval.LoadString(IDS_OVAL);
  375. g_strButton.LoadString(IDS_BUTTON);
  376. g_strData.LoadString(IDS_DATA);
  377. g_strLed.LoadString(IDS_LED);
  378. g_strBar.LoadString(IDS_BAR);
  379. g_strCurve.LoadString(IDS_CURVE);
  380. g_strLine.LoadString(IDS_LINE);
  381. g_strBreaker.LoadString(IDS_BREAKER);
  382. g_strSwitch.LoadString(IDS_SWITCH);
  383. g_strGrid.LoadString(IDS_GRID);
  384. g_strBitmap.LoadString(IDS_BITMAP);
  385. g_strGif.LoadString(IDS_GIF);
  386. g_strTransfer.LoadString(IDS_TRANSFER);
  387. g_strArc.LoadString(IDS_ARC);
  388. g_strArrow.LoadString(IDS_ARROW);
  389. g_strPoly.LoadString(IDS_POLY);
  390. g_strMLine.LoadString(IDS_MLINE);
  391. g_strPipe.LoadString(IDS_PIPE);
  392. g_strZhePipe.LoadString(IDS_ZHEPIPE);
  393. g_strYPipe.LoadString(IDS_YPIPE);
  394. g_strWatch.LoadString(IDS_WATCH);
  395. g_strSingleBar.LoadString(IDS_SINGLEBAR);
  396. g_strRoundRect.LoadString(IDS_ROUNDRECT);
  397. g_strPie.LoadString(IDS_PIE);
  398. g_strFan.LoadString(IDS_FAN);
  399. g_strHisCurve.LoadString(IDS_HISCURVE);
  400. g_strTable.LoadString(IDS_TABLE);
  401. g_strComposite.LoadString(IDS_COMPOSITE);
  402. g_strConnectionFailed.LoadString(IDS_CONNECTIONFAILED);
  403. g_strMoniterSite.LoadString(IDS_MONITORSITE);
  404. g_strDevice.LoadString(IDS_DEVICE);
  405. g_strSerial.LoadString(IDS_SERIAL);
  406. g_strDataDict.LoadString(IDS_DATADICT);
  407. g_strVarSet.LoadString(IDS_VARSET);
  408. g_strScriptManage.LoadString(IDS_SCRIPTMANAGE);
  409. g_strSysParam.LoadString(IDS_SYSPARAM);
  410. g_strExitConfirm.LoadString(IDS_EXITCONFIRM);
  411. g_strIPComoccupy.LoadString(IDS_IPCOMOCCUPY);
  412. g_strDevNumCannotBlank.LoadString(IDS_DEVNAMCANNOTBLANK);
  413. g_strDevUidExist.LoadString(IDS_DEVUIDEXIST);
  414. g_strDevNameExist.LoadString(IDS_DEVNAMEEXIST);
  415. g_strSerialPortInUse.LoadString(IDS_SERIALPORTINUSE);
  416. g_strIPNotBlank.LoadString(IDS_IPNOTBLANK);
  417. g_strComcanNot0.LoadString(IDS_COMCANNOT0);
  418. g_strNetDev.LoadString(IDS_NETDEV);
  419. g_strIPConflict.LoadString(IDS_IPCONFLICT);
  420. g_strCannotCreateDirecitory.LoadString(IDS_CANNOTCREATEDIRECTORY);
  421. g_strDelDev.LoadString(IDS_DELDEV);
  422. g_strDelView.LoadString(IDS_DELVIEW);
  423. g_strConfirm.LoadString(IDS_CONFIRM);
  424. g_strEventType.LoadString(IDS_EVENTTYPE);
  425. g_strEventInfo.LoadString(IDS_EVENTINFO);
  426. g_strLowAlarm.LoadString(IDS_LOWALARM);
  427. g_strHighAlarm.LoadString(IDS_UPALARM);
  428. g_strReturnNormal1.LoadString(IDS_RETURNNORMAL1);
  429. g_strReturnNormal2.LoadString(IDS_RETURNNORMAL2);
  430. g_strAlarm.LoadString(IDS_ALARM);
  431. g_strTime.LoadString(IDS_TIME);
  432. g_strVarName3.LoadString(IDS_VARNAME3);
  433. g_strColumnName.LoadString(IDS_COLUMNNAME);
  434. g_strHeader.LoadString(IDS_HEADER);
  435. g_strFormat.LoadString(IDS_FORMAT);
  436. g_strScriptPass.LoadString(IDS_SCRIPTPASS);
  437. g_strScriptNameCannotEmpty.LoadString(IDS_SCRIPTNAMECANNOTEMPTY);
  438. g_strStrVar.LoadString(IDS_STRVAR);
  439. g_strDes.LoadString(IDS_DES);
  440. g_strOne.LoadString(IDS_ONE);
  441. g_strTwo.LoadString(IDS_TWO);
  442. g_strThree.LoadString(IDS_THREE);
  443. g_strFour.LoadString(IDS_FOUR);
  444. g_strFine.LoadString(IDS_FINE);
  445. g_strSix.LoadString(IDS_SIX);
  446. g_strSeven.LoadString(IDS_SEVEN);
  447. g_strEight.LoadString(IDS_EIGHT);
  448. g_strNine.LoadString(IDS_NINE);
  449. g_strTen.LoadString(IDS_TEN);
  450. g_strHandred.LoadString(IDS_HUNDRED);
  451. g_strBilion.LoadString(IDS_BILLION);
  452. g_strWan.LoadString(IDS_WAN);
  453. g_strThousand.LoadString(IDS_THOUSAND);
  454. g_strYuan1.LoadString(IDS_YUAN1);
  455. g_strCent.LoadString(IDS_CENT);
  456. g_strZero.LoadString(IDS_ZERO);
  457. g_strMinute.LoadString(IDS_MINUTE);
  458. g_strYuan2.LoadString(IDS_YUAN2);
  459. g_strDevDataLog.LoadString(IDS_DEVDATALOG);
  460. g_strOverWriteError.LoadString(IDS_OVERWRITEERROR);
  461. g_strSaveas.LoadString(IDS_SAVEAS);
  462. g_strTip.LoadString(IDS_TIP);
  463. g_strScriptError.LoadString(IDS_SCRIPT_ERROR);
  464. g_strLogicDoorinate.LoadString(IDS_LOGIC_COORDINATE);
  465. g_strFontNameCHT.LoadString(IDS_FONT_CHT);
  466. g_strCharacter.LoadString(IDS_CHARACTER);
  467. g_strNormal.LoadString(IDS_NORMAL);
  468. g_strIsNotice.LoadString(IDS_IS_NOTICE);
  469. g_strIsModify.LoadString(IDS_IS_MODIFY);
  470. g_strParamInit.LoadString(IDS_PARAM_INIT);
  471. g_strParamMin.LoadString(IDS_PARAM_MIN);
  472. g_strParamMax.LoadString(IDS_PARAM_MAX);
  473. g_strOCX.LoadString( IDS_OCX );
  474. g_strGIF.LoadString( IDS_GIF );
  475. g_strFlash.LoadString( IDS_FLASH );
  476. g_strRadio.LoadString( IDS_RADIO);
  477. g_strCheck.LoadString( IDS_CHECK);
  478. g_strLogType.LoadString( IDS_LOG_TYPE );
  479. g_strModbusType.LoadString( IDS_LOG_MODBUSTYPE );
  480. g_strLogContent.LoadString( IDS_LOG_CONTENT );
  481. g_strLogHappenTime.LoadString( IDS_LOG_HAPPENTIME );
  482. g_strPastDue.LoadString( IDS_PROMPT_PASTDUE );
  483. g_strEditMoreVarOK.LoadString( IDS_PROMPT_EDITMOREVAROK );
  484. g_strGroup.LoadString( IDS_GROUP );
  485. g_strDClickFirstOperate.LoadString( IDS_PROMPT_DCLICKFIRSTOPERATE );
  486. g_strDelGroup.LoadString( IDS_PROMPT_COMFIR_DELGROUP );
  487. g_strNormalData.LoadString( IDS_NORMALDATA );
  488. g_strAlarmData.LoadString( IDS_ALARMDATA );
  489. g_strDealStatus.LoadString( IDS_DEALSTATUS );
  490. g_strAdd.LoadString( IDS_ADD );
  491. g_strEdit.LoadString( IDS_EDIT );
  492. g_strDel.LoadString( IDS_DEL );
  493. g_strDevice1.LoadString( IDS_DEVICE );
  494. g_strVariant.LoadString( IDS_VARIANT );
  495. g_strUser.LoadString( IDS_USER );
  496. g_strPwd.LoadString( IDS_PWD );
  497. g_strTimePlan.LoadString( IDS_TIMEPLAN );
  498. g_strRegiserOCX.LoadString( IDS_PROMPT_REGISEROCX );
  499. g_strNoPermit.LoadString( IDS_NO_PERMIT );
  500. g_strModifyPwdOK.LoadString( IDS_MODIFY_PWD_OK );
  501. g_strMonitorNameIsBlank.LoadString( IDS_MONITOR_BLANK );
  502. g_strMonitorNameCannotDel.LoadString( IDS_MONITOR_CANNOTDEL );
  503. g_strInputIsBlank.LoadString( IDS_CANNOT_BLANK );
  504. //界面语言,读取资源文件定义
  505. g_strLogTypeEvent.LoadString( IDS_EVENT_LOG );
  506. g_strLogTypeData.LoadString( IDS_DATA_LOG_TYPE );
  507. g_strLogTypeError.LoadString( IDS_LOG_TYPE_ERROR );
  508. g_strLogTypeWarning.LoadString( IDS_LOG_TYPE_WARNING );
  509. g_strLogModMainThread.LoadString( IDS_LOGMOD_MAIN_THREAD );
  510. g_strLogModDB.LoadString( IDS_LOGMOD_DB );
  511. g_strLogModEmail.LoadString( IDS_LOGMOD_EMAIL );
  512. g_strLogModSms.LoadString( IDS_LOGMOD_SMS );
  513. g_strLogModPing.LoadString( IDS_LOGMOD_PING );
  514. g_strLogModTrap.LoadString( IDS_LOGMOD_TRAP );
  515. g_strLogModSnmp.LoadString( IDS_LOGMOD_SNMP );
  516. g_strLogModDog.LoadString( IDS_LOGMOD_DOG );
  517. g_strLogModNotice.LoadString( IDS_LOGMOD_NOTICE );
  518. g_strLogModContents.LoadString( IDS_SEND_CONTENTS );
  519. g_strLogModTime.LoadString( IDS_SEND_TIME );
  520. //错误提示字符串
  521. CString strError, strMsgHint;
  522. strError.LoadString( IDS_ERROR_EXEC_SQL );
  523. strcpy(g_strErrorExecSql, (char*)(LPCTSTR)strError );
  524. strError.LoadString( IDS_ERROR_DB_DISCONNECTION );
  525. strcpy(g_strErrorDBDisConnection, (char*)(LPCTSTR)strError );
  526. //操作提示
  527. strMsgHint.LoadString( IDS_PROMPT_USERNAME_NOTNULL );
  528. strcpy(g_strMsgUserNotNULL, (char*)(LPCTSTR)strMsgHint);
  529. strMsgHint.LoadString( IDS_PROMPT_PWD_NOT_NULL );
  530. strcpy(g_strMsgPwdNotNULL, (char*)(LPCTSTR)strMsgHint);
  531. strMsgHint.LoadString( IDS_PROMPT_USER_INVALID );
  532. strcpy(g_strMsgUserInvalid, (char*)(LPCTSTR)strMsgHint);
  533. strMsgHint.LoadString( IDS_PROMPT_CONFIRM_DEL );
  534. strcpy(g_strMsgConfirmDel, (char*)(LPCTSTR)strMsgHint);
  535. strMsgHint.LoadString( IDS_PROMPT_SELECT_DEL );
  536. strcpy(g_strMsgSelectDel, (char*)(LPCTSTR)strMsgHint);
  537. strMsgHint.LoadString( IDS_PROMPT_EDIT_SUCCESS );
  538. strcpy(g_strMsgEditSuccess, (char*)(LPCTSTR)strMsgHint);
  539. strMsgHint.LoadString( IDS_PROMPT_SELECT_EDIT );
  540. strcpy(g_strMsgSelectEdit, (char*)(LPCTSTR)strMsgHint);
  541. strMsgHint.LoadString( IDS_PROMPT );
  542. strcpy(g_strMsgPrompt, (char*)(LPCTSTR)strMsgHint);
  543. strMsgHint.LoadString( IDS_PROMPT_CONFIRM_DELRECORD );
  544. strcpy(g_strMsgConfirmDelRecord, (char*)(LPCTSTR)strMsgHint);
  545. strMsgHint.LoadString( IDS_PROMPT_USER_DISENABLE );
  546. strcpy(g_strMsgUserDisable, (char *)(LPCTSTR)strMsgHint);
  547. strMsgHint.LoadString( IDS_MSG_HINT_DB_CONNECTION );
  548. strcpy(g_strMsgDBConnectionSuccess, (char*)(LPCTSTR)strMsgHint );
  549. strMsgHint.LoadString( IDS_MSG_HINT_DB_CONNECTION_FAIL );
  550. strcpy(g_strMsgDBConnectionFail, (char*)(LPCTSTR)strMsgHint );
  551. return 0;
  552. }
  553. VOID TerminateLastProcess()
  554. {
  555. HANDLE hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  556. if (hSnapShot != NULL)
  557. {
  558. PROCESSENTRY32 ProcessInfo = {0};//声明进程信息变量
  559. ProcessInfo.dwSize = sizeof(ProcessInfo);//设置ProcessInfo的大小
  560. //返回系统中第一个进程的信息
  561. BOOL bStatus = Process32First(hSnapShot, &ProcessInfo);
  562. while (bStatus)
  563. {
  564. if (!_stricmp(g_strAppName, ProcessInfo.szExeFile))//映像名称
  565. {
  566. HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, ProcessInfo.th32ProcessID);
  567. ::TerminateProcess(hProcess, 1);
  568. hProcess = NULL;
  569. Sleep(1000);
  570. break;
  571. }
  572. else
  573. //获取下一个进程的信息
  574. bStatus = Process32Next(hSnapShot, &ProcessInfo);
  575. }
  576. }
  577. }
  578. //-------------------------------------------------------------------------------------
  579. //Description:
  580. // This function maps a character string to a wide-character (Unicode) string
  581. //
  582. //Parameters:
  583. // lpcszStr: [in] Pointer to the character string to be converted
  584. // lpwszStr: [out] Pointer to a buffer that receives the translated string.
  585. // dwSize: [in] Size of the buffer
  586. //
  587. //Return Values:
  588. // TRUE: Succeed
  589. // FALSE: Failed
  590. //
  591. //Example:
  592. // MByteToWChar(szA,szW,sizeof(szW)/sizeof(szW[0]));
  593. //---------------------------------------------------------------------------------------
  594. BOOL MByteToWChar(LPCSTR lpcszStr, LPWSTR lpwszStr, DWORD dwSize)
  595. {
  596. // Get the required size of the buffer that receives the Unicode
  597. // string.
  598. DWORD dwMinSize;
  599. dwMinSize = MultiByteToWideChar (CP_ACP, 0, lpcszStr, -1, NULL, 0);
  600. if(dwSize < dwMinSize)
  601. {
  602. return FALSE;
  603. }
  604. // Convert headers from ASCII to Unicode.
  605. MultiByteToWideChar (CP_ACP, 0, lpcszStr, -1, lpwszStr, dwMinSize);
  606. return TRUE;
  607. }
  608. //-------------------------------------------------------------------------------------
  609. //Description:
  610. // This function maps a wide-character string to a new character string
  611. //
  612. //Parameters:
  613. // lpcwszStr: [in] Pointer to the character string to be converted
  614. // lpszStr: [out] Pointer to a buffer that receives the translated string.
  615. // dwSize: [in] Size of the buffer
  616. //
  617. //Return Values:
  618. // TRUE: Succeed
  619. // FALSE: Failed
  620. //
  621. //Example:
  622. // MByteToWChar(szW,szA,sizeof(szA)/sizeof(szA[0]));
  623. //---------------------------------------------------------------------------------------
  624. BOOL WCharToMByte(LPCWSTR lpcwszStr, LPSTR lpszStr, DWORD dwSize)
  625. {
  626. DWORD dwMinSize;
  627. dwMinSize = WideCharToMultiByte(CP_OEMCP,NULL,lpcwszStr,-1,NULL,0,NULL,FALSE);
  628. if(dwSize < dwMinSize)
  629. {
  630. return FALSE;
  631. }
  632. WideCharToMultiByte(CP_OEMCP,NULL,lpcwszStr,-1,lpszStr,dwSize,NULL,FALSE);
  633. return TRUE;
  634. }
  635. //////////////////////////////////////////////////////////////////////////////
  636. //名称:GetExcelDriver
  637. //功能:获取ODBC中Excel驱动
  638. //作者:徐景周(jingzhou_xu@163.net)
  639. //组织:未来工作室(Future Studio)
  640. //日期:2002.9.1
  641. /////////////////////////////////////////////////////////////////////////////
  642. CString GetExcelDriver()
  643. {
  644. char szBuf[2001];
  645. WORD cbBufMax = 2000;
  646. WORD cbBufOut;
  647. char *pszBuf = szBuf;
  648. CString sDriver;
  649. // 获取已安装驱动的名称(涵数在odbcinst.h里)
  650. if (!SQLGetInstalledDrivers(szBuf, cbBufMax, &cbBufOut))
  651. return "";
  652. // 检索已安装的驱动是否有Excel...
  653. do
  654. {
  655. if (strstr(pszBuf, "Excel") != 0)
  656. {
  657. //发现 !
  658. sDriver = CString(pszBuf);
  659. break;
  660. }
  661. pszBuf = strchr(pszBuf, '\0') + 1;
  662. }
  663. while (pszBuf[1] != '\0');
  664. return sDriver;
  665. }
  666. ///////////////////////////////////////////////////////////////////////////////
  667. // BOOL MakeSurePathExists( CString &Path,bool FilenameIncluded)
  668. // 参数:
  669. // Path 路径
  670. // FilenameIncluded 路径是否包含文件名
  671. // 返回值:
  672. // 文件是否存在
  673. // 说明:
  674. // 判断Path文件(FilenameIncluded=true)是否存在,存在返回TURE,不存在返回FALSE
  675. // 自动创建目录
  676. //
  677. ///////////////////////////////////////////////////////////////////////////////
  678. BOOL MakeSurePathExists( CString &Path,
  679. bool FilenameIncluded)
  680. {
  681. int Pos=0;
  682. while((Pos=Path.Find('\\',Pos+1))!=-1)
  683. CreateDirectory(Path.Left(Pos),NULL);
  684. if(!FilenameIncluded)
  685. CreateDirectory(Path,NULL);
  686. // return ((!FilenameIncluded)?!_access(Path,0):
  687. // !_access(Path.Left(Path.ReverseFind('\\')),0));
  688. return !_access(Path,0);
  689. }
  690. //获得默认的文件名
  691. BOOL GetDefaultXlsFileName(CString& sExcelFile)
  692. {
  693. ///默认文件名:yyyymmddhhmmss.xls
  694. CString timeStr;
  695. CTime day;
  696. day=CTime::GetCurrentTime();
  697. int filenameday,filenamemonth,filenameyear,filehour,filemin,filesec;
  698. filenameday=day.GetDay();//dd
  699. filenamemonth=day.GetMonth();//mm月份
  700. filenameyear=day.GetYear();//yyyy
  701. filehour=day.GetHour();//hh
  702. filemin=day.GetMinute();//mm分钟
  703. filesec=day.GetSecond();//ss
  704. timeStr.Format("%04d%02d%02d%02d%02d%02d",filenameyear,filenamemonth,filenameday,filehour,filemin,filesec);
  705. sExcelFile = timeStr + ".xls";
  706. // prompt the user (with all document templates)
  707. CFileDialog dlgFile(FALSE,".xls",sExcelFile);
  708. CString title;
  709. CString strFilter;
  710. title = g_strDevDataLog;
  711. strFilter = "Excel文件(*.xls)";
  712. strFilter += (TCHAR)'\0'; // next string please
  713. strFilter += _T("*.xls");
  714. strFilter += (TCHAR)'\0'; // last string
  715. dlgFile.m_ofn.nMaxCustFilter++;
  716. dlgFile.m_ofn.nFilterIndex = 1;
  717. // append the "*.*" all files filter
  718. CString allFilter;
  719. VERIFY(allFilter.LoadString(AFX_IDS_ALLFILTER));
  720. strFilter += allFilter;
  721. strFilter += (TCHAR)'\0'; // next string please
  722. strFilter += _T("*.*");
  723. strFilter += (TCHAR)'\0'; // last string
  724. dlgFile.m_ofn.nMaxCustFilter++;
  725. dlgFile.m_ofn.lpstrFilter = strFilter;
  726. dlgFile.m_ofn.lpstrTitle = title;
  727. if (dlgFile.DoModal()==IDCANCEL)
  728. return FALSE; // open cancelled
  729. sExcelFile = dlgFile.GetPathName();
  730. if (MakeSurePathExists(sExcelFile,true))
  731. {
  732. if(!DeleteFile(sExcelFile))
  733. { // delete the file
  734. MessageBox(NULL, g_strOverWriteError, g_strTip, MB_ICONINFORMATION);
  735. return FALSE;
  736. }
  737. }
  738. return TRUE;
  739. }
  740. ///////////////////////////////////////////////////////////////////////////////
  741. // void ExportListToExcel(CListCtrl* pList, CString strTitle)
  742. // 参数:
  743. // pList 需要导出的List控件指针
  744. // strTitle 导出的数据表标题
  745. // 说明:
  746. // 导出CListCtrl控件的全部数据到Excel文件。Excel文件名由用户通过“另存为”
  747. // 对话框输入指定。创建名为strTitle的工作表,将List控件内的所有数据(包括
  748. // 列名和数据项)以文本的形式保存到Excel工作表中。保持行列关系。
  749. //
  750. // edit by [r]@dotlive.cnblogs.com
  751. ///////////////////////////////////////////////////////////////////////////////
  752. void ExportListToExcel(CDataGrid* pList, CString strTitle)
  753. {
  754. #if 1
  755. CString warningStr;
  756. if (pList->GetRowCount()>0)
  757. {
  758. CDatabase database;
  759. CString sDriver;
  760. CString sExcelFile;
  761. CString sSql;
  762. CString tableName = strTitle;
  763. // 检索是否安装有Excel驱动 "Microsoft Excel Driver (*.xls)"
  764. sDriver = GetExcelDriver();
  765. if (sDriver.IsEmpty())
  766. {
  767. // 没有发现Excel驱动
  768. //AfxMessageBox("没有安装Excel!\n请先安装Excel软件才能使用导出功能!");
  769. MessageBox(NULL, "没有安装Excel!\n请先安装Excel软件才能使用导出功能!", g_strTip, MB_ICONINFORMATION);
  770. return;
  771. }
  772. ///默认文件名
  773. if (!GetDefaultXlsFileName(sExcelFile))
  774. return;
  775. // 创建进行存取的字符串
  776. sSql.Format("DRIVER={%s};DSN='';FIRSTROWHASNAMES=1;READONLY=FALSE;CREATE_DB=\"%s\";DBQ=%s",sDriver, sExcelFile, sExcelFile);
  777. // 创建数据库 (既Excel表格文件)
  778. if( database.OpenEx(sSql,CDatabase::noOdbcDialog) )
  779. {
  780. // 创建表结构
  781. int i=0;
  782. LVCOLUMN columnData;
  783. CString columnName;
  784. int columnNum = 0;
  785. CString strH;
  786. CString strV;
  787. sSql = "";
  788. strH = "";
  789. columnData.mask = LVCF_TEXT;
  790. columnData.cchTextMax =100;
  791. columnData.pszText = columnName.GetBuffer (100);
  792. for(i=0;i<pList->GetColumnCount();i++)//GetColumn(i,&columnData)
  793. {
  794. if (i!=0)
  795. {
  796. sSql = sSql + ", " ;
  797. strH = strH + ", " ;
  798. }
  799. CString sName = pList->m_field.GetAt(i).Caption.Trim();
  800. sSql = sSql + " " + sName +" TEXT";
  801. strH = strH + " " + sName +" ";
  802. }
  803. columnName.ReleaseBuffer ();
  804. columnNum = i;
  805. sSql = "CREATE TABLE " + tableName + " ( " + sSql + " ) ";
  806. database.ExecuteSQL(sSql);
  807. // 插入数据项
  808. int nItemIndex;
  809. for( nItemIndex=1;nItemIndex<pList->GetRowCount();nItemIndex++ )
  810. {
  811. strV = "";
  812. for(i=0;i<columnNum;i++)
  813. {
  814. if (i!=0)
  815. {
  816. strV = strV + ", " ;
  817. }
  818. strV = strV + " '" + pList->GetItemText(nItemIndex,i) +"' ";
  819. }
  820. sSql = "INSERT INTO "+ tableName
  821. +" ("+ strH + ")"
  822. +" VALUES("+ strV + ")";
  823. database.ExecuteSQL(sSql);
  824. }
  825. }
  826. // 关闭数据库
  827. database.Close();
  828. warningStr.Format(g_strSaveas,sExcelFile);
  829. MessageBox(NULL, warningStr, g_strTip, MB_ICONINFORMATION);
  830. }
  831. #endif
  832. }
  833. CString InterceptString(int qlen, CString strSource)
  834. {
  835. int len,i,y;
  836. CString sTemp,sreturn;
  837. strSource.TrimLeft();
  838. strSource.TrimRight();
  839. len=strSource.GetLength();
  840. y=0;
  841. sTemp=strSource.Right(len-qlen);
  842. for(i=0;i<len;i++)
  843. {
  844. //if(sTemp[y]<0 || sTemp[y]>255)
  845. //if(sTemp[i]<0 || sTemp[i]>=128)
  846. //if(sTemp.GetAt(y) & 0x80 )
  847. if(::IsDBCSLeadByte(sTemp.GetAt(y)))
  848. y=y+2;
  849. else
  850. y=y+1;
  851. if(y>=70)
  852. break;
  853. }
  854. sreturn=sTemp.Left(y);
  855. return sreturn;
  856. }
  857. //显示选择文件夹窗口
  858. //参数 sFolderPath:用于返回用户选择的文件夹的路径
  859. //参数 sTitle:用于指定选择文件夹窗口的标题
  860. //返回值 :操作结果,用户取消选择或操作失败返回FALSE,否则TRUE
  861. BOOL BrowseForFolder(CString & sFolderPath, CString sTitle)
  862. {
  863. BROWSEINFO bi;
  864. char Buffer[_MAX_PATH];
  865. bi.hwndOwner = NULL;
  866. bi.pidlRoot = NULL;
  867. bi.pszDisplayName = Buffer;
  868. bi.lpszTitle = sTitle;
  869. bi.ulFlags = 0;
  870. bi.lpfn = NULL;
  871. LPITEMIDLIST pIDList = SHBrowseForFolder(& bi);
  872. if (!pIDList)
  873. return FALSE;
  874. SHGetPathFromIDList(pIDList, Buffer);
  875. sFolderPath = Buffer;
  876. LPMALLOC lpMalloc;
  877. if (FAILED(SHGetMalloc(& lpMalloc)))
  878. return FALSE;
  879. //释放内存
  880. lpMalloc->Free(pIDList);
  881. lpMalloc->Release();
  882. return TRUE;
  883. }
  884. void TimeTicksToInt(CString strSrc, unsigned long &nDest)
  885. {
  886. CString strLeft;
  887. int nIndex = strSrc.Find(":");
  888. if( nIndex != -1 )
  889. {
  890. strLeft = strSrc.Left( nIndex - 1 );
  891. nDest = atoi(strLeft);
  892. }
  893. }
  894. ///目录是否存在的检查:
  895. bool CheckFolderExist(CString strPath)
  896. {
  897. WIN32_FIND_DATA wfd;
  898. bool rValue = false;
  899. HANDLE hFind = FindFirstFile((char *)(LPCTSTR)strPath, &wfd);
  900. if ((hFind != INVALID_HANDLE_VALUE) && (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
  901. {
  902. rValue = true;
  903. }
  904. FindClose(hFind);
  905. return rValue;
  906. }
  907. BOOL BrowseFile(CString strFile, CString strFilter,
  908. CStringList *pFileList,
  909. CStringList *pFileNameList,
  910. CStringList *pShowNameList) //查找文件函数
  911. {
  912. CFileFind FileFind;
  913. CString SearchTarget = strFile; // + "\\" +strFilter;
  914. if( SearchTarget.Right(1) != "\\" )
  915. SearchTarget += "\\";
  916. SearchTarget += "*.*";
  917. BOOL res = FileFind.FindFile(SearchTarget);
  918. while(res)
  919. {
  920. res = FileFind.FindNextFile();
  921. if(FileFind.IsDirectory() && !FileFind.IsDots())
  922. {
  923. //如果是一个子目录,用递归继续往深一层找
  924. CString strPath = FileFind.GetFilePath();
  925. CString strTitle = FileFind.GetFileTitle();
  926. BrowseFile(strPath, strFilter, pFileList, pFileNameList, pShowNameList);
  927. }
  928. else if(!FileFind.IsDirectory() && !FileFind.IsDots())
  929. {
  930. //显示当前访问的文件
  931. CString strExtName;
  932. CString strName;
  933. strName = FileFind.GetFileName();
  934. strExtName = strName.Right(strName.GetLength() - strName.Find('.')-1);
  935. strExtName.MakeUpper();
  936. if(!strExtName.CompareNoCase(strFilter))//扩展名正确
  937. {
  938. CString strPath = FileFind.GetFilePath();
  939. pFileList->AddTail(strPath);
  940. pFileNameList->AddTail(strName);
  941. strName = strName.Left(strName.Find('.'));
  942. pShowNameList->AddTail(strName);
  943. }
  944. }
  945. }
  946. FileFind.Close();//关闭
  947. return TRUE;
  948. }
  949. //注册OCX
  950. BOOL RegisterOCX( CString sOcxPath )
  951. {
  952. LPCTSTR pszDllName = sOcxPath;
  953. HINSTANCE hLib = LoadLibrary(pszDllName);
  954. if (hLib < (HINSTANCE)HINSTANCE_ERROR)
  955. {
  956. return FALSE;
  957. }
  958. FARPROC lpDllEntryPoint;
  959. lpDllEntryPoint = GetProcAddress(hLib,_T("DllRegisterServer"));
  960. if(lpDllEntryPoint!=NULL)
  961. {
  962. if(FAILED(( *lpDllEntryPoint)()))
  963. {
  964. FreeLibrary(hLib);
  965. return FALSE;
  966. }
  967. return TRUE;
  968. }
  969. else
  970. return FALSE;
  971. }
  972. //注销OCX
  973. BOOL UnRegisterOCX( CString sOcxPath )
  974. {
  975. LPCTSTR pszDllName = sOcxPath;
  976. HINSTANCE hLib = LoadLibrary(pszDllName);
  977. if (hLib < (HINSTANCE)HINSTANCE_ERROR)
  978. {
  979. return FALSE;
  980. }
  981. FARPROC lpDllEntryPoint;
  982. lpDllEntryPoint = GetProcAddress(hLib,_T("DllUnregisterServer"));
  983. if(lpDllEntryPoint!=NULL)
  984. {
  985. if(FAILED(( *lpDllEntryPoint)()))
  986. {
  987. FreeLibrary(hLib);
  988. return FALSE;
  989. }
  990. return TRUE;
  991. }
  992. else
  993. return FALSE;
  994. }
  995. WCHAR* StrToWchar(CString strSrc)
  996. {
  997. size_t nLen = strSrc.GetLength()+1;
  998. char *szText = new char[nLen];
  999. snprintf(szText, nLen, "%s", strSrc);
  1000. size_t nLenW = ::MultiByteToWideChar(CP_ACP,0,(const char *)szText,int(nLen),NULL,0);
  1001. WCHAR *wszText = new WCHAR[nLenW+1];
  1002. ::MultiByteToWideChar(CP_ACP,0,(const char *)szText,int(nLen),wszText,int(nLenW));
  1003. wszText[nLenW] = L'\0';
  1004. //chn add
  1005. delete []szText;
  1006. szText = NULL;
  1007. return wszText;
  1008. }
  1009. bool g_FindProcess( CString sAppName )
  1010. {
  1011. bool bRet = false;
  1012. HANDLE hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  1013. if (hSnapShot != NULL)
  1014. {
  1015. PROCESSENTRY32 ProcessInfo = {0};//声明进程信息变量
  1016. ProcessInfo.dwSize = sizeof(ProcessInfo);//设置ProcessInfo的大小
  1017. //返回系统中第一个进程的信息
  1018. BOOL bStatus = Process32First(hSnapShot, &ProcessInfo);
  1019. while (bStatus)
  1020. {
  1021. if (!_stricmp(sAppName, ProcessInfo.szExeFile))//映像名称
  1022. {
  1023. HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, ProcessInfo.th32ProcessID);
  1024. bRet = true;
  1025. break;
  1026. }
  1027. else
  1028. {
  1029. //获取下一个进程的信息
  1030. bStatus = Process32Next(hSnapShot, &ProcessInfo);
  1031. }
  1032. }
  1033. }
  1034. return bRet;
  1035. }