ReactOS  0.4.12-dev-14-gd0c8636
export.c
Go to the documentation of this file.
1 /*
2  * PROJECT: ReactOS Services
3  * LICENSE: GPL - See COPYING in the top level directory
4  * FILE: base/applications/mscutils/servman/export.c
5  * PURPOSE: Save services to a file
6  * COPYRIGHT: Copyright 2006 Ged Murphy <gedmurphy@gmail.com>
7  *
8  */
9 
10 #include "precomp.h"
11 
12 #include <cderr.h>
13 
14 static DWORD
16  LPWSTR Text,
17  INT row,
18  INT col)
19 {
20  LVITEM item;
21  DWORD NumChars;
22 
23  ZeroMemory(&item, sizeof(item));
24  item.mask = LVIF_TEXT;
25  item.iSubItem = col;
26  item.pszText = Text;
27  item.cchTextMax = 500;
28  NumChars = (INT)SendMessageW(Info->hListView,
30  row,
31  (LPARAM)&item);
32  return NumChars;
33 }
34 
35 static BOOL
38 {
39  HANDLE hFile;
41 
42  hFile = CreateFileW(pszFileName,
44  0,
45  NULL,
48  NULL);
49 
50  if(hFile != INVALID_HANDLE_VALUE)
51  {
52  WCHAR LVText[500];
53  WCHAR newl[2] = {L'\r', L'\n'};
54  WCHAR tab = L'\t';
55  DWORD dwTextLength, dwWritten;
56  INT NumListedServ = 0;
57  INT i, k;
58 
59  NumListedServ = ListView_GetItemCount(Info->hListView);
60 
61  for (i=0; i < NumListedServ; i++)
62  {
63  for (k=0; k<5; k++)
64  {
65  dwTextLength = GetTextFromListView(Info,
66  LVText,
67  i,
68  k);
69  if (dwTextLength != 0)
70  {
71  WriteFile(hFile,
72  LVText,
73  sizeof(WCHAR) * dwTextLength,
74  &dwWritten,
75  NULL);
76 
77  WriteFile(hFile,
78  &tab,
79  sizeof(WCHAR),
80  &dwWritten,
81  NULL);
82  }
83  }
84  WriteFile(hFile,
85  newl,
86  sizeof(newl),
87  &dwWritten,
88  NULL);
89  }
90 
91  CloseHandle(hFile);
92  bSuccess = TRUE;
93  }
94 
95  return bSuccess;
96 }
97 
99 {
101  WCHAR szFileName[MAX_PATH];
102 
103  ZeroMemory(&ofn, sizeof(ofn));
104  szFileName[0] = UNICODE_NULL;
105 
106  ofn.lStructSize = sizeof(OPENFILENAME);
107  ofn.hwndOwner = Info->hMainWnd;
108  ofn.lpstrFilter = L"Text (Tab Delimited)(*.txt)\0*.txt\0Text (Comma Delimited)(*.csv)\0*.csv\0";
109  ofn.lpstrFile = szFileName;
110  ofn.nMaxFile = MAX_PATH;
111  ofn.lpstrDefExt = L"txt";
113 
114  if(GetSaveFileName(&ofn))
115  {
116  if (SaveServicesToFile(Info, szFileName))
117  return;
118  }
119 
121  MessageBoxW(NULL, L"Export to file failed", NULL, 0);
122 }
#define CDERR_GENERALCODES
Definition: cderr.h:5
#define OFN_EXPLORER
Definition: commdlg.h:104
DWORD Flags
Definition: commdlg.h:373
#define TRUE
Definition: types.h:120
#define CloseHandle
Definition: compat.h:398
LPCWSTR lpstrFilter
Definition: commdlg.h:363
__wchar_t WCHAR
Definition: xmlstorage.h:180
LPWSTR lpstrFile
Definition: commdlg.h:367
#define LVM_GETITEMTEXTW
Definition: commctrl.h:2650
OPENFILENAME ofn
Definition: main.cpp:37
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185
#define INVALID_HANDLE_VALUE
Definition: compat.h:391
#define ZeroMemory
Definition: winbase.h:1635
int32_t INT
Definition: typedefs.h:56
static BOOLEAN bSuccess
Definition: drive.cpp:419
struct TraceInfo Info
DWORD lStructSize
Definition: commdlg.h:360
#define LVIF_TEXT
Definition: commctrl.h:2279
#define GetSaveFileName
Definition: commdlg.h:666
GLenum GLclampf GLint i
Definition: glfuncs.h:14
LPCWSTR lpstrDefExt
Definition: commdlg.h:376
#define UNICODE_NULL
LONG_PTR LPARAM
Definition: windef.h:208
#define GENERIC_WRITE
Definition: nt_native.h:90
WORD WORD PSZ PSZ pszFileName
Definition: vdmdbg.h:41
#define INT(a)
Definition: assyntax.h:463
static DWORD GetTextFromListView(PMAIN_WND_INFO Info, LPWSTR Text, INT row, INT col)
Definition: export.c:15
smooth NULL
Definition: ftsmooth.c:416
#define ListView_GetItemCount(hwnd)
Definition: commctrl.h:2277
OPENFILENAMEA OPENFILENAME
Definition: commdlg.h:657
#define OFN_PATHMUSTEXIST
Definition: commdlg.h:117
BOOL WINAPI WriteFile(IN HANDLE hFile, IN LPCVOID lpBuffer, IN DWORD nNumberOfBytesToWrite OPTIONAL, OUT LPDWORD lpNumberOfBytesWritten OPTIONAL, IN LPOVERLAPPED lpOverlapped OPTIONAL)
Definition: rw.c:24
unsigned int BOOL
Definition: ntddk_ex.h:94
int WINAPI MessageBoxW(_In_opt_ HWND, _In_opt_ LPCWSTR, _In_opt_ LPCWSTR, _In_ UINT)
static BOOL SaveServicesToFile(PMAIN_WND_INFO Info, LPCWSTR pszFileName)
Definition: export.c:36
#define MAX_PATH
Definition: compat.h:26
unsigned long DWORD
Definition: ntddk_ex.h:95
DWORD nMaxFile
Definition: commdlg.h:368
VOID ExportFile(PMAIN_WND_INFO Info)
Definition: export.c:98
HWND hwndOwner
Definition: commdlg.h:361
#define FILE_ATTRIBUTE_NORMAL
Definition: compat.h:126
static const WCHAR L[]
Definition: oid.c:1087
#define OFN_HIDEREADONLY
Definition: commdlg.h:107
_In_ HANDLE hFile
Definition: mswsock.h:90
#define CREATE_ALWAYS
Definition: disk.h:72
static ATOM item
Definition: dde.c:856
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define OFN_OVERWRITEPROMPT
Definition: commdlg.h:116
HWND hMainWnd
Definition: precomp.h:48
#define CreateFileW
Definition: compat.h:400
#define LVITEM
Definition: commctrl.h:2345
WCHAR * LPWSTR
Definition: xmlstorage.h:184
DWORD WINAPI CommDlgExtendedError(void)
Definition: cdlg32.c:139
int k
Definition: mpi.c:3369
char * Text
Definition: combotst.c:136
HWND hListView
Definition: precomp.h:49
struct png_info_def *typedef unsigned char **typedef struct png_info_def *typedef struct png_info_def *typedef struct png_info_def *typedef unsigned char ** row
Definition: typeof.h:76