diff --git a/PoolListCtrl.cpp b/PoolListCtrl.cpp
index 9f2a5ff..75ec229 100644
--- a/PoolListCtrl.cpp
+++ b/PoolListCtrl.cpp
@@ -63,7 +63,7 @@ int CPoolListCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct)
font.Detach();
InsertColumn(ColumnType::TagName, L"Tag", LVCFMT_CENTER, 80);
- InsertColumn(ColumnType::PoolType, L"Type", LVCFMT_CENTER, 80);
+ InsertColumn(ColumnType::PoolType, L"Type", LVCFMT_CENTER, 120);
InsertColumn(ColumnType::Allocs, L"Allocs", LVCFMT_RIGHT, 100);
InsertColumn(ColumnType::Frees, L"Frees", LVCFMT_RIGHT, 100);
InsertColumn(ColumnType::Diff, L"Diff", LVCFMT_RIGHT, 80);
@@ -279,11 +279,11 @@ static int CompareStrings(PCWSTR s1, PCWSTR s2) {
int CPoolListCtrl::OnCompareItems(LPARAM lParam1, LPARAM lParam2, int iColumn)
{
- ASSERT(m_Tags.find(lParam1) != m_Tags.end());
- ASSERT(m_Tags.find(lParam2) != m_Tags.end());
+ ASSERT(m_Tags.find((ULONG)lParam1) != m_Tags.end());
+ ASSERT(m_Tags.find((ULONG)lParam2) != m_Tags.end());
- const auto& info1 = m_Tags[lParam1];
- const auto& info2 = m_Tags[lParam2];
+ const auto& info1 = m_Tags[(ULONG)lParam1];
+ const auto& info2 = m_Tags[(ULONG)lParam2];
const auto& item1 = info1.Tag;
const auto& item2 = info2.Tag;
@@ -422,7 +422,7 @@ void CPoolListCtrl::RefreshPoolData()
ASSERT(n >= 0);
if (ProcessChanges(n, item, it->second.Tag, true)) {
UpdateItem(n, info, true);
- m_Tags[lvfi.lParam] = info;
+ m_Tags[(ULONG)lvfi.lParam] = info;
}
}
}
diff --git a/PoolMonEx.rc b/PoolMonEx.rc
index 9f846bb..edcbe00 100644
--- a/PoolMonEx.rc
+++ b/PoolMonEx.rc
@@ -84,7 +84,7 @@ IDR_MAINFRAME MENU
BEGIN
POPUP "&File"
BEGIN
- MENUITEM "&Save...\tCtrl+S", ID_FILE_SAVE32771
+ MENUITEM "&Save...\tCtrl+S", ID_FILE_SAVE
MENUITEM SEPARATOR
MENUITEM "E&xit", ID_APP_EXIT
END
@@ -262,7 +262,7 @@ END
STRINGTABLE
BEGIN
- IDR_MAINFRAME "Kernel Pool Monitor (C)2016-2017 by Pavel Yosifovich"
+ IDR_MAINFRAME "Kernel Pool Monitor v0.8 (C)2016-2018 by Pavel Yosifovich"
END
STRINGTABLE
diff --git a/PoolMonX.sln b/PoolMonX.sln
index fe20977..d397272 100644
--- a/PoolMonX.sln
+++ b/PoolMonX.sln
@@ -1,7 +1,7 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
-VisualStudioVersion = 15.0.26430.6
+VisualStudioVersion = 15.0.26730.12
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PoolMonX", "PoolMonX.vcxproj", "{26A93265-52DE-4226-9974-AC437B0EC988}"
EndProject
@@ -9,6 +9,8 @@ Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
+ DefaultBuild|x64 = DefaultBuild|x64
+ DefaultBuild|x86 = DefaultBuild|x86
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
@@ -17,6 +19,10 @@ Global
{26A93265-52DE-4226-9974-AC437B0EC988}.Debug|x64.Build.0 = Debug|x64
{26A93265-52DE-4226-9974-AC437B0EC988}.Debug|x86.ActiveCfg = Debug|Win32
{26A93265-52DE-4226-9974-AC437B0EC988}.Debug|x86.Build.0 = Debug|Win32
+ {26A93265-52DE-4226-9974-AC437B0EC988}.DefaultBuild|x64.ActiveCfg = Debug|x64
+ {26A93265-52DE-4226-9974-AC437B0EC988}.DefaultBuild|x64.Build.0 = Debug|x64
+ {26A93265-52DE-4226-9974-AC437B0EC988}.DefaultBuild|x86.ActiveCfg = Debug|Win32
+ {26A93265-52DE-4226-9974-AC437B0EC988}.DefaultBuild|x86.Build.0 = Debug|Win32
{26A93265-52DE-4226-9974-AC437B0EC988}.Release|x64.ActiveCfg = Release|x64
{26A93265-52DE-4226-9974-AC437B0EC988}.Release|x64.Build.0 = Release|x64
{26A93265-52DE-4226-9974-AC437B0EC988}.Release|x86.ActiveCfg = Release|Win32
@@ -25,4 +31,7 @@ Global
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {FFDC0B32-20D9-446F-B3CC-159DEB6A5D88}
+ EndGlobalSection
EndGlobal
diff --git a/PoolMonX.vcxproj b/PoolMonX.vcxproj
index bce0fff..2a852df 100644
--- a/PoolMonX.vcxproj
+++ b/PoolMonX.vcxproj
@@ -21,7 +21,7 @@
{26A93265-52DE-4226-9974-AC437B0EC988}
PoolMonEx
- 8.1
+ 10.0.14393.0
MFCProj
PoolMonX
@@ -39,7 +39,7 @@
v141
true
Unicode
- Static
+ Dynamic
Application
@@ -139,7 +139,7 @@
true
WIN32;_WINDOWS;NDEBUG;%(PreprocessorDefinitions)
true
- MultiThreaded
+ MultiThreadedDLL
Windows
diff --git a/PoolMonXSetup/PoolMonXSetup-SetupFiles/PoolMonXSetup.msi b/PoolMonXSetup/PoolMonXSetup-SetupFiles/PoolMonXSetup.msi
new file mode 100644
index 0000000..5c9ad6b
Binary files /dev/null and b/PoolMonXSetup/PoolMonXSetup-SetupFiles/PoolMonXSetup.msi differ
diff --git a/PoolMonXSetup/PoolMonXSetup-SetupFiles/Setup.msi b/PoolMonXSetup/PoolMonXSetup-SetupFiles/Setup.msi
new file mode 100644
index 0000000..1e8c554
Binary files /dev/null and b/PoolMonXSetup/PoolMonXSetup-SetupFiles/Setup.msi differ
diff --git a/PoolMonXSetup/PoolMonXSetup-cache/cacheIndex.txt b/PoolMonXSetup/PoolMonXSetup-cache/cacheIndex.txt
new file mode 100644
index 0000000..5fe5afe
Binary files /dev/null and b/PoolMonXSetup/PoolMonXSetup-cache/cacheIndex.txt differ
diff --git a/PoolMonXSetup/PoolMonXSetup-cache/part1/disk1.cab b/PoolMonXSetup/PoolMonXSetup-cache/part1/disk1.cab
new file mode 100644
index 0000000..269df26
Binary files /dev/null and b/PoolMonXSetup/PoolMonXSetup-cache/part1/disk1.cab differ
diff --git a/PoolMonXSetup/PoolMonXSetup-cache/part1/output-info.ini b/PoolMonXSetup/PoolMonXSetup-cache/part1/output-info.ini
new file mode 100644
index 0000000..2b9acc1
Binary files /dev/null and b/PoolMonXSetup/PoolMonXSetup-cache/part1/output-info.ini differ
diff --git a/PoolMonXSetup/PoolMonXSetup.aip b/PoolMonXSetup/PoolMonXSetup.aip
new file mode 100644
index 0000000..31b790f
--- /dev/null
+++ b/PoolMonXSetup/PoolMonXSetup.aip
@@ -0,0 +1,167 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/PoolMonXSetup/PoolMonXSetup.aiproj b/PoolMonXSetup/PoolMonXSetup.aiproj
new file mode 100644
index 0000000..98ca3c4
--- /dev/null
+++ b/PoolMonXSetup/PoolMonXSetup.aiproj
@@ -0,0 +1,32 @@
+
+
+ All
+ 2.0
+ 5a4500b8-0897-4934-8aef-b9f460a0d409
+ msi
+ .
+ PoolMonXSetup.aip
+
+
+ .
+ True
+ PoolMonXSetup
+ PoolMonXSetup
+ PoolMonXSetup
+
+
+
+
+ Code
+
+
+
+
+ PoolMonX
+ {26a93265-52de-4226-9974-ac437b0ec988}
+ True
+ PrimaryOutput
+
+
+
+
\ No newline at end of file
diff --git a/PoolMonXSetup/PoolMonXSetup.back.aip b/PoolMonXSetup/PoolMonXSetup.back.aip
new file mode 100644
index 0000000..5ea526c
--- /dev/null
+++ b/PoolMonXSetup/PoolMonXSetup.back.aip
@@ -0,0 +1,130 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/PoolView.cpp b/PoolView.cpp
index 6053f51..9209de0 100644
--- a/PoolView.cpp
+++ b/PoolView.cpp
@@ -28,6 +28,7 @@ BEGIN_MESSAGE_MAP(CPoolView, CWnd)
ON_COMMAND(ID_EDIT_COPY, &CPoolView::OnEditCopy)
ON_COMMAND(ID_VIEW_PAUSE, &CPoolView::OnViewPause)
ON_UPDATE_COMMAND_UI(ID_VIEW_PAUSE, &CPoolView::OnUpdateViewPause)
+ ON_COMMAND(ID_FILE_SAVE, &CPoolView::OnFileSave)
END_MESSAGE_MAP()
// CPoolView message handlers
@@ -46,7 +47,7 @@ BOOL CPoolView::PreCreateWindow(CREATESTRUCT& cs) {
}
void CPoolView::OnPaint() {
- CPaintDC dc(this);
+ CPaintDC dc(this);
}
int CPoolView::OnCreate(LPCREATESTRUCT lpCreateStruct) {
@@ -56,7 +57,7 @@ int CPoolView::OnCreate(LPCREATESTRUCT lpCreateStruct) {
m_List.Create(WS_CHILD | WS_VISIBLE | LVS_REPORT | LVS_SHOWSELALWAYS | LVS_SINGLESEL | WS_CLIPSIBLINGS, CRect(), this, 123);
m_List.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_AUTOSIZECOLUMNS | LVS_EX_DOUBLEBUFFER);
- return 0;
+ return 0;
}
@@ -72,14 +73,12 @@ BOOL CPoolView::OnEraseBkgnd(CDC* pDC) {
}
-void CPoolView::OnEditCopy()
-{
+void CPoolView::OnEditCopy() {
// TODO: Add your command handler code here
}
-BOOL CPoolView::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo)
-{
+BOOL CPoolView::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo) {
if (m_List.OnCmdMsg(nID, nCode, pExtra, pHandlerInfo))
return TRUE;
@@ -87,14 +86,53 @@ BOOL CPoolView::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO*
}
-void CPoolView::OnViewPause()
-{
+void CPoolView::OnViewPause() {
m_Paused = !m_Paused;
m_List.Pause(m_Paused);
}
-void CPoolView::OnUpdateViewPause(CCmdUI *pCmdUI)
-{
+void CPoolView::OnUpdateViewPause(CCmdUI *pCmdUI) {
pCmdUI->SetText(m_Paused ? L"Resume" : L"Pause");
}
+
+
+void CPoolView::OnFileSave() {
+ CFileDialog dlg(FALSE, L".csv", nullptr, OFN_EXPLORER | OFN_OVERWRITEPROMPT, L"CSV Files|*.csv|All Files|*.*||", this);
+ if (dlg.DoModal() == IDOK) {
+ try {
+ CFile file(dlg.GetPathName(), CFile::modeWrite | CFile::modeCreate);
+ CArchive ar(&file, CArchive::store);
+ int column = 0;
+ TCHAR text[128];
+ while(true) {
+ LVCOLUMN col;
+ col.mask = LVCF_TEXT;
+ col.cchTextMax = 128;
+ col.pszText = text;
+ if (!m_List.GetColumn(column, &col))
+ break;
+ ar.WriteString(col.pszText);
+ ar.WriteString(L",");
+ column++;
+ }
+ ar.WriteString(L"\n");
+
+ int count = m_List.GetItemCount();
+ for (int i = 0; i < count; i++) {
+ for (int c = 0; c < column; c++) {
+ ar.WriteString(m_List.GetItemText(i, c));
+ ar.WriteString(L",");
+ }
+ ar.WriteString(L"\n");
+ }
+
+ }
+ catch (CFileException* ex) {
+ TCHAR msg[256];
+ ex->GetErrorMessage(msg, 256);
+ AfxMessageBox(msg);
+ ex->Delete();
+ }
+ }
+}
diff --git a/PoolView.h b/PoolView.h
index 7c2c262..87077d1 100644
--- a/PoolView.h
+++ b/PoolView.h
@@ -49,5 +49,6 @@ protected:
afx_msg void OnEditCopy();
afx_msg void OnViewPause();
afx_msg void OnUpdateViewPause(CCmdUI *pCmdUI);
+ afx_msg void OnFileSave();
};
diff --git a/VSSetup/VSSetup.vdproj b/VSSetup/VSSetup.vdproj
new file mode 100644
index 0000000..17b4af3
--- /dev/null
+++ b/VSSetup/VSSetup.vdproj
@@ -0,0 +1,704 @@
+"DeployProject"
+{
+"VSVersion" = "3:800"
+"ProjectType" = "8:{978C614F-708E-4E1A-B201-565925725DBA}"
+"IsWebType" = "8:FALSE"
+"ProjectName" = "8:VSSetup"
+"LanguageId" = "3:1033"
+"CodePage" = "3:1252"
+"UILanguageId" = "3:1033"
+"SccProjectName" = "8:"
+"SccLocalPath" = "8:"
+"SccAuxPath" = "8:"
+"SccProvider" = "8:"
+ "Hierarchy"
+ {
+ "Entry"
+ {
+ "MsmKey" = "8:_C77CF6B5C4A84EC4846D2D6C02F81144"
+ "OwnerKey" = "8:_UNDEFINED"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ }
+ "Configurations"
+ {
+ "Debug"
+ {
+ "DisplayName" = "8:Debug"
+ "IsDebugOnly" = "11:TRUE"
+ "IsReleaseOnly" = "11:FALSE"
+ "OutputFilename" = "8:Debug\\VSSetup.msi"
+ "PackageFilesAs" = "3:2"
+ "PackageFileSize" = "3:-2147483648"
+ "CabType" = "3:1"
+ "Compression" = "3:2"
+ "SignOutput" = "11:FALSE"
+ "CertificateFile" = "8:"
+ "PrivateKeyFile" = "8:"
+ "TimeStampServer" = "8:"
+ "InstallerBootstrapper" = "3:2"
+ }
+ "Release"
+ {
+ "DisplayName" = "8:Release"
+ "IsDebugOnly" = "11:FALSE"
+ "IsReleaseOnly" = "11:TRUE"
+ "OutputFilename" = "8:Release\\VSSetup.msi"
+ "PackageFilesAs" = "3:2"
+ "PackageFileSize" = "3:-2147483648"
+ "CabType" = "3:1"
+ "Compression" = "3:2"
+ "SignOutput" = "11:FALSE"
+ "CertificateFile" = "8:"
+ "PrivateKeyFile" = "8:"
+ "TimeStampServer" = "8:"
+ "InstallerBootstrapper" = "3:2"
+ "BootstrapperCfg:{63ACBE69-63AA-4F98-B2B6-99F9E24495F2}"
+ {
+ "Enabled" = "11:TRUE"
+ "PromptEnabled" = "11:TRUE"
+ "PrerequisitesLocation" = "2:1"
+ "Url" = "8:"
+ "ComponentsUrl" = "8:"
+ "Items"
+ {
+ "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:.NETFramework,Version=v4.6.1"
+ {
+ "Name" = "8:Microsoft .NET Framework 4.6.1 (x86 and x64)"
+ "ProductCode" = "8:.NETFramework,Version=v4.6.1"
+ }
+ "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:Microsoft.Visual.C++.14.0.x86"
+ {
+ "Name" = "8:Visual C++ \"14\" Runtime Libraries (x86)"
+ "ProductCode" = "8:Microsoft.Visual.C++.14.0.x86"
+ }
+ }
+ }
+ }
+ }
+ "Deployable"
+ {
+ "CustomAction"
+ {
+ }
+ "DefaultFeature"
+ {
+ "Name" = "8:DefaultFeature"
+ "Title" = "8:"
+ "Description" = "8:"
+ }
+ "ExternalPersistence"
+ {
+ "LaunchCondition"
+ {
+ }
+ }
+ "File"
+ {
+ }
+ "FileType"
+ {
+ }
+ "Folder"
+ {
+ "{1525181F-901A-416C-8A58-119130FE478E}:_8368FC85AA184FB2B6C47ED7D87D1283"
+ {
+ "Name" = "8:#1919"
+ "AlwaysCreate" = "11:FALSE"
+ "Condition" = "8:"
+ "Transitive" = "11:FALSE"
+ "Property" = "8:ProgramMenuFolder"
+ "Folders"
+ {
+ }
+ }
+ "{1525181F-901A-416C-8A58-119130FE478E}:_C908FC9EB6F749A28FEB6FDAB97AE079"
+ {
+ "Name" = "8:#1916"
+ "AlwaysCreate" = "11:FALSE"
+ "Condition" = "8:"
+ "Transitive" = "11:FALSE"
+ "Property" = "8:DesktopFolder"
+ "Folders"
+ {
+ }
+ }
+ "{3C67513D-01DD-4637-8A68-80971EB9504F}:_CC6BF2AE29C14B7996F8452E18FECE6E"
+ {
+ "DefaultLocation" = "8:[ProgramFiles64Folder][Manufacturer]\\[ProductName]"
+ "Name" = "8:#1925"
+ "AlwaysCreate" = "11:FALSE"
+ "Condition" = "8:"
+ "Transitive" = "11:FALSE"
+ "Property" = "8:TARGETDIR"
+ "Folders"
+ {
+ }
+ }
+ }
+ "LaunchCondition"
+ {
+ }
+ "Locator"
+ {
+ }
+ "MsiBootstrapper"
+ {
+ "LangId" = "3:1033"
+ "RequiresElevation" = "11:FALSE"
+ }
+ "Product"
+ {
+ "Name" = "8:Microsoft Visual Studio"
+ "ProductName" = "8:PoolMonX"
+ "ProductCode" = "8:{451522B8-98EF-4D07-A647-9CB7D226785F}"
+ "PackageCode" = "8:{985D0740-4303-477D-A95B-55998F173E8D}"
+ "UpgradeCode" = "8:{4441A281-920C-4982-AE0B-D6FE7B931D63}"
+ "AspNetVersion" = "8:4.0.30319.0"
+ "RestartWWWService" = "11:FALSE"
+ "RemovePreviousVersions" = "11:FALSE"
+ "DetectNewerInstalledVersion" = "11:TRUE"
+ "InstallAllUsers" = "11:FALSE"
+ "ProductVersion" = "8:1.0.0"
+ "Manufacturer" = "8:Default Company Name"
+ "ARPHELPTELEPHONE" = "8:"
+ "ARPHELPLINK" = "8:"
+ "Title" = "8:PoolMonX"
+ "Subject" = "8:"
+ "ARPCONTACT" = "8:Pavel Yosifovich"
+ "Keywords" = "8:"
+ "ARPCOMMENTS" = "8:"
+ "ARPURLINFOABOUT" = "8:"
+ "ARPPRODUCTICON" = "8:"
+ "ARPIconIndex" = "3:0"
+ "SearchPath" = "8:"
+ "UseSystemSearchPath" = "11:TRUE"
+ "TargetPlatform" = "3:1"
+ "PreBuildEvent" = "8:"
+ "PostBuildEvent" = "8:"
+ "RunPostBuildEvent" = "3:0"
+ }
+ "Registry"
+ {
+ "HKLM"
+ {
+ "Keys"
+ {
+ "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_7A4E33B2753748EC92ED165033A57C26"
+ {
+ "Name" = "8:Software"
+ "Condition" = "8:"
+ "AlwaysCreate" = "11:FALSE"
+ "DeleteAtUninstall" = "11:FALSE"
+ "Transitive" = "11:FALSE"
+ "Keys"
+ {
+ "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_6A821F3A969044BABC15FDA4F8799BFA"
+ {
+ "Name" = "8:[Manufacturer]"
+ "Condition" = "8:"
+ "AlwaysCreate" = "11:FALSE"
+ "DeleteAtUninstall" = "11:FALSE"
+ "Transitive" = "11:FALSE"
+ "Keys"
+ {
+ }
+ "Values"
+ {
+ }
+ }
+ }
+ "Values"
+ {
+ }
+ }
+ }
+ }
+ "HKCU"
+ {
+ "Keys"
+ {
+ "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_F79596255D4B4FA9866C42EE7734D0AE"
+ {
+ "Name" = "8:Software"
+ "Condition" = "8:"
+ "AlwaysCreate" = "11:FALSE"
+ "DeleteAtUninstall" = "11:FALSE"
+ "Transitive" = "11:FALSE"
+ "Keys"
+ {
+ "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_C9573F5D8DBC4C91962820208EF0C240"
+ {
+ "Name" = "8:[Manufacturer]"
+ "Condition" = "8:"
+ "AlwaysCreate" = "11:FALSE"
+ "DeleteAtUninstall" = "11:FALSE"
+ "Transitive" = "11:FALSE"
+ "Keys"
+ {
+ }
+ "Values"
+ {
+ }
+ }
+ }
+ "Values"
+ {
+ }
+ }
+ }
+ }
+ "HKCR"
+ {
+ "Keys"
+ {
+ }
+ }
+ "HKU"
+ {
+ "Keys"
+ {
+ }
+ }
+ "HKPU"
+ {
+ "Keys"
+ {
+ }
+ }
+ }
+ "Sequences"
+ {
+ }
+ "Shortcut"
+ {
+ }
+ "UserInterface"
+ {
+ "{2479F3F5-0309-486D-8047-8187E2CE5BA0}:_49CD21B23D1543BC910C6B73D36DA971"
+ {
+ "UseDynamicProperties" = "11:FALSE"
+ "IsDependency" = "11:FALSE"
+ "SourcePath" = "8:\\VsdBasicDialogs.wim"
+ }
+ "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_5C390E1A1F44452A950DB78C91D952A0"
+ {
+ "Name" = "8:#1902"
+ "Sequence" = "3:1"
+ "Attributes" = "3:3"
+ "Dialogs"
+ {
+ "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_D77A3D2BF6A14EC0BA73FB19779FAB12"
+ {
+ "Sequence" = "3:100"
+ "DisplayName" = "8:Finished"
+ "UseDynamicProperties" = "11:TRUE"
+ "IsDependency" = "11:FALSE"
+ "SourcePath" = "8:\\VsdFinishedDlg.wid"
+ "Properties"
+ {
+ "BannerBitmap"
+ {
+ "Name" = "8:BannerBitmap"
+ "DisplayName" = "8:#1001"
+ "Description" = "8:#1101"
+ "Type" = "3:8"
+ "ContextData" = "8:Bitmap"
+ "Attributes" = "3:4"
+ "Setting" = "3:1"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ "UpdateText"
+ {
+ "Name" = "8:UpdateText"
+ "DisplayName" = "8:#1058"
+ "Description" = "8:#1158"
+ "Type" = "3:15"
+ "ContextData" = "8:"
+ "Attributes" = "3:0"
+ "Setting" = "3:1"
+ "Value" = "8:#1258"
+ "DefaultValue" = "8:#1258"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ }
+ }
+ }
+ }
+ "{2479F3F5-0309-486D-8047-8187E2CE5BA0}:_6E3C5238144E479E843854EBBA1537D7"
+ {
+ "UseDynamicProperties" = "11:FALSE"
+ "IsDependency" = "11:FALSE"
+ "SourcePath" = "8:\\VsdUserInterface.wim"
+ }
+ "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_6E611099E0D145ED97AE0A65E1DA5CA1"
+ {
+ "Name" = "8:#1901"
+ "Sequence" = "3:1"
+ "Attributes" = "3:2"
+ "Dialogs"
+ {
+ "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_3CC24897E20E46E1B46D68576A4695AB"
+ {
+ "Sequence" = "3:100"
+ "DisplayName" = "8:Progress"
+ "UseDynamicProperties" = "11:TRUE"
+ "IsDependency" = "11:FALSE"
+ "SourcePath" = "8:\\VsdProgressDlg.wid"
+ "Properties"
+ {
+ "BannerBitmap"
+ {
+ "Name" = "8:BannerBitmap"
+ "DisplayName" = "8:#1001"
+ "Description" = "8:#1101"
+ "Type" = "3:8"
+ "ContextData" = "8:Bitmap"
+ "Attributes" = "3:4"
+ "Setting" = "3:1"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ "ShowProgress"
+ {
+ "Name" = "8:ShowProgress"
+ "DisplayName" = "8:#1009"
+ "Description" = "8:#1109"
+ "Type" = "3:5"
+ "ContextData" = "8:1;True=1;False=0"
+ "Attributes" = "3:0"
+ "Setting" = "3:0"
+ "Value" = "3:1"
+ "DefaultValue" = "3:1"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ }
+ }
+ }
+ }
+ "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_731A92AF1A2B4C0FA36A64395A863A73"
+ {
+ "Name" = "8:#1900"
+ "Sequence" = "3:1"
+ "Attributes" = "3:1"
+ "Dialogs"
+ {
+ "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_37F4E93137694E11841A70BF71F78951"
+ {
+ "Sequence" = "3:200"
+ "DisplayName" = "8:Installation Folder"
+ "UseDynamicProperties" = "11:TRUE"
+ "IsDependency" = "11:FALSE"
+ "SourcePath" = "8:\\VsdFolderDlg.wid"
+ "Properties"
+ {
+ "BannerBitmap"
+ {
+ "Name" = "8:BannerBitmap"
+ "DisplayName" = "8:#1001"
+ "Description" = "8:#1101"
+ "Type" = "3:8"
+ "ContextData" = "8:Bitmap"
+ "Attributes" = "3:4"
+ "Setting" = "3:1"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ "InstallAllUsersVisible"
+ {
+ "Name" = "8:InstallAllUsersVisible"
+ "DisplayName" = "8:#1059"
+ "Description" = "8:#1159"
+ "Type" = "3:5"
+ "ContextData" = "8:1;True=1;False=0"
+ "Attributes" = "3:0"
+ "Setting" = "3:0"
+ "Value" = "3:1"
+ "DefaultValue" = "3:1"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ }
+ }
+ "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_39A63569BAF5419985F04776A3407467"
+ {
+ "Sequence" = "3:300"
+ "DisplayName" = "8:Confirm Installation"
+ "UseDynamicProperties" = "11:TRUE"
+ "IsDependency" = "11:FALSE"
+ "SourcePath" = "8:\\VsdConfirmDlg.wid"
+ "Properties"
+ {
+ "BannerBitmap"
+ {
+ "Name" = "8:BannerBitmap"
+ "DisplayName" = "8:#1001"
+ "Description" = "8:#1101"
+ "Type" = "3:8"
+ "ContextData" = "8:Bitmap"
+ "Attributes" = "3:4"
+ "Setting" = "3:1"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ }
+ }
+ "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_88CB1C70E75C413EA191BEEDD1E3E8FF"
+ {
+ "Sequence" = "3:100"
+ "DisplayName" = "8:Welcome"
+ "UseDynamicProperties" = "11:TRUE"
+ "IsDependency" = "11:FALSE"
+ "SourcePath" = "8:\\VsdWelcomeDlg.wid"
+ "Properties"
+ {
+ "BannerBitmap"
+ {
+ "Name" = "8:BannerBitmap"
+ "DisplayName" = "8:#1001"
+ "Description" = "8:#1101"
+ "Type" = "3:8"
+ "ContextData" = "8:Bitmap"
+ "Attributes" = "3:4"
+ "Setting" = "3:1"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ "CopyrightWarning"
+ {
+ "Name" = "8:CopyrightWarning"
+ "DisplayName" = "8:#1002"
+ "Description" = "8:#1102"
+ "Type" = "3:3"
+ "ContextData" = "8:"
+ "Attributes" = "3:0"
+ "Setting" = "3:1"
+ "Value" = "8:#1202"
+ "DefaultValue" = "8:#1202"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ "Welcome"
+ {
+ "Name" = "8:Welcome"
+ "DisplayName" = "8:#1003"
+ "Description" = "8:#1103"
+ "Type" = "3:3"
+ "ContextData" = "8:"
+ "Attributes" = "3:0"
+ "Setting" = "3:1"
+ "Value" = "8:#1203"
+ "DefaultValue" = "8:#1203"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ }
+ }
+ }
+ }
+ "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_8EB038A4A957407583820E7CD5046E82"
+ {
+ "Name" = "8:#1902"
+ "Sequence" = "3:2"
+ "Attributes" = "3:3"
+ "Dialogs"
+ {
+ "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_5D609F363B924865BA57501376D1274F"
+ {
+ "Sequence" = "3:100"
+ "DisplayName" = "8:Finished"
+ "UseDynamicProperties" = "11:TRUE"
+ "IsDependency" = "11:FALSE"
+ "SourcePath" = "8:\\VsdAdminFinishedDlg.wid"
+ "Properties"
+ {
+ "BannerBitmap"
+ {
+ "Name" = "8:BannerBitmap"
+ "DisplayName" = "8:#1001"
+ "Description" = "8:#1101"
+ "Type" = "3:8"
+ "ContextData" = "8:Bitmap"
+ "Attributes" = "3:4"
+ "Setting" = "3:1"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ }
+ }
+ }
+ }
+ "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_95AB838EE78D47A29F057E905458D2CD"
+ {
+ "Name" = "8:#1901"
+ "Sequence" = "3:2"
+ "Attributes" = "3:2"
+ "Dialogs"
+ {
+ "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_B8C192D85D134C6AB5611F36A2E2CC8C"
+ {
+ "Sequence" = "3:100"
+ "DisplayName" = "8:Progress"
+ "UseDynamicProperties" = "11:TRUE"
+ "IsDependency" = "11:FALSE"
+ "SourcePath" = "8:\\VsdAdminProgressDlg.wid"
+ "Properties"
+ {
+ "BannerBitmap"
+ {
+ "Name" = "8:BannerBitmap"
+ "DisplayName" = "8:#1001"
+ "Description" = "8:#1101"
+ "Type" = "3:8"
+ "ContextData" = "8:Bitmap"
+ "Attributes" = "3:4"
+ "Setting" = "3:1"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ "ShowProgress"
+ {
+ "Name" = "8:ShowProgress"
+ "DisplayName" = "8:#1009"
+ "Description" = "8:#1109"
+ "Type" = "3:5"
+ "ContextData" = "8:1;True=1;False=0"
+ "Attributes" = "3:0"
+ "Setting" = "3:0"
+ "Value" = "3:1"
+ "DefaultValue" = "3:1"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ }
+ }
+ }
+ }
+ "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_E2CB94120E954D579CFD53EC56A54074"
+ {
+ "Name" = "8:#1900"
+ "Sequence" = "3:2"
+ "Attributes" = "3:1"
+ "Dialogs"
+ {
+ "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_158E3F9D70D94342951F089EC2ACF7A8"
+ {
+ "Sequence" = "3:100"
+ "DisplayName" = "8:Welcome"
+ "UseDynamicProperties" = "11:TRUE"
+ "IsDependency" = "11:FALSE"
+ "SourcePath" = "8:\\VsdAdminWelcomeDlg.wid"
+ "Properties"
+ {
+ "BannerBitmap"
+ {
+ "Name" = "8:BannerBitmap"
+ "DisplayName" = "8:#1001"
+ "Description" = "8:#1101"
+ "Type" = "3:8"
+ "ContextData" = "8:Bitmap"
+ "Attributes" = "3:4"
+ "Setting" = "3:1"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ "CopyrightWarning"
+ {
+ "Name" = "8:CopyrightWarning"
+ "DisplayName" = "8:#1002"
+ "Description" = "8:#1102"
+ "Type" = "3:3"
+ "ContextData" = "8:"
+ "Attributes" = "3:0"
+ "Setting" = "3:1"
+ "Value" = "8:#1202"
+ "DefaultValue" = "8:#1202"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ "Welcome"
+ {
+ "Name" = "8:Welcome"
+ "DisplayName" = "8:#1003"
+ "Description" = "8:#1103"
+ "Type" = "3:3"
+ "ContextData" = "8:"
+ "Attributes" = "3:0"
+ "Setting" = "3:1"
+ "Value" = "8:#1203"
+ "DefaultValue" = "8:#1203"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ }
+ }
+ "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_89A814C39AB045009F3AAC89B1F6B0AF"
+ {
+ "Sequence" = "3:300"
+ "DisplayName" = "8:Confirm Installation"
+ "UseDynamicProperties" = "11:TRUE"
+ "IsDependency" = "11:FALSE"
+ "SourcePath" = "8:\\VsdAdminConfirmDlg.wid"
+ "Properties"
+ {
+ "BannerBitmap"
+ {
+ "Name" = "8:BannerBitmap"
+ "DisplayName" = "8:#1001"
+ "Description" = "8:#1101"
+ "Type" = "3:8"
+ "ContextData" = "8:Bitmap"
+ "Attributes" = "3:4"
+ "Setting" = "3:1"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ }
+ }
+ "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_9EC1859DBFE94DB2B27737B3DE9C3DB3"
+ {
+ "Sequence" = "3:200"
+ "DisplayName" = "8:Installation Folder"
+ "UseDynamicProperties" = "11:TRUE"
+ "IsDependency" = "11:FALSE"
+ "SourcePath" = "8:\\VsdAdminFolderDlg.wid"
+ "Properties"
+ {
+ "BannerBitmap"
+ {
+ "Name" = "8:BannerBitmap"
+ "DisplayName" = "8:#1001"
+ "Description" = "8:#1101"
+ "Type" = "3:8"
+ "ContextData" = "8:Bitmap"
+ "Attributes" = "3:4"
+ "Setting" = "3:1"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ }
+ }
+ }
+ }
+ }
+ "MergeModule"
+ {
+ }
+ "ProjectOutput"
+ {
+ "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_C77CF6B5C4A84EC4846D2D6C02F81144"
+ {
+ "SourcePath" = "8:..\\x64\\Release\\PoolMonX.exe"
+ "TargetName" = "8:"
+ "Tag" = "8:"
+ "Folder" = "8:_CC6BF2AE29C14B7996F8452E18FECE6E"
+ "Condition" = "8:"
+ "Transitive" = "11:FALSE"
+ "Vital" = "11:TRUE"
+ "ReadOnly" = "11:FALSE"
+ "Hidden" = "11:FALSE"
+ "System" = "11:FALSE"
+ "Permanent" = "11:FALSE"
+ "SharedLegacy" = "11:FALSE"
+ "PackageAs" = "3:1"
+ "Register" = "3:1"
+ "Exclude" = "11:FALSE"
+ "IsDependency" = "11:FALSE"
+ "IsolateTo" = "8:"
+ "ProjectOutputGroupRegister" = "3:1"
+ "OutputConfiguration" = "8:"
+ "OutputGroupCanonicalName" = "8:Built"
+ "OutputProjectGuid" = "8:{26A93265-52DE-4226-9974-AC437B0EC988}"
+ "ShowKeyOutput" = "11:TRUE"
+ "ExcludeFilters"
+ {
+ }
+ }
+ }
+ }
+}
diff --git a/resource.h b/resource.h
index afb4e97..8bd045a 100644
--- a/resource.h
+++ b/resource.h
@@ -11,7 +11,6 @@
#define IDI_PAGED 311
#define IDR_POOLTAG 314
#define IDC_REFRESH 1000
-#define ID_FILE_SAVE32771 32771
#define ID_VIEW_REFRESH 32772
#define ID_VIEW_PAUSE 32773
#define ID_VIEW_REFRESHINTERVAL 32778
diff --git a/test.csv b/test.csv
new file mode 100644
index 0000000..4dc946b
Binary files /dev/null and b/test.csv differ