ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

регенератор проектов visual studio.
  #1  
Старый 21.05.2009, 00:01
Аватар для sn0w
sn0w
Статус пользователя:
Регистрация: 26.07.2005
Сообщений: 568
Провел на форуме:
1290766

Репутация: 1236


По умолчанию регенератор проектов visual studio.

ну тулза считай для того чтоб переименовать проект. тупо и просто =)

// reprojectDlg.cpp : implementation file
//

#include "stdafx.h"
#include "reproject.h"
#include "reprojectDlg.h"
#include ".\reprojectdlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif


// CreprojectDlg dialog



CreprojectDlg::CreprojectDlg(CWnd* pParent /*=NULL*/)
: CDialog(CreprojectDlg::IDD, pParent)
, m_PathName(_T(""))
, m_NewName(_T(""))
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CreprojectDlg:oDataExchange(CDataExchange* pDX)
{
CDialog:oDataExchange(pDX);
DDX_Text(pDX, IDC_EDIT1, m_PathName);
DDV_MaxChars(pDX, m_PathName, 256);
DDX_Text(pDX, IDC_EDIT2, m_NewName);
DDV_MaxChars(pDX, m_NewName, 256);
}

BEGIN_MESSAGE_MAP(CreprojectDlg, CDialog)
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
//}}AFX_MSG_MAP
ON_BN_CLICKED(IDC_BUTTON1, OnBnClickedButton1)
ON_BN_CLICKED(IDC_BUTTON2, OnBnClickedButton2)
END_MESSAGE_MAP()


// CreprojectDlg message handlers

BOOL CreprojectDlg::OnInitDialog()
{
CDialog::OnInitDialog();

// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon

// TODO: Add extra initialization here

return TRUE; // return TRUE unless you set the focus to a control
}

// If you add a minimize button to your dialog, you will need the code below
// to draw the icon. For MFC applications using the document/view model,
// this is automatically done for you by the framework.

void CreprojectDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting

SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);

// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;

// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}

// The system calls this function to obtain the cursor to display while the user drags
// the minimized window.
HCURSOR CreprojectDlg::OnQueryDragIcon()
{
return static_cast<HCURSOR>(m_hIcon);
}

void CreprojectDlg::OnBnClickedButton1()
{
// TODO: Add your control notification handler code here
OPENFILENAME ofn;
char s_file[MAX_PATH];

ZeroMemory(&ofn, sizeof(ofn));
ZeroMemory(s_file, sizeof(s_file));

ofn.lStructSize = sizeof(ofn);
ofn.lpstrFilter = "MSVC projectfile (*.vcproj)\0*.vcproj\0\0";
ofn.nMaxFile = sizeof(s_file);
ofn.lpstrFile = s_file;
ofn.Flags = OFN_FILEMUSTEXIST|OFN_PATHMUSTEXIST;

if(!GetOpenFileName(&ofn)){
return;
}

m_PathName = s_file;
SetCurrentDirectory(s_file);
UpdateData(0);

}











void run_replace(char *tofile, char *mem, DWORD memsize, char *tofind, char *replacestr)
{
HANDLE hOutput;
DWORD io;

hOutput = CreateFile(tofile,GENERIC_WRITE,FILE_SHARE_WRITE,0 ,CREATE_ALWAYS,0,0);

if(hOutput == INVALID_HANDLE_VALUE) return;


//write header


char *my_tag = "//\n"
"// Generated with Reproject v 1.0\n"
"// Copyright (c) 2009 by sn0w. All Rights Reserved.\n"
"// 2funny@inbox.ru\n"
"//\n\n";


char *ext = tofile;
ext += strlen(tofile);
while(*ext!='.')
ext--;
ext++;

if(!strcmp(ext, "cpp") || !strcmp(ext, "rc") || !strcmp(ext, "h") || !strcmp(ext, "c") || !strcmp(ext, "hpp"))
WriteFile(hOutput, my_tag, strlen(my_tag), &io, 0);


for(DWORD i=0; i< memsize; i++){


if(memicmp(&mem[i], tofind, strlen(tofind))==0){

WriteFile(hOutput, replacestr, strlen(replacestr), &io, 0);
i+=strlen(tofind)-1;
continue;

}

WriteFile(hOutput, &mem[i], 1, &io, 0);
}

CloseHandle(hOutput);

}



void EditCopyFile(char *s_source, char *s_target, char *tofind, char *replacestr)
{
HANDLE hFile, hMapping;
DWORD dwSize;
BYTE *fileData;


hFile = CreateFile(s_source, GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
if(hFile == INVALID_HANDLE_VALUE) return;

dwSize = GetFileSize(hFile, NULL);

hMapping = CreateFileMapping(hFile, NULL, PAGE_READWRITE, 0, 0, NULL);
CloseHandle(hFile);

if(hMapping == NULL) return;

fileData = (BYTE *)MapViewOfFile(hMapping, FILE_MAP_ALL_ACCESS, 0, 0, 0);

if(fileData == NULL) {
CloseHandle(hMapping);
return;
}

run_replace(s_target, (char*)fileData, dwSize, tofind, replacestr);

UnmapViewOfFile(fileData);
CloseHandle(hMapping);

}


void CreprojectDlg::OnBnClickedButton2()
{

UpdateData();

if(m_PathName.IsEmpty()){
MessageBox("No project specified!");
return;
}

if(m_NewName.IsEmpty()){
MessageBox("New name is not specified!");
return;
}
//MessageBox(m_NewName.GetBuffer(0));
//MessageBox(m_PathName.GetBuffer(0));


//reproject: [newname].rc [newname].sln [newname].vcproj

char s_path[256], *p, newname[256], oldname[256];

strcpy(s_path, m_PathName.GetBuffer(0));
p = s_path + strlen(s_path);


// "c:\\myproject\\reproject.vcproj" --> "reproject"
while(*--p!='\\') if(*p=='.') *p=0;
p++;


// process vcproj
strcpy(newname, m_NewName.GetBuffer(0));
strcat(newname, ".vcproj");
strcpy(oldname, p);
strcat(oldname, ".vcproj");
EditCopyFile(oldname, newname, p, m_NewName.GetBuffer(0));

// process cpp
strcpy(newname, m_NewName.GetBuffer(0));
strcat(newname, ".cpp");
strcpy(oldname, p);
strcat(oldname, ".cpp");
EditCopyFile(oldname, newname, p, m_NewName.GetBuffer(0));


// process rc
strcpy(newname, m_NewName.GetBuffer(0));
strcat(newname, ".rc");
strcpy(oldname, p);
strcat(oldname, ".rc");
EditCopyFile(oldname, newname, p, m_NewName.GetBuffer(0));

// process sln
strcpy(newname, m_NewName.GetBuffer(0));
strcat(newname, ".sln");
strcpy(oldname, p);
strcat(oldname, ".sln");
EditCopyFile(oldname, newname, p, m_NewName.GetBuffer(0));

// process h
strcpy(newname, m_NewName.GetBuffer(0));
strcat(newname, ".h");
strcpy(oldname, p);
strcat(oldname, ".h");
EditCopyFile(oldname, newname, p, m_NewName.GetBuffer(0));


// process c
strcpy(newname, m_NewName.GetBuffer(0));
strcat(newname, ".c");
strcpy(oldname, p);
strcat(oldname, ".c");
EditCopyFile(oldname, newname, p, m_NewName.GetBuffer(0));

// process hpp
strcpy(newname, m_NewName.GetBuffer(0));
strcat(newname, ".hpp");
strcpy(oldname, p);
strcat(oldname, ".hpp");
EditCopyFile(oldname, newname, p, m_NewName.GetBuffer(0));

// process suo
strcpy(newname, m_NewName.GetBuffer(0));
strcat(newname, ".suo");
strcpy(oldname, p);
strcat(oldname, ".suo");
CopyFile(oldname, newname, 0);


MessageBox("Reprojection complete!");

}

сорцы тут - http://www.sendspace.com/file/5i86yr
__________________


snow white world wide
 
Ответить с цитированием

  #2  
Старый 21.05.2009, 11:50
Аватар для razb
razb
Постоянный
Регистрация: 24.03.2009
Сообщений: 670
Провел на форуме:
2868783

Репутация: 414


Отправить сообщение для razb с помощью ICQ
По умолчанию

Ну ты хоть по человечески пост оформи, а то даже смотреть противно.
 
Ответить с цитированием

  #3  
Старый 23.05.2009, 02:53
Аватар для Gar|k
Gar|k
Постоянный
Регистрация: 20.03.2009
Сообщений: 564
Провел на форуме:
991929

Репутация: 395


По умолчанию

sn0w, походу разгребает винт и все че он кодил сюда выкладывает...
вопрос, кому нужен авто переименовщик???

причем написаный абы как часть на MFC, часть на WinAPI, часть на Си.... гргргргр
 
Ответить с цитированием

  #4  
Старый 23.05.2009, 10:30
Аватар для scrat
scrat
Постоянный
Регистрация: 08.04.2007
Сообщений: 853
Провел на форуме:
5812656

Репутация: 1540


Отправить сообщение для scrat с помощью ICQ
По умолчанию

Цитата:
Сообщение от Gar|k  
sn0w, походу разгребает винт и все че он кодил сюда выкладывает...
вопрос, кому нужен авто переименовщик???

причем написаный абы как часть на MFC, часть на WinAPI, часть на Си.... гргргргр
мне недавно нужен был.
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Microsoft выпускает первую бета-версию Visual Studio 2010 winner13 Мировые новости 0 18.05.2009 23:03
Семинар по MS Visual Studio 2008 Team System Москва mimim Мировые новости 0 19.02.2009 21:21
Достать Visual Studio CTTAPTAK PHP, PERL, MySQL, JavaScript 7 26.08.2006 17:09
Visual Studio 2005 Beta Experience w00d Soft - Windows 13 24.12.2005 20:50



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ