6 Commits
v1.5 ... v2.1

Author SHA1 Message Date
W0LF
bdb2ebd295 Delete wCenterWindow.h 2020-05-03 18:50:05 +03:00
W0LF
bd5d845ec1 Delete targetver.h 2020-05-03 18:49:07 +03:00
W0LF
a6c866d1dd Delete framework.h 2020-05-03 18:48:50 +03:00
W0LF
38a570310f Delete Resource.h 2020-05-03 18:48:32 +03:00
W0LF
4a96fef1c7 new version 2020-05-03 18:47:31 +03:00
W0LF
0f47ebae9e new version 2020-05-03 18:45:44 +03:00
11 changed files with 496 additions and 551 deletions

View File

@@ -1,31 +1,31 @@
 
Microsoft Visual Studio Solution File, Format Version 12.00 Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15 # Visual Studio 15
VisualStudioVersion = 15.0.28307.1000 VisualStudioVersion = 15.0.28307.1082
MinimumVisualStudioVersion = 10.0.40219.1 MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wCenterWindow", "wCenterWindow\wCenterWindow.vcxproj", "{6A775901-6C34-4E96-B359-C11C76A520BB}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wCenterWindow", "wCenterWindow\wCenterWindow.vcxproj", "{2494B3F2-585E-4A2E-A013-20A15AE25B9E}"
EndProject EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64 Debug|x64 = Debug|x64
Debug|x86 = Debug|x86 Debug|x86 = Debug|x86
Release|x64 = Release|x64 Release|x64 = Release|x64
Release|x86 = Release|x86 Release|x86 = Release|x86
EndGlobalSection EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution GlobalSection(ProjectConfigurationPlatforms) = postSolution
{6A775901-6C34-4E96-B359-C11C76A520BB}.Debug|x64.ActiveCfg = Debug|x64 {2494B3F2-585E-4A2E-A013-20A15AE25B9E}.Debug|x64.ActiveCfg = Debug|x64
{6A775901-6C34-4E96-B359-C11C76A520BB}.Debug|x64.Build.0 = Debug|x64 {2494B3F2-585E-4A2E-A013-20A15AE25B9E}.Debug|x64.Build.0 = Debug|x64
{6A775901-6C34-4E96-B359-C11C76A520BB}.Debug|x86.ActiveCfg = Debug|Win32 {2494B3F2-585E-4A2E-A013-20A15AE25B9E}.Debug|x86.ActiveCfg = Debug|Win32
{6A775901-6C34-4E96-B359-C11C76A520BB}.Debug|x86.Build.0 = Debug|Win32 {2494B3F2-585E-4A2E-A013-20A15AE25B9E}.Debug|x86.Build.0 = Debug|Win32
{6A775901-6C34-4E96-B359-C11C76A520BB}.Release|x64.ActiveCfg = Release|x64 {2494B3F2-585E-4A2E-A013-20A15AE25B9E}.Release|x64.ActiveCfg = Release|x64
{6A775901-6C34-4E96-B359-C11C76A520BB}.Release|x64.Build.0 = Release|x64 {2494B3F2-585E-4A2E-A013-20A15AE25B9E}.Release|x64.Build.0 = Release|x64
{6A775901-6C34-4E96-B359-C11C76A520BB}.Release|x86.ActiveCfg = Release|Win32 {2494B3F2-585E-4A2E-A013-20A15AE25B9E}.Release|x86.ActiveCfg = Release|Win32
{6A775901-6C34-4E96-B359-C11C76A520BB}.Release|x86.Build.0 = Release|Win32 {2494B3F2-585E-4A2E-A013-20A15AE25B9E}.Release|x86.Build.0 = Release|Win32
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE
EndGlobalSection EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {CAD0B026-63B6-4645-9B26-22CD0E1049B7} SolutionGuid = {34E34C1F-8A53-40DA-BA24-78C20152D64C}
EndGlobalSection EndGlobalSection
EndGlobal EndGlobal

View File

@@ -1,28 +0,0 @@
// resource.h
#define IDS_APP_TITLE 100
#define IDS_CLASSNAME 101
#define IDS_ABOUT 102
#define IDI_TRAYICON 103
#define IDR_MENU 104
#define ID_POPUPMENU_ICON 105
#define ID_POPUPMENU_ABOUT 106
#define ID_POPUPMENU_EXIT 107
#define IDS_ERR_MAIN 108
#define IDS_ERR_WND 109
#define IDS_ERR_ICON 110
#define IDS_ERR_MENU 111
#define IDS_ERR_POPUP 112
#define IDS_ERR_HOOK 113
#define IDS_RUNNING 114
#define IDC_STATIC -1
// Next default values for new objects
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NO_MFC 1
#define _APS_NEXT_RESOURCE_VALUE 129
#define _APS_NEXT_COMMAND_VALUE 32771
#define _APS_NEXT_CONTROL_VALUE 1000
#define _APS_NEXT_SYMED_VALUE 110
#endif
#endif

View File

@@ -1,15 +0,0 @@
// header.h: включаемый файл для стандартных системных включаемых файлов
// или включаемые файлы для конкретного проекта
#pragma once
#include "targetver.h"
#define WIN32_LEAN_AND_MEAN // Исключите редко используемые компоненты из заголовков Windows
// Файлы заголовков Windows
#include <windows.h>
#include <strsafe.h>
#include <shellapi.h>
// Файлы заголовков среды выполнения C
#include <stdlib.h>
#include <malloc.h>
#include <memory.h>
#include <tchar.h>

19
wCenterWindow/resource.h Normal file
View File

@@ -0,0 +1,19 @@
#pragma once
#define IDS_APP_TITLE 100
#define IDS_CLASSNAME 101
#define IDS_ABOUT 102
#define IDI_TRAYICON 103
#define IDR_MENU 104
#define ID_POPUPMENU_ICON 105
#define ID_POPUPMENU_AREA 106
#define ID_POPUPMENU_ABOUT 107
#define ID_POPUPMENU_EXIT 108
#define IDS_ERR_MAIN 109
#define IDS_ERR_WND 110
#define IDS_ERR_ICON 111
#define IDS_ERR_MENU 112
#define IDS_ERR_POPUP 113
#define IDS_ERR_HOOK 114
#define IDS_RUNNING 115
#define IDC_STATIC -1

View File

@@ -1,2 +0,0 @@
#pragma once
#include <SDKDDKVer.h>

View File

@@ -1,256 +1,263 @@
// wCenterWindow.cpp : Определяет точку входа для приложения. // wCenterWindow, v2.1
#include "framework.h" #include <windows.h>
#include "wCenterWindow.h" #include <strsafe.h>
#include "resource.h"
#define MAX_LOADSTRING 32 #include "S:\MyFunctions\MoveWindowToMonitorCenter.h"
#define WM_WCW WM_USER + 0x7F00
#define MAX_LOADSTRING 32
// Глобальные переменные: #define WM_WCW 0x8F00
HINSTANCE hInst; // Текущий экземпляр
WCHAR szTitle[MAX_LOADSTRING]; // Текст строки заголовка // Global variables:
WCHAR szClass[MAX_LOADSTRING]; // Имя класса главного окна HINSTANCE hInst; // Instance
WCHAR szAbout[MAX_LOADSTRING * 9]; // Текст описания CHAR szTitle[MAX_LOADSTRING]; // Window's title
HHOOK KeyboardHook; CHAR szClass[MAX_LOADSTRING]; // Window's class
HICON hIcon; CHAR szAbout[MAX_LOADSTRING * 14]; // Description text
HMENU hMenu, hPopup; HHOOK KeyboardHook;
HWND hWnd; HICON hIcon;
NOTIFYICONDATA nid = { 0 }; HMENU hMenu, hPopup;
KBDLLHOOKSTRUCT *pkhs; HWND hWnd, hTaskBar, hDesktop, hProgman;
BOOL pressed = FALSE, showIcon = TRUE; BOOL bPressed = FALSE, bShowIcon = TRUE, bWorkArea = TRUE;
BOOL bLCTRL = FALSE, bLWIN = FALSE, bKEYI = FALSE, bKEYC = FALSE; BOOL bLCTRL = FALSE, bLWIN = FALSE, bKEYI = FALSE, bKEYC = FALSE;
int dtCenterX, dtCenterY;
NOTIFYICONDATA nid = { 0 };
// Прототипы функций LPKBDLLHOOKSTRUCT pkhs;
ATOM MyRegisterClass(HINSTANCE); MENUITEMINFO mii;
VOID HandlingTrayIcon(); POINT ptMousePos;
VOID ShowError(UINT);
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); // Function's prototypes
LRESULT CALLBACK KeyboardHookProc(int, WPARAM, LPARAM); ATOM MyRegisterClass(HINSTANCE);
VOID HandlingTrayIcon();
// Точка входа VOID ShowError(UINT);
int APIENTRY wWinMain(_In_ HINSTANCE hInstance, LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
_In_opt_ HINSTANCE hPrevInstance, LRESULT CALLBACK KeyboardHookProc(int, WPARAM, LPARAM);
_In_ LPWSTR lpCmdLine,
_In_ int nCmdShow) int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{ {
UNREFERENCED_PARAMETER(hPrevInstance); UNREFERENCED_PARAMETER(hPrevInstance);
UNREFERENCED_PARAMETER(lpCmdLine); UNREFERENCED_PARAMETER(lpCmdLine);
hInst = hInstance; hInst = hInstance;
LoadStringW(hInstance, IDS_APP_TITLE, szTitle, _countof(szTitle)); LoadString(hInstance, IDS_APP_TITLE, szTitle, _countof(szTitle));
LoadStringW(hInstance, IDS_CLASSNAME, szClass, _countof(szClass)); LoadString(hInstance, IDS_CLASSNAME, szClass, _countof(szClass));
if (FindWindow(szClass, NULL)) if (FindWindow(szClass, NULL))
{ {
ShowError(IDS_RUNNING); ShowError(IDS_RUNNING);
return FALSE; return FALSE;
} }
MyRegisterClass(hInstance); MyRegisterClass(hInstance);
hWnd = CreateWindowExW(0, szClass, szTitle, 0, 0, 0, 0, 0, NULL, NULL, hInstance, NULL); hWnd = CreateWindowEx(0, szClass, szTitle, 0, 0, 0, 0, 0, NULL, NULL, hInstance, NULL);
if (!hWnd) if (!hWnd)
{ {
ShowError(IDS_ERR_WND); ShowError(IDS_ERR_WND);
return FALSE; return FALSE;
} }
nid.cbSize = sizeof(NOTIFYICONDATA); int nArgs = 0;
nid.hWnd = hWnd; LPWSTR *szArglist = CommandLineToArgvW(GetCommandLineW(), &nArgs);
nid.uVersion = NOTIFYICON_VERSION; (nArgs >= 2 && 0 == lstrcmpiW(szArglist[1], L"/hide")) ? bShowIcon = FALSE : bShowIcon = TRUE;
nid.uCallbackMessage = WM_WCW; LocalFree(szArglist);
nid.hIcon = hIcon; HandlingTrayIcon();
nid.uID = IDI_TRAYICON;
nid.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP; hTaskBar = FindWindow("Shell_TrayWnd", NULL);
nid.dwInfoFlags = NIIF_INFO; hProgman = FindWindow("Progman", NULL);
StringCchCopy(nid.szTip, _countof(nid.szTip), szTitle); hDesktop = GetDesktopWindow();
int nArgs = 0; MSG msg;
LPWSTR *szArglist = CommandLineToArgvW(GetCommandLineW(), &nArgs); BOOL bRet;
(nArgs >= 2 && 0 == lstrcmpiW(szArglist[1], L"/hide")) ? showIcon = FALSE : showIcon = TRUE;
LocalFree(szArglist); while ((bRet = GetMessage(&msg, NULL, 0, 0)) != 0)
HandlingTrayIcon(); {
if (bRet == -1)
MSG msg; {
BOOL bRet; ShowError(IDS_ERR_MAIN);
return -1;
while ((bRet = GetMessage(&msg, NULL, 0, 0)) != 0) }
{ else
if (bRet == -1) {
{ TranslateMessage(&msg);
ShowError(IDS_ERR_MAIN); DispatchMessage(&msg);
return -1; }
} }
else return (int)msg.wParam;
{ }
TranslateMessage(&msg);
DispatchMessage(&msg); ATOM MyRegisterClass(HINSTANCE hInstance)
} {
} WNDCLASSEX wcex = { 0 };
return (int)msg.wParam; wcex.cbSize = sizeof(WNDCLASSEX);
} wcex.lpfnWndProc = WndProc;
wcex.hInstance = hInstance;
ATOM MyRegisterClass(HINSTANCE hInstance) wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_TRAYICON));
{ wcex.hCursor = LoadCursor(nullptr, IDC_ARROW);
WNDCLASSEX wcex = { 0 }; wcex.lpszClassName = szClass;
wcex.cbSize = sizeof(WNDCLASSEX); wcex.hIconSm = wcex.hIcon;
wcex.lpfnWndProc = WndProc; hIcon = wcex.hIcon;
wcex.hInstance = hInstance; return RegisterClassEx(&wcex);
wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_TRAYICON)); }
wcex.hCursor = LoadCursor(nullptr, IDC_ARROW);
wcex.lpszClassName = szClass; LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
wcex.hIconSm = wcex.hIcon; {
hIcon = wcex.hIcon; switch (message)
return RegisterClassEx(&wcex); {
} case WM_CREATE:
{
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) hMenu = LoadMenu(hInst, MAKEINTRESOURCE(IDR_MENU));
{ if (!hMenu)
switch (message) {
{ ShowError(IDS_ERR_MENU);
case WM_CREATE: SendMessage(hWnd, WM_CLOSE, NULL, NULL);
{ }
hMenu = LoadMenu(hInst, MAKEINTRESOURCE(IDR_MENU));
if (!hMenu) hPopup = GetSubMenu(hMenu, 0);
{ if (!hPopup)
ShowError(IDS_ERR_MENU); {
SendMessage(hWnd, WM_CLOSE, NULL, NULL); ShowError(IDS_ERR_POPUP);
} SendMessage(hWnd, WM_CLOSE, NULL, NULL);
}
hPopup = GetSubMenu(hMenu, 0);
if (!hPopup) mii.cbSize = sizeof(MENUITEMINFO);
{ mii.fMask = MIIM_STATE;
ShowError(IDS_ERR_POPUP); bWorkArea ? mii.fState = MFS_CHECKED : mii.fState = MFS_UNCHECKED;
SendMessage(hWnd, WM_CLOSE, NULL, NULL); SetMenuItemInfo(hPopup, ID_POPUPMENU_AREA, FALSE, &mii);
}
nid.cbSize = sizeof(NOTIFYICONDATA);
KeyboardHook = SetWindowsHookEx(WH_KEYBOARD_LL, KeyboardHookProc, hInst, NULL); nid.hWnd = hWnd;
if (!KeyboardHook) nid.uVersion = NOTIFYICON_VERSION;
{ nid.uCallbackMessage = WM_WCW;
ShowError(IDS_ERR_HOOK); nid.hIcon = hIcon;
SendMessage(hWnd, WM_CLOSE, NULL, NULL); nid.uID = IDI_TRAYICON;
} nid.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
nid.dwInfoFlags = NIIF_INFO;
LoadStringW(hInst, IDS_ABOUT, szAbout, _countof(szAbout)); StringCchCopy(nid.szTip, _countof(nid.szTip), szTitle);
RECT dtrc = { 0 };
SystemParametersInfo(SPI_GETWORKAREA, NULL, &dtrc, FALSE); KeyboardHook = SetWindowsHookEx(WH_KEYBOARD_LL, KeyboardHookProc, hInst, NULL);
dtCenterX = dtrc.right / 2, dtCenterY = dtrc.bottom / 2; if (!KeyboardHook)
break; {
} ShowError(IDS_ERR_HOOK);
case WM_WCW: SendMessage(hWnd, WM_CLOSE, NULL, NULL);
if (lParam == WM_RBUTTONDOWN && wParam == IDI_TRAYICON) }
{
SetForegroundWindow(hWnd); LoadString(hInst, IDS_ABOUT, szAbout, _countof(szAbout));
POINT pt; }
GetCursorPos(&pt); break;
int idMenu = TrackPopupMenu(hPopup, TPM_RETURNCMD, pt.x, pt.y, 0, hWnd, NULL);
if (idMenu == ID_POPUPMENU_ICON) case WM_WCW:
{ {
showIcon = FALSE; if (lParam == WM_RBUTTONDOWN && wParam == IDI_TRAYICON)
HandlingTrayIcon(); {
} SetForegroundWindow(hWnd);
if (idMenu == ID_POPUPMENU_ABOUT && !pressed) POINT pt;
{ GetCursorPos(&pt);
pressed = TRUE; int idMenu = TrackPopupMenu(hPopup, TPM_RETURNCMD, pt.x, pt.y, 0, hWnd, NULL);
if (MessageBox(hWnd, szAbout, szTitle, MB_OK | MB_TOPMOST) == IDOK) pressed = FALSE; if (idMenu == ID_POPUPMENU_ICON)
} {
if (idMenu == ID_POPUPMENU_EXIT) SendMessage(hWnd, WM_CLOSE, NULL, NULL); bShowIcon = FALSE;
} HandlingTrayIcon();
break; }
if (idMenu == ID_POPUPMENU_AREA)
case WM_DESTROY: {
if (KeyboardHook) UnhookWindowsHookEx(KeyboardHook); bWorkArea = !bWorkArea;
if (hMenu) DestroyMenu(hMenu); bWorkArea ? mii.fState = MFS_CHECKED : mii.fState = MFS_UNCHECKED;
Shell_NotifyIcon(NIM_DELETE, &nid); SetMenuItemInfo(hPopup, ID_POPUPMENU_AREA, FALSE, &mii);
PostQuitMessage(0); }
break; if (idMenu == ID_POPUPMENU_ABOUT && !bPressed)
{
default: bPressed = TRUE;
return DefWindowProc(hWnd, message, wParam, lParam); if (MessageBox(hWnd, szAbout, szTitle, MB_OK | MB_TOPMOST | MB_ICONINFORMATION) == IDOK) bPressed = FALSE;
} }
return 0; if (idMenu == ID_POPUPMENU_EXIT) SendMessage(hWnd, WM_CLOSE, NULL, NULL);
} }
}
LRESULT CALLBACK KeyboardHookProc(int nCode, WPARAM wParam, LPARAM lParam) break;
{
pkhs = (KBDLLHOOKSTRUCT*)lParam; case WM_DESTROY:
{
if (wParam == WM_KEYUP) if (KeyboardHook) UnhookWindowsHookEx(KeyboardHook);
{ if (hMenu) DestroyMenu(hMenu);
if (pkhs->vkCode == VK_LCONTROL) bLCTRL = FALSE; Shell_NotifyIcon(NIM_DELETE, &nid);
if (pkhs->vkCode == VK_LWIN) bLWIN = FALSE; PostQuitMessage(0);
pressed = FALSE; }
} break;
if (wParam == WM_KEYDOWN) default:
{ return DefWindowProc(hWnd, message, wParam, lParam);
if (pkhs->vkCode == VK_LCONTROL) bLCTRL = TRUE; }
if (pkhs->vkCode == VK_LWIN) bLWIN = TRUE; return 0;
}
if (bLCTRL && bLWIN && pkhs->vkCode == 0x49 && !pressed) // 'I' key
{
pressed = TRUE; LRESULT CALLBACK KeyboardHookProc(int nCode, WPARAM wParam, LPARAM lParam)
showIcon = !showIcon; {
HandlingTrayIcon(); pkhs = (KBDLLHOOKSTRUCT*)lParam;
}
if (wParam == WM_KEYUP)
if (bLCTRL && bLWIN && pkhs->vkCode == 0x43 && !pressed) // 'C' key {
{ if (pkhs->vkCode == VK_LCONTROL) bLCTRL = FALSE;
pressed = TRUE; if (pkhs->vkCode == VK_LWIN) bLWIN = FALSE;
HWND fgWindow = GetForegroundWindow(); bPressed = FALSE;
if (fgWindow) }
{
HWND parentWindow = fgWindow; if (wParam == WM_KEYDOWN)
while (TRUE) {
{ if (pkhs->vkCode == VK_LCONTROL) bLCTRL = TRUE;
parentWindow = GetParent(fgWindow); if (pkhs->vkCode == VK_LWIN) bLWIN = TRUE;
if (parentWindow) fgWindow = parentWindow;
else break; if (bLCTRL && bLWIN && pkhs->vkCode == 0x49 && !bPressed) // 'I' key
} {
WINDOWPLACEMENT wp = { 0 }; bPressed = TRUE;
wp.length = sizeof(WINDOWPLACEMENT); bShowIcon = !bShowIcon;
GetWindowPlacement(fgWindow, &wp); HandlingTrayIcon();
if (wp.showCmd == SW_SHOWNORMAL) return TRUE;
{ }
int fgW = wp.rcNormalPosition.right - wp.rcNormalPosition.left;
int fgH = wp.rcNormalPosition.bottom - wp.rcNormalPosition.top; if (bLCTRL && bLWIN && pkhs->vkCode == 0x43 && !bPressed) // 'C' key
int fgX = dtCenterX - (fgW / 2); {
int fgY = dtCenterY - (fgH / 2); bPressed = TRUE;
wp.rcNormalPosition.left = fgX; HWND hFgWnd = GetForegroundWindow();
wp.rcNormalPosition.top = fgY;
wp.rcNormalPosition.right = fgX + fgW; if (hFgWnd)
wp.rcNormalPosition.bottom = fgY + fgH; {
SendMessage(fgWindow, WM_ENTERSIZEMOVE, NULL, NULL); if (hFgWnd != hDesktop && hFgWnd != hTaskBar && hFgWnd != hProgman)
SetWindowPlacement(fgWindow, &wp); {
SendMessage(fgWindow, WM_EXITSIZEMOVE, NULL, NULL); if (!IsIconic(hFgWnd) && !IsZoomed(hFgWnd))
} {
} RECT fgwrc;
} GetWindowRect(hFgWnd, &fgwrc);
} LONG fgWidth = fgwrc.right - fgwrc.left;
return CallNextHookEx(NULL, nCode, wParam, lParam); LONG fgHeight = fgwrc.bottom - fgwrc.top;
} MoveWindowToMonitorCenter(hFgWnd, fgWidth, fgHeight, bWorkArea, FALSE);
}
VOID HandlingTrayIcon() }
{ }
if (showIcon) return TRUE;
{ }
if (!Shell_NotifyIcon(NIM_ADD, &nid)) }
{ return CallNextHookEx(NULL, nCode, wParam, lParam);
ShowError(IDS_ERR_ICON); }
showIcon = FALSE;
} VOID HandlingTrayIcon()
} {
else if (bShowIcon)
{ {
Shell_NotifyIcon(NIM_DELETE, &nid); if (!Shell_NotifyIcon(NIM_ADD, &nid))
} {
ShowError(IDS_ERR_ICON);
} bShowIcon = FALSE;
}
VOID ShowError(UINT uID) }
{ else
WCHAR szErrorText[MAX_LOADSTRING]; // Текст ошибки {
LoadStringW(hInst, uID, szErrorText, _countof(szErrorText)); Shell_NotifyIcon(NIM_DELETE, &nid);
MessageBox(hWnd, szErrorText, szTitle, MB_OK | MB_ICONERROR); }
} }
VOID ShowError(UINT uID)
{
CHAR szErrorText[MAX_LOADSTRING]; // Error's text
LoadString(hInst, uID, szErrorText, _countof(szErrorText));
MessageBox(hWnd, szErrorText, szTitle, MB_OK | MB_ICONERROR);
}

View File

@@ -1,2 +0,0 @@
#pragma once
#include "resource.h"

Binary file not shown.

View File

@@ -1,173 +1,143 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations"> <ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32"> <ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration> <Configuration>Debug</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
</ProjectConfiguration> </ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32"> <ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration> <Configuration>Release</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
</ProjectConfiguration> </ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64"> <ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration> <Configuration>Debug</Configuration>
<Platform>x64</Platform> <Platform>x64</Platform>
</ProjectConfiguration> </ProjectConfiguration>
<ProjectConfiguration Include="Release|x64"> <ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration> <Configuration>Release</Configuration>
<Platform>x64</Platform> <Platform>x64</Platform>
</ProjectConfiguration> </ProjectConfiguration>
</ItemGroup> </ItemGroup>
<PropertyGroup Label="Globals"> <PropertyGroup Label="Globals">
<VCProjectVersion>15.0</VCProjectVersion> <VCProjectVersion>15.0</VCProjectVersion>
<ProjectGuid>{6A775901-6C34-4E96-B359-C11C76A520BB}</ProjectGuid> <ProjectGuid>{2494B3F2-585E-4A2E-A013-20A15AE25B9E}</ProjectGuid>
<Keyword>Win32Proj</Keyword> <RootNamespace>wCenterWindow</RootNamespace>
<RootNamespace>wCenterWindow</RootNamespace> <WindowsTargetPlatformVersion>10.0.17763.0</WindowsTargetPlatformVersion>
<WindowsTargetPlatformVersion>10.0.17763.0</WindowsTargetPlatformVersion> </PropertyGroup>
</PropertyGroup> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType>
<ConfigurationType>Application</ConfigurationType> <UseDebugLibraries>true</UseDebugLibraries>
<UseDebugLibraries>true</UseDebugLibraries> <PlatformToolset>v141</PlatformToolset>
<PlatformToolset>v141</PlatformToolset> <CharacterSet>MultiByte</CharacterSet>
<CharacterSet>Unicode</CharacterSet> </PropertyGroup>
</PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType>
<ConfigurationType>Application</ConfigurationType> <UseDebugLibraries>false</UseDebugLibraries>
<UseDebugLibraries>false</UseDebugLibraries> <PlatformToolset>v141</PlatformToolset>
<PlatformToolset>v141</PlatformToolset> <WholeProgramOptimization>true</WholeProgramOptimization>
<WholeProgramOptimization>true</WholeProgramOptimization> <CharacterSet>MultiByte</CharacterSet>
<CharacterSet>Unicode</CharacterSet> </PropertyGroup>
</PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType>
<ConfigurationType>Application</ConfigurationType> <UseDebugLibraries>true</UseDebugLibraries>
<UseDebugLibraries>true</UseDebugLibraries> <PlatformToolset>v141</PlatformToolset>
<PlatformToolset>v141</PlatformToolset> <CharacterSet>MultiByte</CharacterSet>
<CharacterSet>Unicode</CharacterSet> </PropertyGroup>
</PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> <ConfigurationType>Application</ConfigurationType>
<ConfigurationType>Application</ConfigurationType> <UseDebugLibraries>false</UseDebugLibraries>
<UseDebugLibraries>false</UseDebugLibraries> <PlatformToolset>v141</PlatformToolset>
<PlatformToolset>v141</PlatformToolset> <WholeProgramOptimization>true</WholeProgramOptimization>
<WholeProgramOptimization>true</WholeProgramOptimization> <CharacterSet>MultiByte</CharacterSet>
<CharacterSet>Unicode</CharacterSet> </PropertyGroup>
</PropertyGroup> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <ImportGroup Label="ExtensionSettings">
<ImportGroup Label="ExtensionSettings"> </ImportGroup>
</ImportGroup> <ImportGroup Label="Shared">
<ImportGroup Label="Shared"> </ImportGroup>
</ImportGroup> <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> </ImportGroup>
</ImportGroup> <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> </ImportGroup>
</ImportGroup> <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> </ImportGroup>
</ImportGroup> <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> </ImportGroup>
</ImportGroup> <PropertyGroup Label="UserMacros" />
<PropertyGroup Label="UserMacros" /> <PropertyGroup />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<LinkIncremental>true</LinkIncremental> <ClCompile>
</PropertyGroup> <WarningLevel>Level3</WarningLevel>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> <Optimization>Disabled</Optimization>
<LinkIncremental>true</LinkIncremental> <SDLCheck>true</SDLCheck>
</PropertyGroup> <ConformanceMode>true</ConformanceMode>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> </ClCompile>
<LinkIncremental>false</LinkIncremental> <Link>
</PropertyGroup> <SubSystem>Windows</SubSystem>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> <RandomizedBaseAddress>false</RandomizedBaseAddress>
<LinkIncremental>false</LinkIncremental> </Link>
</PropertyGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile> <ClCompile>
<PrecompiledHeader> <WarningLevel>Level3</WarningLevel>
</PrecompiledHeader> <Optimization>Disabled</Optimization>
<WarningLevel>Level3</WarningLevel> <SDLCheck>true</SDLCheck>
<Optimization>Disabled</Optimization> <ConformanceMode>true</ConformanceMode>
<SDLCheck>true</SDLCheck> </ClCompile>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions> <Link>
<ConformanceMode>true</ConformanceMode> <SubSystem>Console</SubSystem>
</ClCompile> </Link>
<Link> </ItemDefinitionGroup>
<SubSystem>Windows</SubSystem> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<GenerateDebugInformation>true</GenerateDebugInformation> <ClCompile>
</Link> <WarningLevel>Level3</WarningLevel>
</ItemDefinitionGroup> <Optimization>MaxSpeed</Optimization>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> <FunctionLevelLinking>true</FunctionLevelLinking>
<ClCompile> <IntrinsicFunctions>true</IntrinsicFunctions>
<PrecompiledHeader> <SDLCheck>true</SDLCheck>
</PrecompiledHeader> <ConformanceMode>true</ConformanceMode>
<WarningLevel>Level3</WarningLevel> <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<Optimization>Disabled</Optimization> </ClCompile>
<SDLCheck>true</SDLCheck> <Link>
<PreprocessorDefinitions>_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions> <SubSystem>Windows</SubSystem>
<ConformanceMode>true</ConformanceMode> <EnableCOMDATFolding>true</EnableCOMDATFolding>
</ClCompile> <OptimizeReferences>true</OptimizeReferences>
<Link> <UACExecutionLevel>HighestAvailable</UACExecutionLevel>
<SubSystem>Windows</SubSystem> <GenerateDebugInformation>false</GenerateDebugInformation>
<GenerateDebugInformation>true</GenerateDebugInformation> </Link>
</Link> </ItemDefinitionGroup>
</ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> <ClCompile>
<ClCompile> <WarningLevel>Level3</WarningLevel>
<PrecompiledHeader> <Optimization>MaxSpeed</Optimization>
</PrecompiledHeader> <FunctionLevelLinking>true</FunctionLevelLinking>
<WarningLevel>Level3</WarningLevel> <IntrinsicFunctions>true</IntrinsicFunctions>
<Optimization>MaxSpeed</Optimization> <SDLCheck>true</SDLCheck>
<FunctionLevelLinking>true</FunctionLevelLinking> <ConformanceMode>true</ConformanceMode>
<IntrinsicFunctions>true</IntrinsicFunctions> </ClCompile>
<SDLCheck>true</SDLCheck> <Link>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions> <SubSystem>Console</SubSystem>
<ConformanceMode>true</ConformanceMode> <EnableCOMDATFolding>true</EnableCOMDATFolding>
<DebugInformationFormat>None</DebugInformationFormat> <OptimizeReferences>true</OptimizeReferences>
</ClCompile> </Link>
<Link> </ItemDefinitionGroup>
<SubSystem>Windows</SubSystem> <ItemGroup>
<EnableCOMDATFolding>true</EnableCOMDATFolding> <ClCompile Include="..\..\..\MyFunctions\MoveWindowToMonitorCenter.cpp" />
<OptimizeReferences>true</OptimizeReferences> <ClCompile Include="wCenterWindow.cpp" />
<GenerateDebugInformation>false</GenerateDebugInformation> </ItemGroup>
<AssemblyDebug>false</AssemblyDebug> <ItemGroup>
</Link> <ClInclude Include="..\..\..\MyFunctions\MoveWindowToMonitorCenter.h" />
</ItemDefinitionGroup> <ClInclude Include="resource.h" />
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> </ItemGroup>
<ClCompile> <ItemGroup>
<PrecompiledHeader> <ResourceCompile Include="wCenterWindow.rc" />
</PrecompiledHeader> </ItemGroup>
<WarningLevel>Level3</WarningLevel> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<Optimization>MaxSpeed</Optimization> <ImportGroup Label="ExtensionTargets">
<FunctionLevelLinking>true</FunctionLevelLinking> </ImportGroup>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="framework.h" />
<ClInclude Include="resource.h" />
<ClInclude Include="targetver.h" />
<ClInclude Include="wCenterWindow.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="wCenterWindow.cpp" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="wCenterWindow.rc" />
</ItemGroup>
<ItemGroup>
<Image Include="wCenterWindow.ico" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project> </Project>

View File

@@ -1,46 +1,38 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup> <ItemGroup>
<Filter Include="Исходные файлы"> <Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier> <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions> <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter> </Filter>
<Filter Include="Файлы заголовков"> <Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier> <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hh;hpp;hxx;hm;inl;inc;ipp;xsd</Extensions> <Extensions>h;hh;hpp;hxx;hm;inl;inc;ipp;xsd</Extensions>
</Filter> </Filter>
<Filter Include="Файлы ресурсов"> <Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier> <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions> <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter> </Filter>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="framework.h"> <ClCompile Include="wCenterWindow.cpp">
<Filter>Файлы заголовков</Filter> <Filter>Source Files</Filter>
</ClInclude> </ClCompile>
<ClInclude Include="targetver.h"> <ClCompile Include="..\..\..\MyFunctions\MoveWindowToMonitorCenter.cpp">
<Filter>Файлы заголовков</Filter> <Filter>Source Files</Filter>
</ClInclude> </ClCompile>
<ClInclude Include="wCenterWindow.h"> </ItemGroup>
<Filter>Файлы заголовков</Filter> <ItemGroup>
</ClInclude> <ClInclude Include="resource.h">
<ClInclude Include="resource.h"> <Filter>Header Files</Filter>
<Filter>Файлы заголовков</Filter> </ClInclude>
</ClInclude> <ClInclude Include="..\..\..\MyFunctions\MoveWindowToMonitorCenter.h">
</ItemGroup> <Filter>Header Files</Filter>
<ItemGroup> </ClInclude>
<ClCompile Include="wCenterWindow.cpp"> </ItemGroup>
<Filter>Исходные файлы</Filter> <ItemGroup>
</ClCompile> <ResourceCompile Include="wCenterWindow.rc">
</ItemGroup> <Filter>Resource Files</Filter>
<ItemGroup> </ResourceCompile>
<ResourceCompile Include="wCenterWindow.rc"> </ItemGroup>
<Filter>Файлы ресурсов</Filter>
</ResourceCompile>
</ItemGroup>
<ItemGroup>
<Image Include="wCenterWindow.ico">
<Filter>Файлы ресурсов</Filter>
</Image>
</ItemGroup>
</Project> </Project>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup />
</Project>