diff --git a/build/windows/HGWebService/HGWebService.vcxproj b/build/windows/HGWebService/HGWebService.vcxproj
index 4b8824f9..39fafaf1 100644
--- a/build/windows/HGWebService/HGWebService.vcxproj
+++ b/build/windows/HGWebService/HGWebService.vcxproj
@@ -88,6 +88,7 @@
+
@@ -101,6 +102,9 @@
+
+
+
16.0
Win32Proj
@@ -323,6 +327,9 @@
/ignore:4098,4099,4075 /LTCG %(AdditionalOptions)
RequireAdministrator
+
+ OEM_HUAGAO;%(PreprocessorDefinitions)
+
@@ -348,6 +355,9 @@
copy $(OutDir)HGWebService.exe $(SolutionDir)..\..\..\release\win\x86\Release\
+
+ OEM_HUAGAO;%(PreprocessorDefinitions)
+
@@ -373,6 +383,9 @@
copy $(OutDir)HWWebService.exe $(SolutionDir)..\..\..\release\win\x86\Release\
+
+ OEM_HANWANG;%(PreprocessorDefinitions)
+
@@ -398,6 +411,9 @@
copy $(OutDir)ZGWebService.exe $(SolutionDir)..\..\..\release\win\x86\Release\
+
+ OEM_ZIGUANG;%(PreprocessorDefinitions)
+
@@ -423,6 +439,9 @@
copy $(OutDir)ZJWebService.exe $(SolutionDir)..\..\..\release\win\x86\Release\
+
+ OEM_ZHONGJING;%(PreprocessorDefinitions)
+
@@ -448,6 +467,9 @@
copy $(OutDir)LSCWebService.exe $(SolutionDir)..\..\..\release\win\x86\Release\
+
+ OEM_LISICHENG;%(PreprocessorDefinitions)
+
@@ -473,6 +495,9 @@
copy $(OutDir)CTSWebService.exe $(SolutionDir)..\..\..\release\win\x86\Release\
+
+ OEM_CANGTIAN;%(PreprocessorDefinitions)
+
@@ -491,6 +516,9 @@
/ignore:4098,4099,4075 /LTCG %(AdditionalOptions)
RequireAdministrator
+
+ OEM_HUAGAO;%(PreprocessorDefinitions)
+
@@ -516,6 +544,9 @@
copy $(OutDir)HGWebService.exe $(SolutionDir)..\..\..\release\win\x64\Release\
+
+ OEM_HUAGAO;%(PreprocessorDefinitions)
+
@@ -541,6 +572,9 @@
copy $(OutDir)HWWebService.exe $(SolutionDir)..\..\..\release\win\x64\Release\
+
+ OEM_HANWANG;%(PreprocessorDefinitions)
+
@@ -566,6 +600,9 @@
copy $(OutDir)ZGWebService.exe $(SolutionDir)..\..\..\release\win\x64\Release\
+
+ OEM_ZIGUANG;%(PreprocessorDefinitions)
+
@@ -591,6 +628,9 @@
copy $(OutDir)ZJWebService.exe $(SolutionDir)..\..\..\release\win\x64\Release\
+
+ OEM_ZHONGJING;%(PreprocessorDefinitions)
+
@@ -616,6 +656,9 @@
copy $(OutDir)LSCWebService.exe $(SolutionDir)..\..\..\release\win\x64\Release\
+
+ OEM_LISICHENG;%(PreprocessorDefinitions)
+
@@ -641,6 +684,9 @@
copy $(OutDir)CTSWebService.exe $(SolutionDir)..\..\..\release\win\x64\Release\
+
+ OEM_CANGTIAN;%(PreprocessorDefinitions)
+
diff --git a/sdk/webservice/HGWebService.rc b/sdk/webservice/HGWebService.rc
new file mode 100644
index 00000000..e43f85a1
--- /dev/null
+++ b/sdk/webservice/HGWebService.rc
@@ -0,0 +1,83 @@
+// Microsoft Visual C++ generated resource script.
+//
+#include "resource.h"
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#include "winres.h"
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// 中文(简体,中国) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)
+LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
+#pragma code_page(936)
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE
+BEGIN
+ "resource.h\0"
+END
+
+2 TEXTINCLUDE
+BEGIN
+ "#include ""winres.h""\r\n"
+ "\0"
+END
+
+3 TEXTINCLUDE
+BEGIN
+ "\r\n"
+ "\0"
+END
+
+#endif // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Icon
+//
+
+// Icon with lowest ID value placed first to ensure application icon
+// remains consistent on all systems.
+#if defined(OEM_HANWANG)
+IDI_ICON_HGWEBSERVICE ICON "res\\HanvonScan_App.ico"
+#elif defined(OEM_LISICHENG)
+IDI_ICON_HGWEBSERVICE ICON "res\\LanxumScan_App.ico"
+#elif defined(OEM_CANGTIAN)
+IDI_ICON_HGWEBSERVICE ICON "res\\CumtennScan_App.ico"
+#elif defined(OEM_ZHONGJING)
+IDI_ICON_HGWEBSERVICE ICON "res\\MicrotekScan_App.ico"
+#elif defined(OEM_ZIGUANG)
+IDI_ICON_HGWEBSERVICE ICON "res\\UniScan_App.ico"
+#else
+IDI_ICON_HGWEBSERVICE ICON "res\\HuaGoScan_App.ico"
+#endif
+
+#endif // 中文(简体,中国) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+
+
+/////////////////////////////////////////////////////////////////////////////
+#endif // not APSTUDIO_INVOKED
+
diff --git a/sdk/webservice/WSServer.cpp b/sdk/webservice/WSServer.cpp
index 40330faa..30a432c6 100644
--- a/sdk/webservice/WSServer.cpp
+++ b/sdk/webservice/WSServer.cpp
@@ -1,6 +1,11 @@
锘#include "WSServer.h"
#include "WSUser.h"
#include "base/HGInfo.h"
+#if defined(HG_CMP_MSC)
+#include
+extern ULONG taskbarMsgId;
+extern NOTIFYICONDATAA nid;
+#endif
namespace ver_2
{
@@ -38,6 +43,10 @@ namespace ver_2
user->Open();
++m_currUserId;
m_vectorUser.push_back(user);
+#if defined(HG_CMP_MSC)
+ lstrcpyA(nid.szTip, "鎵弿鏈嶅姟绋嬪簭锛堝凡杩炴帴锛");
+ Shell_NotifyIconA(NIM_MODIFY, &nid);
+#endif
}
void WSServer::Command(const WSCmdParam* param)
diff --git a/sdk/webservice/WebServer.cpp b/sdk/webservice/WebServer.cpp
index 57c5c92e..f2369bfc 100644
--- a/sdk/webservice/WebServer.cpp
+++ b/sdk/webservice/WebServer.cpp
@@ -1,6 +1,11 @@
锘#include "WebServer.h"
#include "WebUser.h"
#include "base/HGInfo.h"
+#if defined(HG_CMP_MSC)
+#include
+extern ULONG taskbarMsgId;
+extern NOTIFYICONDATAA nid;
+#endif
WebServer::WebServer(HGMsgPump msgPump)
{
@@ -134,6 +139,14 @@ void WebServer::DisConnect(const DisConnectParam* param)
delete pUser;
pUser = NULL;
}
+
+#if defined(HG_CMP_MSC)
+ if (m_vectorUser.empty())
+ {
+ lstrcpyA(nid.szTip, "鎵弿鏈嶅姟绋嬪簭锛堟湭杩炴帴锛");
+ Shell_NotifyIconA(NIM_MODIFY, &nid);
+ }
+#endif
}
#if defined(HG_CMP_MSC)
diff --git a/sdk/webservice/main.cpp b/sdk/webservice/main.cpp
index d7224dc5..479c3652 100644
--- a/sdk/webservice/main.cpp
+++ b/sdk/webservice/main.cpp
@@ -66,6 +66,30 @@ static void HGAPI ThreadFunc(HGThread thread, HGPointer param)
}
}
+#if defined(HG_CMP_MSC)
+#include
+#include "resource.h"
+#define WM_TRAY (WM_USER + 100)
+ULONG taskbarMsgId = 0;
+NOTIFYICONDATAA nid;
+LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
+{
+ if (WM_DESTROY == uMsg)
+ {
+ Shell_NotifyIconA(NIM_DELETE, &nid);
+ PostQuitMessage(0);
+ return 0;
+ }
+ else if (uMsg == taskbarMsgId)
+ {
+ //绯荤粺Explorer宕╂簝閲嶅惎鏃讹紝閲嶆柊鍔犺浇鎵樼洏
+ Shell_NotifyIconA(NIM_ADD, &nid);
+ }
+
+ return DefWindowProc(hWnd, uMsg, wParam, lParam);
+}
+#endif
+
#if defined(HG_CMP_MSC)
int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE iPrevInstance, LPWSTR lpCmdLine, int nCmdShow)
#else
@@ -75,28 +99,73 @@ int main()
HGBase_RegisterCrashFunc(CrashFunc, NULL);
#if defined(HG_CMP_MSC)
+ HANDLE hMutex = CreateMutexW(NULL, FALSE, L"{1A67EFC9-B41C-4CE6-B95A-A16958E7010F}");
+ assert(NULL != hMutex);
+ if (GetLastError() == ERROR_ALREADY_EXISTS)
+ {
+ MessageBoxA(NULL, "鎵弿鏈嶅姟宸叉墦寮", "鎻愮ず", 0);
+ CloseHandle(hMutex);
+ return -1;
+ }
+
WSADATA ws = { 0 };
int ret = WSAStartup(MAKEWORD(2, 2), &ws);
assert(0 == ret);
#endif
curl_global_init(CURL_GLOBAL_ALL);
-
HGMsgPump msgPump = NULL;
HGBase_CreateMsgPump(&msgPump);
-
HGThread thread = NULL;
HGBase_OpenThread(ThreadFunc, msgPump, &thread);
+
+#if defined(HG_CMP_MSC)
+ WNDCLASSA wc = { 0 };
+ wc.style = NULL;
+ wc.hIcon = NULL;
+ wc.cbClsExtra = 0;
+ wc.cbWndExtra = 0;
+ wc.hInstance = hInstance;
+ wc.lpfnWndProc = WndProc;
+ wc.hbrBackground = NULL;
+ wc.lpszMenuName = NULL;
+ wc.lpszClassName = "HGWebServie";
+ wc.hCursor = NULL;
+ RegisterClassA(&wc);
+
+ HWND hWnd = CreateWindowExA(WS_EX_TOOLWINDOW, "HGWebServie", "HGWebServie", WS_POPUP, CW_USEDEFAULT,
+ CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL);
+
+ taskbarMsgId = RegisterWindowMessageA("TaskbarCreated");
+ nid.cbSize = sizeof(NOTIFYICONDATAA);
+ nid.hWnd = hWnd;
+ nid.uID = IDI_ICON_HGWEBSERVICE;
+ nid.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP | NIF_INFO;
+ nid.uCallbackMessage = WM_TRAY;
+ nid.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON_HGWEBSERVICE));
+ lstrcpyA(nid.szTip, "鎵弿鏈嶅姟绋嬪簭锛堟湭杩炴帴锛");
+ Shell_NotifyIconA(NIM_ADD, &nid);
+
+ ShowWindow(hWnd, SW_HIDE);
+ UpdateWindow(hWnd);
+
+ MSG msg;
+ while (GetMessage(&msg, NULL, 0, 0))
+ {
+ TranslateMessage(&msg);
+ DispatchMessage(&msg);
+ }
+#endif
+
HGBase_CloseThread(thread);
thread = NULL;
-
HGBase_DestroyMsgPump(msgPump);
msgPump = NULL;
-
curl_global_cleanup();
#if defined(HG_CMP_MSC)
WSACleanup();
+ CloseHandle(hMutex);
#endif
return 0;
}
diff --git a/sdk/webservice/res/CumtennScan_App.ico b/sdk/webservice/res/CumtennScan_App.ico
new file mode 100644
index 00000000..62100d5b
Binary files /dev/null and b/sdk/webservice/res/CumtennScan_App.ico differ
diff --git a/sdk/webservice/res/HanvonScan_App.ico b/sdk/webservice/res/HanvonScan_App.ico
new file mode 100644
index 00000000..cf47eb31
Binary files /dev/null and b/sdk/webservice/res/HanvonScan_App.ico differ
diff --git a/sdk/webservice/res/HuaGoScan_App.ico b/sdk/webservice/res/HuaGoScan_App.ico
new file mode 100644
index 00000000..bb062276
Binary files /dev/null and b/sdk/webservice/res/HuaGoScan_App.ico differ
diff --git a/sdk/webservice/res/LanxumScan_App.ico b/sdk/webservice/res/LanxumScan_App.ico
new file mode 100644
index 00000000..3f04624b
Binary files /dev/null and b/sdk/webservice/res/LanxumScan_App.ico differ
diff --git a/sdk/webservice/res/MicrotekScan_App.ico b/sdk/webservice/res/MicrotekScan_App.ico
new file mode 100644
index 00000000..46c1adf8
Binary files /dev/null and b/sdk/webservice/res/MicrotekScan_App.ico differ
diff --git a/sdk/webservice/res/UniScan_App.ico b/sdk/webservice/res/UniScan_App.ico
new file mode 100644
index 00000000..0ef56bae
Binary files /dev/null and b/sdk/webservice/res/UniScan_App.ico differ
diff --git a/sdk/webservice/resource.h b/sdk/webservice/resource.h
new file mode 100644
index 00000000..f0d151f2
--- /dev/null
+++ b/sdk/webservice/resource.h
@@ -0,0 +1,16 @@
+//{{NO_DEPENDENCIES}}
+// Microsoft Visual C++ 生成的包含文件。
+// 供 HGWebService.rc 使用
+//
+#define IDI_ICON_HGWEBSERVICE 101
+
+// Next default values for new objects
+//
+#ifdef APSTUDIO_INVOKED
+#ifndef APSTUDIO_READONLY_SYMBOLS
+#define _APS_NEXT_RESOURCE_VALUE 102
+#define _APS_NEXT_COMMAND_VALUE 40001
+#define _APS_NEXT_CONTROL_VALUE 1001
+#define _APS_NEXT_SYMED_VALUE 101
+#endif
+#endif