#include<Windows.h>
void Uninstall()
{
CHAR szApp[MAX_PATH]; // Sẽ chứa đường dẫn ứng dụng
CHAR szBat[MAX_PATH]; // Sẽ chứa đường dẫn tập tin Batch tạm thời
CHAR szBuf[MAX_PATH * 4]; // Chứa nội dung tập tin Batch
HANDLE hBatFile; // Thẻ tập tin Batch
DWORD dw, dwWrite;
BOOL b;
GetModuleFileName(NULL, szApp, MAX_PATH); // App
wsprintf(szBat, "%s.bat", szApp); // Bat
wsprintf(szBuf, "@echo off\n:loop\ndel \"%s\"\nif Exist \"%s\" GOTO loop\ndel \"%s\"", szApp, szApp, szBat);
hBatFile = CreateFile(szBat, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if (INVALID_HANDLE_VALUE == hBatFile)
return;
b = WriteFile(hBatFile, szBuf, dwWrite, &dw, NULL);
CloseHandle(hBatFile);
if (!b || dw != dwWrite)
{
DeleteFile(szBat);
return;
}
ShellExecute(NULL, "open", szBat, NULL, NULL, 0);
exit(0);
}
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam)
{
switch (message)
{
case WM_CREATE:
CreateWindow("button", "Uninstall", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 100, 20, 100, 25, hwnd, (HMENU)40001, ((LPCREATESTRUCT)lparam)->hInstance, NULL);
return 0;
case WM_COMMAND:
if (LOWORD(wparam) == 40001)
{
Uninstall();
MessageBox(hwnd, "false !!!", "", 0);
}
break;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd, message, wparam, lparam);
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrev, LPSTR lpCmd, int nShow)
{
WNDCLASS w;
HWND hwnd;
MSG msg;
w.cbClsExtra = 0;
w.cbWndExtra = 0;
w.hbrBackground = (HBRUSH)GetStockObject(LTGRAY_BRUSH);
w.hCursor = LoadCursor(NULL, IDC_ARROW);
w.hIcon = LoadIcon(NULL, IDI_APPLICATION);
w.hInstance = hInstance;
w.lpfnWndProc = WndProc;
w.lpszClassName = "Test Uninstall";
w.lpszMenuName = NULL;
w.style = CS_HREDRAW | CS_VREDRAW;
if (!RegisterClass(&w))
return 0;
hwnd = CreateWindow(w.lpszClassName, w.lpszClassName, WS_OVERLAPPEDWINDOW, 200, 100, 300, 100, NULL, NULL, hInstance, NULL);
if (!hwnd)
return 0;
ShowWindow(hwnd, nShow);
UpdateWindow(hwnd);
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}