Returning the Old Macro to Life (Thumb_Expose)Coco's work Topic is solved
Returning the Old Macro to Life (Thumb_Expose)Coco's work
https://autohotkey.com/board/topic/83774-latest-update-08212012-thumb-expose-expose-clone/
I found a very nice study on the old site. But the links are dead. I've found the necessary library from different sources, but it still fails.
"D:\_AppData_\Desktop\PencereOnizleme.ahk (70) : ==> Call to nonexistent function.
Specifically: Thumbnail_Create(hWin, desk_ID)"
I think that was the necessary library.
https://github.com/maul-esel/AeroThumbnail/blob/master/lib/Thumbnail.ahk
Can we make this script run again?
Thanks.
I found a very nice study on the old site. But the links are dead. I've found the necessary library from different sources, but it still fails.
"D:\_AppData_\Desktop\PencereOnizleme.ahk (70) : ==> Call to nonexistent function.
Specifically: Thumbnail_Create(hWin, desk_ID)"
I think that was the necessary library.
https://github.com/maul-esel/AeroThumbnail/blob/master/lib/Thumbnail.ahk
Can we make this script run again?
Thanks.
Re: Returning the Old Macro to Life (Thumb_Expose)Coco's work
Isn't there anyone who can help? Coco hasn't joined the new forum?
Re: Returning the Old Macro to Life (Thumb_Expose)Coco's work
I found some Thumbnail functions at https://autohotkey.com/board/topic/71692-an-updated-livewindows-which-can-also-show-video/
It includes Function Thumbnail_Create()
Is this what your looking for?
It includes Function Thumbnail_Create()
Is this what your looking for?
Code: Select all
/**************************************************************************************************************
title: Thumbnail functions
wrapped by maul.esel
Credits:
- skrommel for example how to show a thumbnail (http://www.autohotkey.com/forum/topic34318.html)
- RaptorOne & IsNull for correcting some mistakes in the code
NOTE:
*This requires Windows Vista or Windows7* (tested on Windows 7)
Quick-Tutorial:
To add a thumbnail to a gui, you must know the following:
- the hwnd / id of your gui
- the hwnd / id of the window to show
- the coordinates where to show the thumbnail
- the coordinates of the area to be shown
1. Create a thumbnail with Thumbnail_Create()
2. Set its regions with Thumbnail_SetRegion()
a. optionally query for the source windows width and height before with <Thumbnail_GetSourceSize()>
3. optionally set the opacity with <Thumbnail_SetOpacity()>
4. show the thumbnail with <Thumbnail_Show()>
***************************************************************************************************************
*/
/**************************************************************************************************************
Function: Thumbnail_Create()
creates a thumbnail relationship between two windows
params:
handle hDestination - the window that will show the thumbnail
handle hSource - the window whose thumbnail will be shown
returns:
handle hThumb - thumbnail id on success, false on failure
Remarks:
To get the Hwnds, you could use WinExist()
***************************************************************************************************************
*/
Thumbnail_Create(hDestination, hSource) {
VarSetCapacity(thumbnail, 4, 0)
if DllCall("dwmapi.dll\DwmRegisterThumbnail", "UInt", hDestination, "UInt", hSource, "UInt", &thumbnail)
return false
return NumGet(thumbnail)
}
/**************************************************************************************************************
Function: Thumbnail_SetRegion()
defines dimensions of a previously created thumbnail
params:
handle hThumb - the thumbnail id returned by <Thumbnail_Create()>
int xDest - the x-coordinate of the rendered thumbnail inside the destination window
int yDest - the y-coordinate of the rendered thumbnail inside the destination window
int wDest - the width of the rendered thumbnail inside the destination window
int hDest - the height of the rendered thumbnail inside the destination window
int xSource - the x-coordinate of the area that will be shown inside the thumbnail
int ySource - the y-coordinate of the area that will be shown inside the thumbnail
int wSource - the width of the area that will be shown inside the thumbnail
int hSource - the height of the area that will be shown inside the thumbnail
returns:
bool success - true on success, false on failure
***************************************************************************************************************
*/
Thumbnail_SetRegion(hThumb, xDest, yDest, wDest, hDest, xSource, ySource, wSource, hSource) {
dwFlags := 0x00000001 | 0x00000002
VarSetCapacity(dskThumbProps, 45, 0)
NumPut(dwFlags, dskThumbProps, 0, "UInt")
NumPut(xDest, dskThumbProps, 4, "Int")
NumPut(yDest, dskThumbProps, 8, "Int")
NumPut(wDest+xDest, dskThumbProps, 12, "Int")
NumPut(hDest+yDest, dskThumbProps, 16, "Int")
NumPut(xSource, dskThumbProps, 20, "Int")
NumPut(ySource, dskThumbProps, 24, "Int")
NumPut(wSource+xSource, dskThumbProps, 28, "Int")
NumPut(hSource+ySource, dskThumbProps, 32, "Int")
return DllCall("dwmapi.dll\DwmUpdateThumbnailProperties", "UInt", hThumb, "UInt", &dskThumbProps) ? false : true
}
/**************************************************************************************************************
Function: Thumbnail_Show()
shows a previously created and sized thumbnail
params:
handle hThumb - the thumbnail id returned by <Thumbnail_Create()>
returns:
bool success - true on success, false on failure
***************************************************************************************************************
*/
Thumbnail_Show(hThumb) {
static dwFlags := 0x00000008, fVisible := 1
VarSetCapacity(dskThumbProps, 45, 0)
NumPut(dwFlags, dskThumbProps, 0, "UInt")
NumPut(fVisible, dskThumbProps, 37, "Int")
return DllCall("dwmapi.dll\DwmUpdateThumbnailProperties", "UInt", hThumb, "UInt", &dskThumbProps) ? false : true
}
/**************************************************************************************************************
Function: Thumbnail_Hide()
hides a thumbnail. It can be shown again without recreating
params:
handle hThumb - the thumbnail id returned by <Thumbnail_Create()>
returns:
bool success - true on success, false on failure
***************************************************************************************************************
*/
Thumbnail_Hide(hThumb) {
static dwFlags := 0x00000008, fVisible := 0
VarSetCapacity(dskThumbProps, 45, 0)
NumPut(dwFlags, dskThumbProps, 0, "Uint")
NumPut(fVisible, dskThumbProps, 37, "Int")
return DllCall("dwmapi.dll\DwmUpdateThumbnailProperties", "UInt", hThumb, "UInt", &dskThumbProps) ? false : true
}
/**************************************************************************************************************
Function: Thumbnail_Destroy()
destroys a thumbnail relationship
params:
handle hThumb - the thumbnail id returned by <Thumbnail_Create()>
returns:
bool success - true on success, false on failure
***************************************************************************************************************
*/
Thumbnail_Destroy(hThumb) {
return DllCall("dwmapi.dll\DwmUnregisterThumbnail", "UInt", hThumb) ? false : true
}
/**************************************************************************************************************
Function: Thumbnail_GetSourceSize()
gets the width and height of the source window - can be used with <Thumbnail_SetRegion()>
params:
handle hThumb - the thumbnail id returned by <Thumbnail_Create()>
ByRef int width - receives the width of the window
ByRef int height - receives the height of the window
returns:
bool success - true on success, false on failure
***************************************************************************************************************
*/
Thumbnail_GetSourceSize(hThumb, ByRef width, ByRef height) {
VarSetCapacity(Size, 8, 0)
if DllCall("dwmapi.dll\DwmQueryThumbnailSourceSize", "Uint", hThumb, "Uint", &Size)
return false
width := NumGet(&Size + 0, 0, "int")
height := NumGet(&Size + 0, 4, "int")
return true
}
/**************************************************************************************************************
Function: Thumbnail_SetOpacity()
sets the current opacity level
params:
handle hThumb - the thumbnail id returned by <Thumbnail_Create()>
int opacity - the opacity level from 0 to 255 (will wrap to the other end if invalid)
returns:
bool success - true on success, false on failure
***************************************************************************************************************
*/
Thumbnail_SetOpacity(hThumb, opacity) {
static dwFlags := 0x00000004
VarSetCapacity(dskThumbProps, 45, 0)
NumPut(dwFlags, dskThumbProps, 0, "UInt")
NumPut(opacity, dskThumbProps, 36, "UChar")
return DllCall("dwmapi.dll\DwmUpdateThumbnailProperties", "Uint", hThumb, "UInt", &dskThumbProps) ? false : true
}
/**************************************************************************************************************
section: example
This example sctript shows a thumbnail of your desktop in a GUI
(start code)
; initializing the script:
#SingleInstance force
#NoEnv
#KeyHistory 0
SetWorkingDir %A_ScriptDir%
#include Thumbnail.ahk
; get the handles:
Gui +LastFound
hDestination := WinExist() ; ... to our GUI...
hSource := WinExist("ahk_class Progman") ; ... and to the desktop
; creating the thumbnail:
hThumb := Thumbnail_Create(hDestination, hSource) ; you must get the return value here!
; getting the source window dimensions:
Thumbnail_GetSourceSize(hThumb, width, height)
; then setting its region:
Thumbnail_SetRegion(hThumb, 25, 25 ; x and y in the GUI
, 400, 350 ; display dimensions
, 0, 0 ; source area coordinates
, width, height) ; the values from Thumbnail_GetSourceSize()
; now some GUI stuff:
Gui +AlwaysOnTop +ToolWindow
Gui Add, Button, gHideShow x0 y0, Hide / Show
; Now we can show it:
Thumbnail_Show(hThumb) ; but it is not visible now...
Gui Show, w450 h400 ; ... until we show the GUI
; even now we can set the transparency:
Thumbnail_SetOpacity(hThumb, 200)
return
GuiClose: ; in case the GUI is closed:
Thumbnail_Destroy(hThumb) ; free the resources
ExitApp
HideShow: ; in case the button is clicked:
if hidden
Thumbnail_Show(hThumb)
else
Thumbnail_Hide(hThumb)
hidden := !hidden
return
(end)
***************************************************************************************************************
*/
Check out my scripts. (MyIpChanger) (ClipBoard Manager) (SavePictureAs)
All my scripts are tested on Windows 10, AutoHotkey 32 bit Ansi unless otherwise stated.
All my scripts are tested on Windows 10, AutoHotkey 32 bit Ansi unless otherwise stated.
Re: Returning the Old Macro to Life (Thumb_Expose)Coco's work
Thank you so much. Maybe I came closer to the outcome. I'm having this error when I use this library.DataLife wrote: ↑30 Apr 2019, 21:50I found some Thumbnail functions at https://autohotkey.com/board/topic/71692-an-updated-livewindows-which-can-also-show-video/
It includes Function Thumbnail_Create()
Is this what your looking for?
Code: Select all
/************************************************************************************************************** title: Thumbnail functions wrapped by maul.esel Credits: - skrommel for example how to show a thumbnail (http://www.autohotkey.com/forum/topic34318.html) - RaptorOne & IsNull for correcting some mistakes in the code NOTE: *This requires Windows Vista or Windows7* (tested on Windows 7) Quick-Tutorial: To add a thumbnail to a gui, you must know the following: - the hwnd / id of your gui - the hwnd / id of the window to show - the coordinates where to show the thumbnail - the coordinates of the area to be shown 1. Create a thumbnail with Thumbnail_Create() 2. Set its regions with Thumbnail_SetRegion() a. optionally query for the source windows width and height before with <Thumbnail_GetSourceSize()> 3. optionally set the opacity with <Thumbnail_SetOpacity()> 4. show the thumbnail with <Thumbnail_Show()> *************************************************************************************************************** */ /************************************************************************************************************** Function: Thumbnail_Create() creates a thumbnail relationship between two windows params: handle hDestination - the window that will show the thumbnail handle hSource - the window whose thumbnail will be shown returns: handle hThumb - thumbnail id on success, false on failure Remarks: To get the Hwnds, you could use WinExist() *************************************************************************************************************** */ Thumbnail_Create(hDestination, hSource) { VarSetCapacity(thumbnail, 4, 0) if DllCall("dwmapi.dll\DwmRegisterThumbnail", "UInt", hDestination, "UInt", hSource, "UInt", &thumbnail) return false return NumGet(thumbnail) } /************************************************************************************************************** Function: Thumbnail_SetRegion() defines dimensions of a previously created thumbnail params: handle hThumb - the thumbnail id returned by <Thumbnail_Create()> int xDest - the x-coordinate of the rendered thumbnail inside the destination window int yDest - the y-coordinate of the rendered thumbnail inside the destination window int wDest - the width of the rendered thumbnail inside the destination window int hDest - the height of the rendered thumbnail inside the destination window int xSource - the x-coordinate of the area that will be shown inside the thumbnail int ySource - the y-coordinate of the area that will be shown inside the thumbnail int wSource - the width of the area that will be shown inside the thumbnail int hSource - the height of the area that will be shown inside the thumbnail returns: bool success - true on success, false on failure *************************************************************************************************************** */ Thumbnail_SetRegion(hThumb, xDest, yDest, wDest, hDest, xSource, ySource, wSource, hSource) { dwFlags := 0x00000001 | 0x00000002 VarSetCapacity(dskThumbProps, 45, 0) NumPut(dwFlags, dskThumbProps, 0, "UInt") NumPut(xDest, dskThumbProps, 4, "Int") NumPut(yDest, dskThumbProps, 8, "Int") NumPut(wDest+xDest, dskThumbProps, 12, "Int") NumPut(hDest+yDest, dskThumbProps, 16, "Int") NumPut(xSource, dskThumbProps, 20, "Int") NumPut(ySource, dskThumbProps, 24, "Int") NumPut(wSource+xSource, dskThumbProps, 28, "Int") NumPut(hSource+ySource, dskThumbProps, 32, "Int") return DllCall("dwmapi.dll\DwmUpdateThumbnailProperties", "UInt", hThumb, "UInt", &dskThumbProps) ? false : true } /************************************************************************************************************** Function: Thumbnail_Show() shows a previously created and sized thumbnail params: handle hThumb - the thumbnail id returned by <Thumbnail_Create()> returns: bool success - true on success, false on failure *************************************************************************************************************** */ Thumbnail_Show(hThumb) { static dwFlags := 0x00000008, fVisible := 1 VarSetCapacity(dskThumbProps, 45, 0) NumPut(dwFlags, dskThumbProps, 0, "UInt") NumPut(fVisible, dskThumbProps, 37, "Int") return DllCall("dwmapi.dll\DwmUpdateThumbnailProperties", "UInt", hThumb, "UInt", &dskThumbProps) ? false : true } /************************************************************************************************************** Function: Thumbnail_Hide() hides a thumbnail. It can be shown again without recreating params: handle hThumb - the thumbnail id returned by <Thumbnail_Create()> returns: bool success - true on success, false on failure *************************************************************************************************************** */ Thumbnail_Hide(hThumb) { static dwFlags := 0x00000008, fVisible := 0 VarSetCapacity(dskThumbProps, 45, 0) NumPut(dwFlags, dskThumbProps, 0, "Uint") NumPut(fVisible, dskThumbProps, 37, "Int") return DllCall("dwmapi.dll\DwmUpdateThumbnailProperties", "UInt", hThumb, "UInt", &dskThumbProps) ? false : true } /************************************************************************************************************** Function: Thumbnail_Destroy() destroys a thumbnail relationship params: handle hThumb - the thumbnail id returned by <Thumbnail_Create()> returns: bool success - true on success, false on failure *************************************************************************************************************** */ Thumbnail_Destroy(hThumb) { return DllCall("dwmapi.dll\DwmUnregisterThumbnail", "UInt", hThumb) ? false : true } /************************************************************************************************************** Function: Thumbnail_GetSourceSize() gets the width and height of the source window - can be used with <Thumbnail_SetRegion()> params: handle hThumb - the thumbnail id returned by <Thumbnail_Create()> ByRef int width - receives the width of the window ByRef int height - receives the height of the window returns: bool success - true on success, false on failure *************************************************************************************************************** */ Thumbnail_GetSourceSize(hThumb, ByRef width, ByRef height) { VarSetCapacity(Size, 8, 0) if DllCall("dwmapi.dll\DwmQueryThumbnailSourceSize", "Uint", hThumb, "Uint", &Size) return false width := NumGet(&Size + 0, 0, "int") height := NumGet(&Size + 0, 4, "int") return true } /************************************************************************************************************** Function: Thumbnail_SetOpacity() sets the current opacity level params: handle hThumb - the thumbnail id returned by <Thumbnail_Create()> int opacity - the opacity level from 0 to 255 (will wrap to the other end if invalid) returns: bool success - true on success, false on failure *************************************************************************************************************** */ Thumbnail_SetOpacity(hThumb, opacity) { static dwFlags := 0x00000004 VarSetCapacity(dskThumbProps, 45, 0) NumPut(dwFlags, dskThumbProps, 0, "UInt") NumPut(opacity, dskThumbProps, 36, "UChar") return DllCall("dwmapi.dll\DwmUpdateThumbnailProperties", "Uint", hThumb, "UInt", &dskThumbProps) ? false : true } /************************************************************************************************************** section: example This example sctript shows a thumbnail of your desktop in a GUI (start code) ; initializing the script: #SingleInstance force #NoEnv #KeyHistory 0 SetWorkingDir %A_ScriptDir% #include Thumbnail.ahk ; get the handles: Gui +LastFound hDestination := WinExist() ; ... to our GUI... hSource := WinExist("ahk_class Progman") ; ... and to the desktop ; creating the thumbnail: hThumb := Thumbnail_Create(hDestination, hSource) ; you must get the return value here! ; getting the source window dimensions: Thumbnail_GetSourceSize(hThumb, width, height) ; then setting its region: Thumbnail_SetRegion(hThumb, 25, 25 ; x and y in the GUI , 400, 350 ; display dimensions , 0, 0 ; source area coordinates , width, height) ; the values from Thumbnail_GetSourceSize() ; now some GUI stuff: Gui +AlwaysOnTop +ToolWindow Gui Add, Button, gHideShow x0 y0, Hide / Show ; Now we can show it: Thumbnail_Show(hThumb) ; but it is not visible now... Gui Show, w450 h400 ; ... until we show the GUI ; even now we can set the transparency: Thumbnail_SetOpacity(hThumb, 200) return GuiClose: ; in case the GUI is closed: Thumbnail_Destroy(hThumb) ; free the resources ExitApp HideShow: ; in case the button is clicked: if hidden Thumbnail_Show(hThumb) else Thumbnail_Hide(hThumb) hidden := !hidden return (end) *************************************************************************************************************** */
---------------------------
Screen Preview.ahk
---------------------------
Error: Call to nonexistent function.
Specifically: Thumbnail_SetIncludeNC(thumb_%A_Index%, includeNC)
Line#
139: ThumbPosGrid(thumb_%A_Index%, A_Index, num_Win, new_xDest%A_Index%, new_yDest%A_Index%, new_wDest%A_Index%, new_hDest%A_Index%)
141: old_xDest%A_Index% := X%A_Index%, old_yDest%A_Index% := Y%A_Index%, old_wDest%A_Index% := wSource%A_Index%, old_hDest%A_Index% := hSource%A_Index%
142: old_xDest%A_Index% := old_xDest%A_Index% + 8, old_yDest%A_Index% := old_yDest%A_Index% + 8
143: Opacity := 255
144: includeNC := True
146: Thumbnail_SetRegion(thumb_%A_Index%, old_xDest%A_Index%, old_yDest%A_Index%, old_wDest%A_Index%, old_hDest%A_Index%, xSource%A_Index%, ySource%A_Index%, wSource%A_Index%, hSource%A_Index%)
147: Thumbnail_SetOpacity(thumb_%A_Index%, Opacity)
---> 148: Thumbnail_SetIncludeNC(thumb_%A_Index%, includeNC)
149: Thumbnail_Show(thumb_%A_Index%)
150: }
151: Thumbnail_SetOpacity(thumb_Desk, Opacity)
152: Thumbnail_Show(thumb_Desk)
155: Gui,Gui:Show
156: WinSet,Transparent,210,uWin
157: Gui,2Gui:Show
The program will exit.
---------------------------
Okey
---------------------------
- Attachments
-
- Thumbnail.ahk
- (9.21 KiB) Downloaded 30 times
-
- ScreenPreview.ahk
- (20.24 KiB) Downloaded 28 times
Re: Returning the Old Macro to Life (Thumb_Expose)Coco's work Topic is solved
I found the function Thumbnail_SetIncludeNC(). Put it in Thumbnail.ahk
I have not tried to use ScreenPreview.ahk
I have not tried to use ScreenPreview.ahk
Code: Select all
/*
Function: Thumbnail_SetIncludeNC()
sets whether the source's non-client area should be included. The default value is true.
Parameters:
HANDLE hThumb - the thumbnail id returned by <Thumbnail_Create()>
BOOL include - true to include the non-client area, false to exclude it
Returns:
BOOL success - true on success, false on failure
*/
*/
Thumbnail_SetIncludeNC(hThumb, include)
{
static dwFlags := 0x00000010
_ptr := A_PtrSize ? "UPtr" : "UInt"
VarSetCapacity(dskThumbProps, 45, 0)
NumPut(dwFlags, dskThumbProps, 00, "UInt")
NumPut(!include, dskThumbProps, 42, "UInt")
return DllCall("dwmapi.dll\DwmUpdateThumbnailProperties", _ptr, hThumb, _ptr, &dskThumbProps) >= 0x00
}
Check out my scripts. (MyIpChanger) (ClipBoard Manager) (SavePictureAs)
All my scripts are tested on Windows 10, AutoHotkey 32 bit Ansi unless otherwise stated.
All my scripts are tested on Windows 10, AutoHotkey 32 bit Ansi unless otherwise stated.
Re: Returning the Old Macro to Life (Thumb_Expose)Coco's work
Çok teşekkürler. Harikasınız. Sonunda oldu. Windows 10 üzerinde gerektiği gibi çalışmıyor. Pazartesi günü Windows 7 ile deneyeceğim.DataLife wrote: ↑18 May 2019, 13:22I found the function Thumbnail_SetIncludeNC(). Put it in Thumbnail.ahk
I have not tried to use ScreenPreview.ahk
Code: Select all
/* Function: Thumbnail_SetIncludeNC() sets whether the source's non-client area should be included. The default value is true. Parameters: HANDLE hThumb - the thumbnail id returned by <Thumbnail_Create()> BOOL include - true to include the non-client area, false to exclude it Returns: BOOL success - true on success, false on failure */ */ Thumbnail_SetIncludeNC(hThumb, include) { static dwFlags := 0x00000010 _ptr := A_PtrSize ? "UPtr" : "UInt" VarSetCapacity(dskThumbProps, 45, 0) NumPut(dwFlags, dskThumbProps, 00, "UInt") NumPut(!include, dskThumbProps, 42, "UInt") return DllCall("dwmapi.dll\DwmUpdateThumbnailProperties", _ptr, hThumb, _ptr, &dskThumbProps) >= 0x00 }
Re: Returning the Old Macro to Life (Thumb_Expose)Coco's work
Hi Hasantr.
In your previous comment you wrote that the script doesn't work on Windows 10. Since your last message, have you been able to make it work?
I use Windows 11 and I would love to use an "Exposé-like" script.
In your previous comment you wrote that the script doesn't work on Windows 10. Since your last message, have you been able to make it work?
I use Windows 11 and I would love to use an "Exposé-like" script.
Re: Returning the Old Macro to Life (Thumb_Expose)Coco's work
hi
It works, but with errors. The first time it got stuck when creating the "Expose" interface: it didn't return to the desktop anymore, I had to restart, because not even removing the script from memory restored the normal state of the system. The second time it removed my desktop image, it didn't change the settings, when I closed and reopened the session, the desktop background image was there again.
It would be interesting to be able to fix this script or the function.In any case, it is similar to the current function that is activated by pressing the Windows key+Tab, from Windows 10 and 11
(Tested on Windows 11 X64, with 4K display, for those who want to snoop, the "Expose" is activated with F8 https://www.google.com/search?q=Expose+ ... mNI2onH24M)
It works, but with errors. The first time it got stuck when creating the "Expose" interface: it didn't return to the desktop anymore, I had to restart, because not even removing the script from memory restored the normal state of the system. The second time it removed my desktop image, it didn't change the settings, when I closed and reopened the session, the desktop background image was there again.
It would be interesting to be able to fix this script or the function.In any case, it is similar to the current function that is activated by pressing the Windows key+Tab, from Windows 10 and 11
(Tested on Windows 11 X64, with 4K display, for those who want to snoop, the "Expose" is activated with F8 https://www.google.com/search?q=Expose+ ... mNI2onH24M)
Re: Returning the Old Macro to Life (Thumb_Expose)Coco's work
There are several programs that emulate the functions of Expose. The best one is https://www.betterdesktoptool.com/download.html, it can be installed for personal use and does not require a license (for now). The best function is to activate it with the hot corner, without a keyboard shortcut. Made by developers, there are several, the best known is Mission Control/Emcee https://sourceforge.net/projects/mcsoft/, options appear on the right, but they are not very developed, and one of them made me restart the system.
Mission Control/Emcee comes with raw code only https://sourceforge.net/projects/mcsoft/files/. Can someone who uses VISUAL STUDIO build it and share it for testing?
Mission Control/Emcee comes with raw code only https://sourceforge.net/projects/mcsoft/files/. Can someone who uses VISUAL STUDIO build it and share it for testing?