campo-sirio/ba/ba0close.cpp
alex d030bbabe2 Patch level : 4.0 667
Files correlati     :
Ricompilazione Demo : [ ]
Commento            :

Riportata la versione 3.1 patch 766


git-svn-id: svn://10.65.10.50/trunk@14628 c028cbd2-c16b-5b4b-a496-9718f37d4682
2006-12-13 16:22:33 +00:00

80 lines
2.1 KiB
C++
Executable File

#include <windows.h>
#include <stdio.h>
void Renamer(const char* mask)
{
char drive[_MAX_DRIVE], path[_MAX_PATH], fname[_MAX_FNAME], ext[_MAX_EXT];
_splitpath(mask, drive, path, NULL, NULL);
WIN32_FIND_DATA data;
HANDLE hHandle = ::FindFirstFile(mask, &data);
BOOL bRunning = hHandle != INVALID_HANDLE_VALUE;
while (bRunning)
{
_splitpath(data.cFileName, NULL, NULL, fname, ext);
const char* newext = NULL;
if (stricmp(ext, ".ex_") == 0)
newext = ".exe"; else
if (stricmp(ext, ".dl_") == 0)
newext = ".dll";
if (newext != NULL)
{
char oldpath[_MAX_PATH], newpath[_MAX_PATH];
_makepath(oldpath, drive, path, fname, ext);
_makepath(newpath, drive, path, fname, newext);
if (::CopyFile(oldpath, newpath, FALSE))
{
::DeleteFile(oldpath);
}
else
{
char msg[512];
LPVOID lpMsgBuf;
FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
NULL, GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
(LPTSTR) &lpMsgBuf, 0, NULL);
sprintf(msg, "Impossibile ridenominare il file %s in %s:\n%s",
oldpath, newpath, lpMsgBuf);
::LocalFree(lpMsgBuf);
::MessageBox(NULL, msg, "Aggiornamento sistema", MB_ICONERROR | MB_OK);
}
}
bRunning = ::FindNextFile(hHandle, &data);
}
}
int PASCAL WinMain(HINSTANCE, HINSTANCE , LPSTR cmd_line, int)
{
::MessageBox(NULL, "Premere OK ed attendere il riavvio del programma",
"Aggiornamento sistema", MB_ICONWARNING | MB_OK);
::Sleep(3000); // Apetta qualche secondo che termini ba0.exe
Renamer("*.??_");
Renamer("Servers\\*.??_");
int modules_pending = ::GetPrivateProfileInt("ba0close", "ModulesPending", 0, "./campo.ini");
if (modules_pending != 0)
{
char cmd[256];
strcpy(cmd, "ba1.exe -6 /u");
const char* u = strstr(cmd_line, "/u");
if (u != NULL)
strcat(cmd, u+2);
else
strcat(cmd, "ADMIN");
WinExec(cmd, SW_SHOWNORMAL);
}
else
WinExec("ba0.exe", SW_SHOWNORMAL);
return 0;
}