mirror of
https://github.com/netbirdio/systray.git
synced 2026-05-22 17:08:41 -07:00
windows: All c++ and DLLs removed, instead of it system calls are used. Also fixed duplicating of icon files in temp folder.
This commit is contained in:
@@ -30,20 +30,6 @@ sudo apt-get install libgtk-3-dev libappindicator3-dev
|
||||
```
|
||||
Checked menu item not implemented on Linux yet.
|
||||
|
||||
### Windows
|
||||
|
||||
Use the Visual Studio solution to build systray.dll. Make sure to target Windows
|
||||
XP and build for Release (not Debug). Put the resulting dll in
|
||||
`dll/systray_unsigned.dll` and then run `./signdll.bash` to sign it. Check the
|
||||
resulting dll into git at Git at dll/systray.dll and run ./embeddll.bash to
|
||||
generate the systraydll_windows.go file.
|
||||
|
||||
The solution is configured to build with platform toolset v90 and dynamic
|
||||
linking to save on size and support Windows XP. To get platform toolset v90,
|
||||
you need to install Visual Studio 2008 (express edition is okay). You can
|
||||
build with a more recent Visual Studio, you just need the old one for the
|
||||
toolset.
|
||||
|
||||
## Try
|
||||
|
||||
Under `example` folder.
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,10 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
###############################################################################
|
||||
#
|
||||
# This script regenerates the source file that embeds systray.dll
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
go get github.com/jteeuwen/go-bindata/go-bindata
|
||||
go-bindata -nomemcopy -nocompress -pkg systray -prefix dll -o systraydll_windows.go dll
|
||||
@@ -1,25 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
function die() {
|
||||
echo $*
|
||||
exit 1
|
||||
}
|
||||
|
||||
if [ -z "$BNS_CERT" ]
|
||||
then
|
||||
die "$0: Please set BNS_CERT to the bns signing certificate for windows"
|
||||
fi
|
||||
|
||||
if [ -z "$BNS_CERT_PASS" ]
|
||||
then
|
||||
die "$0: Please set BNS_CERT_PASS to the password for the $BNS_CERT signing key"
|
||||
fi
|
||||
|
||||
which osslsigncode > /dev/null
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
echo "Installing osslsigncode"
|
||||
brew install osslsigncode || die "Could not install osslsigncode"
|
||||
fi
|
||||
osslsigncode sign -pkcs12 "$BNS_CERT" -pass "$BNS_CERT_PASS" -in dll/systray386.dll_unsigned -out dll/systray386.dll || die "Could not sign windows 386 dll"
|
||||
osslsigncode sign -pkcs12 "$BNS_CERT" -pass "$BNS_CERT_PASS" -in dll/systrayamd64.dll_unsigned -out dll/systrayamd64.dll || die "Could not sign windows 386 dll"
|
||||
@@ -1,28 +0,0 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio 14
|
||||
VisualStudioVersion = 14.0.25420.1
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "systray", "systray\systray.vcxproj", "{7DD84108-D77F-4F51-AC68-5DD13AC1E489}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Win32 = Debug|Win32
|
||||
Debug|x64 = Debug|x64
|
||||
Release|Win32 = Release|Win32
|
||||
Release|x64 = Release|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{7DD84108-D77F-4F51-AC68-5DD13AC1E489}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{7DD84108-D77F-4F51-AC68-5DD13AC1E489}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{7DD84108-D77F-4F51-AC68-5DD13AC1E489}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{7DD84108-D77F-4F51-AC68-5DD13AC1E489}.Debug|x64.Build.0 = Debug|x64
|
||||
{7DD84108-D77F-4F51-AC68-5DD13AC1E489}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{7DD84108-D77F-4F51-AC68-5DD13AC1E489}.Release|Win32.Build.0 = Release|Win32
|
||||
{7DD84108-D77F-4F51-AC68-5DD13AC1E489}.Release|x64.ActiveCfg = Release|x64
|
||||
{7DD84108-D77F-4F51-AC68-5DD13AC1E489}.Release|x64.Build.0 = Release|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
Binary file not shown.
@@ -1,48 +0,0 @@
|
||||
========================================================================
|
||||
DYNAMIC LINK LIBRARY : systray Project Overview
|
||||
========================================================================
|
||||
|
||||
AppWizard has created this systray DLL for you.
|
||||
|
||||
This file contains a summary of what you will find in each of the files that
|
||||
make up your systray application.
|
||||
|
||||
|
||||
systray.vcxproj
|
||||
This is the main project file for VC++ projects generated using an Application Wizard.
|
||||
It contains information about the version of Visual C++ that generated the file, and
|
||||
information about the platforms, configurations, and project features selected with the
|
||||
Application Wizard.
|
||||
|
||||
systray.vcxproj.filters
|
||||
This is the filters file for VC++ projects generated using an Application Wizard.
|
||||
It contains information about the association between the files in your project
|
||||
and the filters. This association is used in the IDE to show grouping of files with
|
||||
similar extensions under a specific node (for e.g. ".cpp" files are associated with the
|
||||
"Source Files" filter).
|
||||
|
||||
systray.cpp
|
||||
This is the main DLL source file.
|
||||
|
||||
When created, this DLL does not export any symbols. As a result, it
|
||||
will not produce a .lib file when it is built. If you wish this project
|
||||
to be a project dependency of some other project, you will either need to
|
||||
add code to export some symbols from the DLL so that an export library
|
||||
will be produced, or you can set the Ignore Input Library property to Yes
|
||||
on the General propert page of the Linker folder in the project's Property
|
||||
Pages dialog box.
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
Other standard files:
|
||||
|
||||
StdAfx.h, StdAfx.cpp
|
||||
These files are used to build a precompiled header (PCH) file
|
||||
named systray.pch and a precompiled types file named StdAfx.obj.
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
Other notes:
|
||||
|
||||
AppWizard uses "TODO:" comments to indicate parts of the source code you
|
||||
should add to or customize.
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
@@ -1,19 +0,0 @@
|
||||
// dllmain.cpp : Defines the entry point for the DLL application.
|
||||
#include "stdafx.h"
|
||||
|
||||
BOOL APIENTRY DllMain( HMODULE hModule,
|
||||
DWORD ul_reason_for_call,
|
||||
LPVOID lpReserved
|
||||
)
|
||||
{
|
||||
switch (ul_reason_for_call)
|
||||
{
|
||||
case DLL_PROCESS_ATTACH:
|
||||
case DLL_THREAD_ATTACH:
|
||||
case DLL_THREAD_DETACH:
|
||||
case DLL_PROCESS_DETACH:
|
||||
break;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
// stdafx.cpp : source file that includes just the standard includes
|
||||
// systray.pch will be the pre-compiled header
|
||||
// stdafx.obj will contain the pre-compiled type information
|
||||
|
||||
#include "stdafx.h"
|
||||
|
||||
// TODO: reference any additional headers you need in STDAFX.H
|
||||
// and not in this file
|
||||
@@ -1,17 +0,0 @@
|
||||
// stdafx.h : include file for standard system include files,
|
||||
// or project specific include files that are used frequently, but
|
||||
// are changed infrequently
|
||||
//
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "targetver.h"
|
||||
|
||||
#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
|
||||
// Windows Header Files:
|
||||
#include <windows.h>
|
||||
// Additional required headers
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <windows.h>
|
||||
#include <shellapi.h>
|
||||
@@ -1,229 +0,0 @@
|
||||
// systray.cpp : Defines the exported functions for the DLL application.
|
||||
//
|
||||
|
||||
// dllmain.cpp : Defines the entry point for the DLL application.
|
||||
#include "stdafx.h"
|
||||
#include "systray.h"
|
||||
|
||||
// Message posted into message loop when Notification Icon is clicked
|
||||
#define WM_SYSTRAY_MESSAGE (WM_USER + 1)
|
||||
|
||||
static NOTIFYICONDATA nid;
|
||||
static HWND hWnd;
|
||||
static HMENU hTrayMenu;
|
||||
|
||||
void (*systray_on_exit)(int ignored);
|
||||
void (*systray_menu_item_selected)(int menu_id);
|
||||
|
||||
void reportWindowsError(const char* action) {
|
||||
LPTSTR pErrMsg = NULL;
|
||||
DWORD errCode = GetLastError();
|
||||
DWORD result = FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER|
|
||||
FORMAT_MESSAGE_FROM_SYSTEM|
|
||||
FORMAT_MESSAGE_ARGUMENT_ARRAY,
|
||||
NULL,
|
||||
errCode,
|
||||
LANG_NEUTRAL,
|
||||
pErrMsg,
|
||||
0,
|
||||
NULL);
|
||||
printf("Systray error %s: %d %ls\n", action, errCode, pErrMsg);
|
||||
}
|
||||
|
||||
void ShowMenu(HWND hWnd) {
|
||||
POINT p;
|
||||
if (0 == GetCursorPos(&p)) {
|
||||
reportWindowsError("get tray menu position");
|
||||
return;
|
||||
};
|
||||
SetForegroundWindow(hWnd); // Win32 bug work-around
|
||||
TrackPopupMenu(hTrayMenu, TPM_BOTTOMALIGN | TPM_LEFTALIGN, p.x, p.y, 0, hWnd, NULL);
|
||||
|
||||
}
|
||||
|
||||
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {
|
||||
switch (message) {
|
||||
case WM_COMMAND:
|
||||
{
|
||||
int menuId = LOWORD(wParam);
|
||||
if (menuId != -1) {
|
||||
systray_menu_item_selected(menuId);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case WM_DESTROY:
|
||||
printf("Window destroyed\n");
|
||||
systray_on_exit(0/*ignored*/);
|
||||
Shell_NotifyIcon(NIM_DELETE, &nid);
|
||||
PostQuitMessage(0);
|
||||
break;
|
||||
case WM_ENDSESSION:
|
||||
printf("Session ending\n");
|
||||
// When the system shuts down (or logs off), we don't receive WM_DESTROY,
|
||||
// so we capture WM_ENDSESSION instead and call on_exit here too.
|
||||
systray_on_exit(0/*ignored*/);
|
||||
Shell_NotifyIcon(NIM_DELETE, &nid);
|
||||
break;
|
||||
case WM_SYSTRAY_MESSAGE:
|
||||
switch(lParam) {
|
||||
case WM_RBUTTONUP:
|
||||
ShowMenu(hWnd);
|
||||
break;
|
||||
case WM_LBUTTONUP:
|
||||
ShowMenu(hWnd);
|
||||
break;
|
||||
default:
|
||||
return DefWindowProc(hWnd, message, wParam, lParam);
|
||||
};
|
||||
break;
|
||||
default:
|
||||
return DefWindowProc(hWnd, message, wParam, lParam);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void MyRegisterClass(HINSTANCE hInstance, TCHAR* szWindowClass) {
|
||||
WNDCLASSEX wcex;
|
||||
|
||||
wcex.cbSize = sizeof(WNDCLASSEX);
|
||||
wcex.style = CS_HREDRAW | CS_VREDRAW;
|
||||
wcex.lpfnWndProc = WndProc;
|
||||
wcex.cbClsExtra = 0;
|
||||
wcex.cbWndExtra = 0;
|
||||
wcex.hInstance = hInstance;
|
||||
wcex.hIcon = LoadIcon(NULL, IDI_APPLICATION);
|
||||
wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
|
||||
wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
|
||||
wcex.lpszMenuName = 0;
|
||||
wcex.lpszClassName = szWindowClass;
|
||||
wcex.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
|
||||
|
||||
RegisterClassEx(&wcex);
|
||||
}
|
||||
|
||||
HWND InitInstance(HINSTANCE hInstance, int nCmdShow, TCHAR* szWindowClass) {
|
||||
HWND hWnd = CreateWindow(szWindowClass, TEXT(""), WS_OVERLAPPEDWINDOW,
|
||||
CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
|
||||
if (!hWnd) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
ShowWindow(hWnd, nCmdShow);
|
||||
UpdateWindow(hWnd);
|
||||
|
||||
return hWnd;
|
||||
}
|
||||
|
||||
|
||||
BOOL createMenu() {
|
||||
hTrayMenu = CreatePopupMenu();
|
||||
if (!hTrayMenu) {
|
||||
printf("Couldn't create hTrayMenu\n");
|
||||
return FALSE;
|
||||
}
|
||||
MENUINFO menuInfo;
|
||||
menuInfo.cbSize = sizeof(MENUINFO);
|
||||
menuInfo.fMask = MIM_APPLYTOSUBMENUS;
|
||||
return SetMenuInfo(hTrayMenu, &menuInfo);
|
||||
}
|
||||
|
||||
BOOL addNotifyIcon() {
|
||||
nid.cbSize = sizeof(NOTIFYICONDATA);
|
||||
nid.hWnd = hWnd;
|
||||
nid.uID = 100;
|
||||
nid.uCallbackMessage = WM_SYSTRAY_MESSAGE;
|
||||
nid.uFlags = NIF_MESSAGE;
|
||||
return Shell_NotifyIcon(NIM_ADD, &nid);
|
||||
}
|
||||
|
||||
int nativeLoop(void (*systray_ready)(int ignored),
|
||||
void (*_systray_on_exit)(int ignored),
|
||||
void (*_systray_menu_item_selected)(int menu_id)) {
|
||||
systray_on_exit = _systray_on_exit;
|
||||
systray_menu_item_selected = _systray_menu_item_selected;
|
||||
|
||||
HINSTANCE hInstance = GetModuleHandle(NULL);
|
||||
TCHAR* szWindowClass = TEXT("SystrayClass");
|
||||
MyRegisterClass(hInstance, szWindowClass);
|
||||
hWnd = InitInstance(hInstance, FALSE, szWindowClass); // Don't show window
|
||||
if (!hWnd) {
|
||||
reportWindowsError("create window");
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
if (!createMenu()) {
|
||||
reportWindowsError("create menu");
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
if (!addNotifyIcon()) {
|
||||
reportWindowsError("add notify icon");
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
systray_ready(0);
|
||||
|
||||
MSG msg;
|
||||
while (GetMessage(&msg, NULL, 0, 0)) {
|
||||
TranslateMessage(&msg);
|
||||
DispatchMessage(&msg);
|
||||
}
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
void setIcon(const wchar_t* iconFile) {
|
||||
HICON hIcon = (HICON) LoadImage(NULL, iconFile, IMAGE_ICON, 64, 64, LR_LOADFROMFILE);
|
||||
if (hIcon == NULL) {
|
||||
reportWindowsError("load icon image");
|
||||
} else {
|
||||
nid.hIcon = hIcon;
|
||||
nid.uFlags = NIF_ICON;
|
||||
Shell_NotifyIcon(NIM_MODIFY, &nid);
|
||||
}
|
||||
}
|
||||
|
||||
void setTooltip(const wchar_t* tooltip) {
|
||||
wcsncpy_s(nid.szTip, tooltip, sizeof(nid.szTip)/sizeof(wchar_t));
|
||||
nid.uFlags = NIF_TIP;
|
||||
Shell_NotifyIcon(NIM_MODIFY, &nid);
|
||||
}
|
||||
|
||||
void add_or_update_menu_item(int menuId, wchar_t* title, wchar_t* tooltip, short disabled, short checked) {
|
||||
MENUITEMINFO menuItemInfo;
|
||||
menuItemInfo.cbSize = sizeof(MENUITEMINFO);
|
||||
menuItemInfo.fMask = MIIM_FTYPE | MIIM_STRING | MIIM_ID | MIIM_STATE;
|
||||
menuItemInfo.fType = MFT_STRING;
|
||||
menuItemInfo.dwTypeData = title;
|
||||
menuItemInfo.cch = wcslen(title) + 1;
|
||||
menuItemInfo.wID = menuId;
|
||||
menuItemInfo.fState = 0;
|
||||
if (disabled == 1) {
|
||||
menuItemInfo.fState |= MFS_DISABLED;
|
||||
}
|
||||
if (checked == 1) {
|
||||
menuItemInfo.fState |= MFS_CHECKED;
|
||||
}
|
||||
|
||||
// We set the menu item info based on the menuID
|
||||
BOOL setOK = SetMenuItemInfo(hTrayMenu, menuId, FALSE, &menuItemInfo);
|
||||
if (!setOK) {
|
||||
// We insert the menu item using the menuID as a position. This is important
|
||||
// because hidden items will end up here when shown again, so this ensures
|
||||
// that their position stays consistent.
|
||||
InsertMenuItem(hTrayMenu, menuId, TRUE, &menuItemInfo);
|
||||
}
|
||||
}
|
||||
|
||||
void add_separator(int menuId) {
|
||||
InsertMenu(hTrayMenu, // parent menu
|
||||
menuId, // position
|
||||
MF_BYPOSITION | MF_SEPARATOR,
|
||||
menuId, // identifier
|
||||
NULL);
|
||||
}
|
||||
|
||||
void hide_menu_item(int menuId) {
|
||||
DeleteMenu(hTrayMenu, menuId, MF_BYCOMMAND);
|
||||
}
|
||||
|
||||
void quit() {
|
||||
PostMessage(hWnd, WM_CLOSE, 0, 0);
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
LIBRARY systray
|
||||
DESCRIPTION "System Tray Support"
|
||||
EXPORTS
|
||||
nativeLoop @1
|
||||
setIcon @2
|
||||
setTooltip @3
|
||||
add_or_update_menu_item @4
|
||||
add_separator @5
|
||||
hide_menu_item @6
|
||||
quit @7
|
||||
@@ -1,14 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
extern "C" {
|
||||
__declspec(dllexport) int __cdecl nativeLoop(void (*systray_ready)(int ignored),
|
||||
void (*_systray_on_exit)(int ignored),
|
||||
void (*_systray_menu_item_selected)(int menu_id));
|
||||
|
||||
__declspec(dllexport) void __cdecl setIcon(const wchar_t* iconFile);
|
||||
__declspec(dllexport) void __cdecl setTooltip(const wchar_t* tooltip);
|
||||
__declspec(dllexport) void __cdecl add_or_update_menu_item(int menuId, wchar_t* title, wchar_t* tooltip, short disabled, short checked);
|
||||
__declspec(dllexport) void __cdecl add_separator(int menuId);
|
||||
__declspec(dllexport) void __cdecl hide_menu_item(int menuId);
|
||||
__declspec(dllexport) void __cdecl quit();
|
||||
}
|
||||
@@ -1,176 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|x64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{7DD84108-D77F-4F51-AC68-5DD13AC1E489}</ProjectGuid>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<RootNamespace>systray</RootNamespace>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<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" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<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" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;SYSTRAY_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;SYSTRAY_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;SYSTRAY_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;SYSTRAY_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<None Include="ReadMe.txt" />
|
||||
<None Include="systray.def" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="stdafx.h" />
|
||||
<ClInclude Include="systray.h" />
|
||||
<ClInclude Include="targetver.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="dllmain.cpp">
|
||||
<CompileAsManaged Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</CompileAsManaged>
|
||||
<CompileAsManaged Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</CompileAsManaged>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
</PrecompiledHeader>
|
||||
<CompileAsManaged Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</CompileAsManaged>
|
||||
<CompileAsManaged Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</CompileAsManaged>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
</PrecompiledHeader>
|
||||
</ClCompile>
|
||||
<ClCompile Include="stdafx.cpp">
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
|
||||
</ClCompile>
|
||||
<ClCompile Include="systray.cpp" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
||||
@@ -1,45 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Resource Files">
|
||||
<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>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="ReadMe.txt" />
|
||||
<None Include="systray.def">
|
||||
<Filter>Source Files</Filter>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="stdafx.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="targetver.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="systray.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="stdafx.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="systray.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="dllmain.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@@ -1,3 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
</Project>
|
||||
@@ -1,8 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
// Including SDKDDKVer.h defines the highest available Windows platform.
|
||||
|
||||
// If you wish to build your application for a previous Windows platform, include WinSDKVer.h and
|
||||
// set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h.
|
||||
|
||||
#include <SDKDDKVer.h>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user