export.c

来自「一个类似windows」· C语言 代码 · 共 93 行

C
93
字号
/*
 * PROJECT:     ReactOS Services
 * LICENSE:     GPL - See COPYING in the top level directory
 * FILE:        base/system/servman/export.c
 * PURPOSE:     Save services to a file
 * COPYRIGHT:   Copyright 2006 Ged Murphy <gedmurphy@gmail.com>
 *
 */

#include "servman.h"

extern HWND hListView;


DWORD GetTextFromListView(TCHAR Text[500], INT row, INT col)
{
    LVITEM item;
    DWORD NumChars;

    ZeroMemory(&item, sizeof(item));
    item.mask = LVIF_TEXT;
    item.iSubItem = col;
    item.pszText = Text;
    item.cchTextMax = 500;
    NumChars = (INT)SendMessage(hListView, LVM_GETITEMTEXT, row, (LPARAM)&item);

    return NumChars;
}


BOOL SaveServicesToFile(LPCTSTR pszFileName)
{
	HANDLE hFile;
	BOOL bSuccess = FALSE;

	hFile = CreateFile(pszFileName, GENERIC_WRITE, 0, NULL,
                       CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
	if(hFile != INVALID_HANDLE_VALUE)
	{
        TCHAR LVText[500];
        TCHAR newl = _T('\n');
        TCHAR tab = _T('\t');
		DWORD dwTextLength, dwWritten;
		INT NumListedServ = 0;
		INT i, k;

		NumListedServ = ListView_GetItemCount(hListView);

		for (i=0; i < NumListedServ; i++)
		{
		    for (k=0; k<5; k++)
		    {
                dwTextLength = GetTextFromListView(LVText, i, k);
                if (LVText != NULL)
                {
                    WriteFile(hFile, LVText, sizeof(TCHAR) * dwTextLength, &dwWritten, NULL);
                    WriteFile(hFile, &tab, sizeof(TCHAR), &dwWritten, NULL);
                }
		    }
		    WriteFile(hFile, &newl, sizeof(TCHAR), &dwWritten, NULL);
		}
		CloseHandle(hFile);
		bSuccess = TRUE;
	}
	return bSuccess;
}


VOID ExportFile(HWND hwnd)
{
	OPENFILENAME ofn;
	TCHAR szFileName[MAX_PATH] = _T("");

	ZeroMemory(&ofn, sizeof(ofn));

	ofn.lStructSize = sizeof(OPENFILENAME);
	ofn.hwndOwner = hwnd;
	ofn.lpstrFilter = _T("Text (Tab Delimited)(*.txt)\0*.txt\0Text (Comma Delimited)(*.csv)\0*.csv\0");
	ofn.lpstrFile = szFileName;
	ofn.nMaxFile = MAX_PATH;
	ofn.lpstrDefExt = _T("txt");
	ofn.Flags = OFN_EXPLORER | OFN_PATHMUSTEXIST | OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT;

	if(GetSaveFileName(&ofn))
	{
		if (SaveServicesToFile(szFileName))
            return;
	}

	if (CommDlgExtendedError() != CDERR_GENERALCODES)
        MessageBox(NULL, _T("Export to file failed"), NULL, 0);
}

⌨️ 快捷键说明

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