Skip to content

Commit

Permalink
Initial commit
Browse files Browse the repository at this point in the history
  • Loading branch information
RatinCN committed Mar 27, 2021
0 parents commit e7c336f
Show file tree
Hide file tree
Showing 93 changed files with 8,155 additions and 0 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
.vs
Binary file added Asset/Screenshots/1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Asset/Screenshots/2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Asset/Screenshots/3.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
21 changes: 21 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
MIT License

Copyright (c) 2021 KNSoft

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
3 changes: 3 additions & 0 deletions Publish.cmd
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
COPY /Y "%~dp0Source\Win32\Release\AlleyWind.exe" "%~dp0Release\AlleyWind_x86.exe"
COPY /Y "%~dp0Source\x64\Release\AlleyWind.exe" "%~dp0Release\AlleyWind_x64.exe"
PAUSE
22 changes: 22 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# AlleyWind
AlleyWind is an advanced Win32-based and open-sourced utility that helps you to manage system's windows. AlleyWind could:
+ Displays a graphical tree of relationships among windows, and search what you want
+ Shows the properties of selected window(s), and some of them could be modified:
+ Text, Style, Extended Style and Class Style
+ Visibility, Availability, and Topmost property
+ Hot Key, Visual Style, Display Affinity and Layered properties
+ Obtains private properties (e.g., address of window or dialog callback procedure) by using code injection technology
+ Supports multiple languages, multiple monitors and High-DPI

## Homepage
\>\>\> Click our homepage [KNSoft.org](https://knsoft.org) for more information! <<<

## Latest Version
AlleyWind V1.0.0.0 Alpha

<font color=red>*This is Alpha version for early testing only, which is not stable! SHOULD NOT BE USED IN IMPORTANT ENVIRONMENT!</font>

## Snapshots
![avatar](Asset/Screenshots/1.png)
![avatar](Asset/Screenshots/2.png)
![avatar](Asset/Screenshots/3.png)
Binary file added Release/AlleyWind_x64.exe
Binary file not shown.
Binary file added Release/AlleyWind_x86.exe
Binary file not shown.
3 changes: 3 additions & 0 deletions Release/Settings.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[General]
ResponseTimeout=200
EnableRemoteHijack=0
7 changes: 7 additions & 0 deletions Source/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
.vs
/Win32
/x64
/AlleyWind/Win32
/AlleyWind/x64
*.vcxproj.user
*.aps
31 changes: 31 additions & 0 deletions Source/AlleyWind.sln
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.30523.141
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AlleyWind", "AlleyWind\AlleyWind.vcxproj", "{975A445D-9333-401B-868E-6283C7B464D0}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{975A445D-9333-401B-868E-6283C7B464D0}.Debug|x64.ActiveCfg = Debug|x64
{975A445D-9333-401B-868E-6283C7B464D0}.Debug|x64.Build.0 = Debug|x64
{975A445D-9333-401B-868E-6283C7B464D0}.Debug|x86.ActiveCfg = Debug|Win32
{975A445D-9333-401B-868E-6283C7B464D0}.Debug|x86.Build.0 = Debug|Win32
{975A445D-9333-401B-868E-6283C7B464D0}.Release|x64.ActiveCfg = Release|x64
{975A445D-9333-401B-868E-6283C7B464D0}.Release|x64.Build.0 = Release|x64
{975A445D-9333-401B-868E-6283C7B464D0}.Release|x86.ActiveCfg = Release|Win32
{975A445D-9333-401B-868E-6283C7B464D0}.Release|x86.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {A99F203C-9E1A-48B1-8E41-1A7CD706B424}
EndGlobalSection
EndGlobal
Binary file added Source/AlleyWind/3rdParty/NTAssassin/NAC/NAC.exe
Binary file not shown.
Binary file added Source/AlleyWind/3rdParty/NTAssassin/NAC/NAC.pdb
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
3 changes: 3 additions & 0 deletions Source/AlleyWind/3rdParty/NTAssassin/include/NTACon.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
#pragma once

#include "NTAssassin.h"
173 changes: 173 additions & 0 deletions Source/AlleyWind/3rdParty/NTAssassin/include/NTACtl.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,173 @@
#pragma once

#include "NTAssassin.h"

typedef struct _CTL_MENUW CTL_MENUW, * PCTL_MENUW;

struct _CTL_MENUW {
UINT uFlags;
UINT_PTR uID;
union {
UINT_PTR I18NIndex;
LPARAM lParam; // MF_OWNERDRAW
HBITMAP hBmp; // MF_BITMAP
LPCWSTR lpszText; // MF_STRING
};
PCTL_MENUW lpSubMenu;
UINT SubMenuCount;
HMENU Handle;
};

#ifdef UNICODE
#define CTL_MENU CTL_MENUW
#define PCTL_MENU PCTL_MENUW
#else
#define CTL_MENU CTL_MENUA
#define PCTL_MENU PCTL_MENUA
#endif

typedef struct _CTL_PROPSHEETPAGEW CTL_PROPSHEETPAGEW, * PCTL_PROPSHEETPAGEW;
struct _CTL_PROPSHEETPAGEW {
union {
UINT_PTR I18NIndex;
LPCWSTR Title;
};
HINSTANCE Instance;
UINT DlgResID;
DLGPROC DlgProc;
};

#ifdef UNICODE
#define CTL_PROPSHEETPAGE CTL_PROPSHEETPAGEW
#define PCTL_PROPSHEETPAGE PCTL_PROPSHEETPAGEW
#else
#define CTL_PROPSHEETPAGE CTL_PROPSHEETPAGEA
#define PCTL_PROPSHEETPAGE PCTL_PROPSHEETPAGEA
#endif

typedef struct _CTL_LISTCTL_COLUMEW {
union {
UINT_PTR I18NIndex;
LPCWSTR Title;
};
INT Width;
} CTL_LISTCTL_COLUMEW, * PCTL_LISTCTL_COLUMEW;

#ifdef UNICODE
#define CTL_LISTCTL_COLUME CTL_LISTCTL_COLUMEW
#define PCTL_LISTCTL_COLUME PCTL_LISTCTL_COLUMEW
#else
#define CTL_LISTCTL_COLUME CTL_LISTCTL_COLUMEA
#define PCTL_LISTCTL_COLUME PCTL_LISTCTL_COLUMEA
#endif

typedef struct _CTL_COMBOBOXCTL_ITEMW {
union {
UINT_PTR I18NIndex;
LPCWSTR String;
};
LPARAM Param;
} CTL_COMBOBOXCTL_ITEMW, * PCTL_COMBOBOXCTL_ITEMW;

#ifdef UNICODE
#define CTL_COMBOBOXCTL_ITEM CTL_COMBOBOXCTL_ITEMW
#define PCTL_COMBOBOXCTL_ITEM PCTL_COMBOBOXCTL_ITEMW
#else
#define CTL_COMBOBOXCTL_ITEM CTL_COMBOBOXCTL_ITEMA
#define PCTL_COMBOBOXCTL_ITEM PCTL_COMBOBOXCTL_ITEMA
#endif

/**
* @brief Creates window menu
* @param[in] stMenus Pointer to an UI_MENU structures array, contains information about submenus to be created
* @param[in] uCount Number of UI_MENU structures in stMenus parameter point to
* @param[in] hParent Handle to parent menu, or NULL if create a top-level menu
* @return Returns handle to the new menu
*/
NTA_API HMENU NTAPI Ctl_CreateMenuExW(CTL_MENUW stMenus[], UINT uCount, HMENU hParent);
#define Ctl_CreateMenuW(stMenus, hParent) Ctl_CreateMenuExW(stMenus, ARRAYSIZE(stMenus), hParent)
#ifdef UNICODE
#define Ctl_CreateMenuEx Ctl_CreateMenuExW
#define Ctl_CreateMenu Ctl_CreateMenuW
#else
#define Ctl_CreateMenuEx Ctl_CreateMenuExA
#define Ctl_CreateMenu Ctl_CreateMenuA
#endif

/**
* @brief Creates a menu and append to specified window
* @see "Ctl_CreateMenuEx" and "SetMenu"
*/
#define Ctl_SetMenuExW(hWnd, stMenus, uCount) SetMenu(hWnd, Ctl_CreateMenuExW(stDlgMenu, uCount, NULL));
#define Ctl_SetMenuW(hWnd, stMenus) SetMenu(hWnd, Ctl_CreateMenuExW(stDlgMenu, ARRAYSIZE(stMenus), NULL));
#ifdef UNICODE
#define Ctl_SetMenuEx Ctl_SetMenuExW
#define Ctl_SetMenu Ctl_SetMenuW
#else
#define Ctl_SetMenuEx Ctl_SetMenuExA
#define Ctl_SetMenu Ctl_SetMenuA
#endif

/**
* @brief Popups the menu
* @see "TrackPopupMenu"
*/
#define Ctl_PopupMenu(hMenu, x, y, hOwner) TrackPopupMenu(hMenu, TPM_LEFTALIGN | TPM_TOPALIGN | TPM_RIGHTBUTTON, x, y, 0, hOwner, NULL)

/**
* @brief Destroies the menu created by "Ctl_CreateMenuEx"
*/
NTA_API VOID NTAPI Ctl_DestroyMenuEx(PCTL_MENUW lpstMenus, UINT uCount, HMENU hMenu);
#define Ctl_DestroyMenu(lpstMenus, hMenu) Ctl_DestroyMenuEx(lpstMenus, ARRAYSIZE(lpstMenus), hMenu)

/**
* @brief Initializes tab control with property sheet feature powered
* @param[in] hDlg Handle to the dialog contains the tab control
* @param[in] uTabCtlID Control ID of tab control
* @param[in] uSheetCount Number of UI_PROPSHEETPAGE structures in Sheets parameter point to
* @param[in] Sheets Pointer to an UI_PROPSHEETPAGE structures array, contains information about property sheet of tabs
* @param[in] lParam User defined parameter, will be passed to each DlgProc in UI_PROPSHEETPAGE structure by WM_INITDIALOG message
*/
NTA_API VOID NTAPI Ctl_SetPropertySheetW(HWND hDlg, UINT uTabCtlID, UINT uSheetCount, CTL_PROPSHEETPAGEW Sheets[], LPARAM lParam);
#ifdef UNICODE
#define Ctl_SetPropertySheet Ctl_SetPropertySheetW
#else
#define Ctl_SetPropertySheet Ctl_SetPropertySheetA
#endif

/**
* @brief Initializes List-View control by specified columes
* @param[in] hList Handle to the List-View control
* @param[in] uCols Number of UI_LISTCTL_COLUME structures specified in Cols parameter
* @param[in] Cols Pointer to an UI_LISTCTL_COLUME structures array, contains information about columes
* @param[in] lExStyle Extended styles set to the List-View control
*/
NTA_API VOID NTAPI Ctl_InitListCtlExW(HWND hList, UINT uCols, CTL_LISTCTL_COLUMEW Cols[], LONG_PTR lExStyle);
#ifdef UNICODE
#define Ctl_InitListCtlEx Ctl_InitListCtlExW
#else
#define Ctl_InitListCtlEx Ctl_InitListCtlExA
#endif

#define Ctl_InitListCtlW(hList, Cols, lExStyle) Ctl_InitListCtlExW(hList, ARRAYSIZE(Cols), Cols, lExStyle)
#define Ctl_InitListCtlA(hList, Cols, lExStyle) Ctl_InitListCtlExA(hList, ARRAYSIZE(Cols), Cols, lExStyle)
#ifdef UNICODE
#define Ctl_InitListCtl Ctl_InitListCtlW
#else
#define Ctl_InitListCtl Ctl_InitListCtlA
#endif

NTA_API VOID NTAPI Ctl_InitComboBoxExW(HWND hComboBox, PCTL_COMBOBOXCTL_ITEMW lpstItems, UINT uItems, BOOL bSetParam);
#ifdef UNICODE
#define Ctl_InitComboBoxEx Ctl_InitComboBoxExW
#else
#define Ctl_InitComboBoxEx Ctl_InitComboBoxExA
#endif

#define Ctl_InitComboBoxW(hComboBox, lpstItems, bSetParam) Ctl_InitComboBoxExW(hComboBox, lpstItems, ARRAYSIZE(lpstItems), bSetParam)
#define Ctl_InitComboBoxA(hComboBox, lpstItems, bSetParam) Ctl_InitComboBoxExA(hComboBox, lpstItems, ARRAYSIZE(lpstItems), bSetParam)
#ifdef UNICODE
#define Ctl_InitComboBox Ctl_InitComboBoxW
#else
#define Ctl_InitComboBox Ctl_InitComboBoxA
#endif
16 changes: 16 additions & 0 deletions Source/AlleyWind/3rdParty/NTAssassin/include/NTAData.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
#pragma once

#include "NTAssassin.h"


NTA_API PVOID WINAPIV Data_StructCombineEx(UINT uGroupCount, UINT uSize, ...);

/**
* @brief Combines groups of structures into a new allocated buffer
* @param[in] uGroupCount Number of groups
* @param[in] t Type of structure
* @param[in] ... lpst1, uCount1, lpst2, uCount2, ...
* @return Returns new allocated buffer, should be freed by calling "Mem_HeapFree"
* @see "Data_StructCombineEx"
*/
#define Data_StructCombine(uGroupCount, t, ...) (t*)Data_StructCombineEx(uGroupCount, sizeof(t), __VA_ARGS__)
19 changes: 19 additions & 0 deletions Source/AlleyWind/3rdParty/NTAssassin/include/NTADbg.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
#pragma once

#include "NTAssassin.h"

#if _DEBUG

#include <stdio.h>

#define Dbg_PrintA printf
#define Dbg_PrintW wprintf
#ifdef UNICODE
#define Dbg_Print Dbg_PrintW
#else
#define Dbg_Print Dbg_PrintA
#endif

#else

#endif
Loading

0 comments on commit e7c336f

Please sign in to comment.