⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 configwnd.c

📁 一文件过滤与加密,系统监视以及控制的东东,自己看
💻 C
📖 第 1 页 / 共 2 页
字号:
	    EnableDlgItem (hDlg, IDC_BROWSE_ASK_SOUND, FALSE) ;	    EnableDlgItem (hDlg, IDC_BROWSE_VIRUS_SOUND, FALSE) ;	    Config_SetInteger(CFGINT_SOUND, 1) ;	    Config_SaveInteger(CFGINT_SOUND) ;	    Sounds_ReloadConfig () ;	  }	  return TRUE ;	case MAKELONG(IDC_CUSTOM_SOUNDS,BN_CLICKED):	  {	    EnableDlgItem (hDlg, IDC_ALERT_SOUND, TRUE) ;	    EnableDlgItem (hDlg, IDC_ASK_SOUND, TRUE) ;	    EnableDlgItem (hDlg, IDC_VIRUS_SOUND, TRUE) ;	    EnableDlgItem (hDlg, IDC_BROWSE_ALERT_SOUND, TRUE) ;	    EnableDlgItem (hDlg, IDC_BROWSE_ASK_SOUND, TRUE) ;	    EnableDlgItem (hDlg, IDC_BROWSE_VIRUS_SOUND, TRUE) ;	    Config_SetInteger(CFGINT_SOUND, 2) ;	    Config_SaveInteger(CFGINT_SOUND) ;	    Sounds_ReloadConfig () ;	  }	  return TRUE ;	case MAKELONG(IDC_EXPORT,BN_CLICKED): //    ======== 'Export' button clicked ========	  {	    TCHAR	szFileName[64] ;	    int		i ;	    BOOL	bSuccess ;	    	    if( _ConfigWnd_Browse (hDlg, TRUE, szBuffer, MAX_PATH) )	      {		SpySrv_LockFilterSet () ;		bSuccess = FilterFile_Write (szBuffer, SpySrv_GetFilterSet()) ;		SpySrv_UnlockFilterSet () ;		if( ! bSuccess )		  {		    		    _tcslcpy (szFileName, PathFindFileName(szBuffer), 64) ;		    		    i = wsprintf (szBuffer, STR_DEF(_ERROR_WRITING_FILE_S,						    TEXT("Error writing file \"%s\"")), szFileName) ;		    		    wsprintf (szBuffer+i, TEXT("\r\n%s"), FilterFile_GetErrorString()) ;		    		    MessageBox (hDlg, szBuffer, NULL, MB_ICONERROR) ;		  }	      }	  }	  return TRUE ;  //    ======== 'Export' button clicked ========	case MAKELONG(IDC_IMPORT,BN_CLICKED): //    ======== 'Import' button clicked ========	  {	    HFILTERSET	hFilterSet ;	    TCHAR	szFileName[64] ;	    int		i ;	    	    if( _ConfigWnd_Browse (hDlg, FALSE, szBuffer, MAX_PATH) )	      {				hFilterSet = FilterFile_Read (szBuffer) ;				if( ! hFilterSet )		  {		    		    _tcslcpy (szFileName, PathFindFileName(szBuffer), 64) ;		    		    i = wsprintf (szBuffer, STR_DEF(_ERROR_READING_FILE_S,						    TEXT("Error reading file \"%s\"")), szFileName) ;		    		    wsprintf (szBuffer+i, TEXT("\r\n%s"), FilterFile_GetErrorString()) ;		    		    MessageBox (hDlg, szBuffer, NULL, MB_ICONERROR) ;		  }		else		  {		    i = MessageBox(hDlg, 				   STR_DEF(_CONFIRM_ERASE_FILTERS, g_szConfirmEraseFilters),				   TEXT(APPLICATION_NAME),				   MB_ICONWARNING|MB_YESNO) ;		    if( i==IDYES )		      {			SpySrv_LockFilterSet () ;			SpySrv_SetFilterSet (hFilterSet) ;			SpySrv_SendFilterSetToDriver () ;			SpySrv_UnlockFilterSet () ;		      }		    else		      FilterSet_Destroy (hFilterSet) ;		  }	      }	    	  }	  return TRUE ; //    ======== 'Import' button clicked ========	case MAKELONG(IDC_RESET,BN_CLICKED): //    ======== 'Reset' button clicked ========	  {	    HFILTERSET	hFilterSet ;	    int		i ;	    	    hFilterSet = FilterSet_Create (64) ;	    	    if( hFilterSet )	      {			FilterSet_InitDefaultFilter (hFilterSet) ;	    		i = MessageBox(hDlg, 			       STR_DEF(_CONFIRM_ERASE_FILTERS, g_szConfirmEraseFilters),			       TEXT(APPLICATION_NAME),			       MB_ICONWARNING|MB_YESNO) ;				if( i==IDYES )		  {		    SpySrv_LockFilterSet () ;		    SpySrv_SetFilterSet (hFilterSet) ;		    SpySrv_SendFilterSetToDriver () ;		    SpySrv_UnlockFilterSet () ;		  }		else		  FilterSet_Destroy (hFilterSet) ;	      }	  	    	  }	  return TRUE ; //    ======== 'Reset' button clicked ========	case IDM_FOLDER_ADD:	  {	    TCHAR szFolder[MAX_PATH] ;	    ITEMIDLIST * pidl ; 	    BROWSEINFO bi =	      {		.hwndOwner = hDlg,	      } ;	    pidl = SHBrowseForFolder (&bi) ;	    	    if( pidl && SHGetPathFromIDList(pidl, szFolder) )	      {		LVITEM	lvi = {0} ;		HWND	hwndList = GetDlgItem (hDlg, IDC_SCAN_FOLDERS) ;		lvi.iItem = ListView_GetItemCount(hwndList) ;		lvi.mask = LVIF_TEXT ;		lvi.pszText = szFolder ;		ListView_InsertItem (hwndList, &lvi) ;	      }	    	    PostMessage (hDlg, WM_FOLDERS_LIST_CHANGED, 0, 0) ;	  }	  return TRUE ; // IDM_FOLDER_ADD	case IDM_FOLDER_REMOVE:	  {	    HWND hwndList = GetDlgItem (hDlg, IDC_SCAN_FOLDERS) ;	    while( 1 )	      {		int i = ListView_GetNextItem (hwndList, -1, LVNI_SELECTED) ;		  		if( i<0 ) break ;		ListView_DeleteItem (hwndList, i) ;	      }	    PostMessage (hDlg, WM_FOLDERS_LIST_CHANGED, 0, 0) ;	  }	  return TRUE ; // IDM_FOLDER_REMOVE	case IDM_PATTERN_ADD:	  {	    LPTSTR	szPattern = TEXT("<pattern>") ;	    LVITEM	lvi = {0} ;	    HWND	hwndList = GetDlgItem (hDlg, IDC_SCAN_PATTERNS) ;	    int		iItem = ListView_GetItemCount(hwndList) ;	    lvi.iItem = iItem ;	    lvi.mask = LVIF_TEXT ;	    lvi.pszText = szPattern ;	    ListView_InsertItem (hwndList, &lvi) ;	    ListView_EditLabel (hwndList, iItem) ;	  }	  return TRUE ; // IDM_FOLDER_ADD	case IDM_PATTERN_REMOVE:	  {	    HWND hwndList = GetDlgItem (hDlg, IDC_SCAN_PATTERNS) ;	    while( 1 )	      {		int i = ListView_GetNextItem (hwndList, -1, LVNI_SELECTED) ;		  		if( i<0 ) break ;		ListView_DeleteItem (hwndList, i) ;	      }	    PostMessage (hDlg, WM_PATTERN_LIST_CHANGED, 0, 0) ;	  }	  return TRUE ; // IDM_FOLDER_REMOVE	}     return FALSE ; // WM_COMMAND    case WM_NOTIFY:      {	union	{	  NMHDR * hdr ;	} pnm ;	pnm.hdr = (NMHDR*) lParam ;	switch( pnm.hdr->idFrom )	  {	  case IDC_SCAN_FOLDERS:	    {	      switch( pnm.hdr->code )		{		case NM_RCLICK:		  {		    POINT pt ;		    if( ListView_GetSelectedCount(GetDlgItem(hDlg,IDC_SCAN_FOLDERS)) > 0 )		      EnableMenuItem (g_hmenuFolders, IDM_FOLDER_REMOVE, MF_BYCOMMAND|MF_ENABLED) ;		    else		      EnableMenuItem (g_hmenuFolders, IDM_FOLDER_REMOVE, MF_BYCOMMAND|MF_GRAYED) ;		    // get mouse position		    GetCursorPos (&pt) ;		    		    // display menu		    TrackPopupMenu (g_hmenuFolders, TPM_RIGHTBUTTON, pt.x, pt.y, 0, hDlg, NULL) ;		  }		  return TRUE ; // NM_RCLICK		case LVN_ENDLABELEDIT:		  {		    SetWindowLong (hDlg, DWL_MSGRESULT, TRUE) ;		    		    PostMessage (hDlg, WM_FOLDERS_LIST_CHANGED, 0, 0) ;		  }		  return TRUE ; // LVN_ENDLABELEDIT		}	    }	    return TRUE ; // IDC_SCAN_FOLDERS	  case IDC_SCAN_PATTERNS:	    {	      switch( pnm.hdr->code )		{		case NM_RCLICK:		  {		    POINT pt ;		    if( ListView_GetSelectedCount(GetDlgItem(hDlg,IDC_SCAN_PATTERNS)) > 0 )		      EnableMenuItem (g_hmenuPatterns, IDM_FOLDER_REMOVE, MF_BYCOMMAND|MF_ENABLED) ;		    else		      EnableMenuItem (g_hmenuPatterns, IDM_FOLDER_REMOVE, MF_BYCOMMAND|MF_GRAYED) ;		    // get mouse position		    GetCursorPos (&pt) ;		    		    // display menu		    TrackPopupMenu (g_hmenuPatterns, TPM_RIGHTBUTTON, pt.x, pt.y, 0, hDlg, NULL) ;		  }		  return TRUE ; // NM_RCLICK		case LVN_ENDLABELEDIT:		  {		    SetWindowLong (hDlg, DWL_MSGRESULT, TRUE) ;		    		    PostMessage (hDlg, WM_PATTERN_LIST_CHANGED, 0, 0) ;		  }		  return TRUE ; // LVN_ENDLABELEDIT		}	    }	    return TRUE ; // IDC_SCAN_PATTERNS	  }       }      return FALSE ; // WM_NOTIFY    case WM_FOLDERS_LIST_CHANGED:      {	HWND hwndList = GetDlgItem (hDlg, IDC_SCAN_FOLDERS) ;	_ConfigWnd_ListToConfig (hwndList, CFGSAR_SCAN_FOLDERS) ;		BkgndScan_ReloadConfig () ;      }      return TRUE ;          case WM_PATTERN_LIST_CHANGED:      {	HWND hwndList = GetDlgItem (hDlg, IDC_SCAN_PATTERNS) ;	LPCTSTR * pszFilters ;	UINT nFilters ;	_ConfigWnd_ListToConfig (hwndList, CFGSAR_SCAN_PATTERNS) ;	pszFilters = Config_GetStringArray (CFGSAR_SCAN_PATTERNS, &nFilters) ;		SpySrv_SetScanFilters (pszFilters, nFilters) ;	BkgndScan_ReloadConfig () ;	      }      return TRUE ;          }  return FALSE ;}/******************************************************************//* Internal function : Browse                                     *//******************************************************************/BOOL _ConfigWnd_Browse (HWND hDlg, BOOL bExport, LPTSTR szPath, UINT nMax){  TCHAR szFilter[MAX_FILTER] ;  INT   iPos ;      OPENFILENAME ofn = {    .lStructSize = sizeof(OPENFILENAME),    .hwndOwner   = hDlg,    .nMaxFile    = nMax,    .lpstrFile   = szPath,    .lpstrFilter = szFilter,    .lpstrDefExt = TEXT("wpf"),  } ;    szPath[0] = 0 ;  if( bExport )    ofn.Flags = OFN_PATHMUSTEXIST ;  else    ofn.Flags = OFN_PATHMUSTEXIST|OFN_FILEMUSTEXIST|OFN_HIDEREADONLY ;    iPos = 0 ;  iPos += 1 + _sntprintf (szFilter+iPos, MAX_FILTER-iPos, TEXT("%s (*.wpf)"),			  STR_DEF(_FILTER_FILES,TEXT("Winpooch filters"))) ;  iPos += 1 + _sntprintf (szFilter+iPos, MAX_FILTER-iPos, TEXT("*.wpf")) ;  iPos += 1 + _sntprintf (szFilter+iPos, MAX_FILTER-iPos, TEXT("%s (*.*)"),			  STR_DEF(_ALL_FILES,TEXT("All files"))) ;  iPos += 1 + _sntprintf (szFilter+iPos, MAX_FILTER-iPos, TEXT("*.*")) ;  szFilter[iPos] = 0 ;    if( bExport ) return GetSaveFileName (&ofn) ;  return GetOpenFileName (&ofn) ;}/******************************************************************//* Internal function                                              *//******************************************************************/BOOL _ConfigWnd_BrowseSound (HWND hDlg, LPTSTR szPath, UINT nMax){  TCHAR szFilter[MAX_FILTER] ;  INT   iPos ;      OPENFILENAME ofn = {    .lStructSize	= sizeof(OPENFILENAME),    .hwndOwner		= hDlg,    .nMaxFile		= nMax,    .lpstrFile		= szPath,    .lpstrFilter	= szFilter,    .lpstrDefExt	= TEXT("wav"),    .Flags		= OFN_PATHMUSTEXIST|OFN_FILEMUSTEXIST|OFN_HIDEREADONLY,  } ;    szPath[0] = 0 ;    iPos = 0 ;  iPos += 1 + _sntprintf (szFilter+iPos, MAX_FILTER-iPos, TEXT("%s (*.wav)"),			  STR_DEF(_WAVE_FILES,TEXT("Wave files"))) ;  iPos += 1 + _sntprintf (szFilter+iPos, MAX_FILTER-iPos, TEXT("*.wav")) ;  iPos += 1 + _sntprintf (szFilter+iPos, MAX_FILTER-iPos, TEXT("%s (*.*)"),			  STR_DEF(_ALL_FILES,TEXT("All files"))) ;  iPos += 1 + _sntprintf (szFilter+iPos, MAX_FILTER-iPos, TEXT("*.*")) ;  szFilter[iPos] = 0 ;    return GetOpenFileName (&ofn) ;}/******************************************************************//* Internal function                                              *//******************************************************************/VOID _ConfigWnd_ConfigToList (HWND hwndList, UINT nArrayId) {  UINT		i, nLength ;  LPCTSTR	*pszArray ;  LVITEM	lvi = {0} ;    pszArray = Config_GetStringArray (nArrayId, &nLength) ;    ASSERT (hwndList!=NULL) ;  TRACE_INFO (TEXT("nLength = %d\n"), nLength) ;    ListView_DeleteAllItems (hwndList) ;  for( i=0 ; i<nLength ; i++ )    {      TRACE_INFO (TEXT("%d = %s\n"), i, pszArray[i]) ;      lvi.iItem = i ;      lvi.mask = LVIF_TEXT ;      lvi.pszText = (LPTSTR)pszArray[i] ;      ListView_InsertItem (hwndList, &lvi) ;    }}/******************************************************************//* Internal function                                              *//******************************************************************/VOID _ConfigWnd_ListToConfig (HWND hwndList, UINT nArrayId) {  LPTSTR* pszArray ;  UINT nLength ;  UINT i ;  nLength = ListView_GetItemCount(hwndList) ;  pszArray = malloc (nLength*sizeof(LPCTSTR)) ;  for( i=0 ; i<nLength ; i++ )    {      pszArray[i] = malloc (MAX_PATH*sizeof(TCHAR)) ;             ListView_GetItemText (hwndList, i, 0, pszArray[i], MAX_PATH) ;      TRACE_INFO (TEXT("Item %d : %s\n"), i, pszArray[i]) ;    }    Config_SetStringArray (nArrayId, (LPCTSTR*)pszArray, nLength) ;  Config_SaveStringArray (nArrayId) ;  for( i=0 ; i<nLength ; i++ )    free (pszArray[i]) ;  free (pszArray) ;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -