Ejemplo n.º 1
0
inline void change_current_window(LPARAM lParam)
{
	std::list<HWND> l_hwnd;
	EnumDesktopWindows(NULL, EnumWindowsProc, (LPARAM)&l_hwnd);

	int wheelData = (int)(((PMSLLHOOKSTRUCT)lParam)->mouseData) >> 16;

	HWND previous = NULL;
	HWND currentHwnd = GetForegroundWindow();

	if( wheelData < 0 )
	{
		std::list<HWND>::iterator it = l_hwnd.begin();
		it++;
		
		SetWindowPos( currentHwnd, HWND_BOTTOM, 0,0,0,0, SWP_NOSIZE | SWP_NOMOVE );
		
		setWindow( *it );
	}
	else
	{
		for( std::list<HWND>::iterator it = l_hwnd.begin(); it != l_hwnd.end(); it++ )
		{
			previous = (*it);
		}
		setWindow( previous );
	}
}
Ejemplo n.º 2
0
void Flasher::CloseScreenSaver() {
	// Which OS are we on?
	OSVERSIONINFO ovi;
	ovi.dwOSVersionInfoSize = sizeof(ovi);
	if (!GetVersionEx(&ovi)) return;

	switch (ovi.dwPlatformId) {
	case VER_PLATFORM_WIN32_WINDOWS:
		{
			// Windows 95
			HWND hsswnd = FindWindow ("WindowsScreenSaverClass", NULL);
			if (hsswnd != NULL)
				PostMessage(hsswnd, WM_CLOSE, 0, 0); 
			break;
		} 
	case VER_PLATFORM_WIN32_NT:
		{
			// Windows NT
			HDESK hdesk = OpenDesktop(
				TEXT("Screen-saver"),                       
				0,	FALSE,	DESKTOP_READOBJECTS | DESKTOP_WRITEOBJECTS);
			if (hdesk) {
                if (EnumDesktopWindows(hdesk, (WNDENUMPROC) KillScreenSaverFunc, 0)) {
				    CloseDesktop(hdesk);
                }
                Sleep(1000);
			}
		}
	}
}
Ejemplo n.º 3
0
void WindowFinder::listWindows(HDESK hDesktop, CEdit *pEdit)
{
	if (hDesktop == NULL) {
		listWindows(pEdit);
	}
	else {
		EnumDesktopWindows(hDesktop, (WNDENUMPROC)EnumWindowsProc, (LPARAM)pEdit); 
	}
}
Ejemplo n.º 4
0
void
vncDesktop::KillScreenSaver()
{
	OSVERSIONINFO osversioninfo;
	osversioninfo.dwOSVersionInfoSize = sizeof(osversioninfo);

	// Get the current OS version
	if (!GetVersionEx(&osversioninfo))
		return;

	//vnclog.Print(LL_INTINFO, VNCLOG("KillScreenSaver...\n"));

	// How to kill the screen saver depends on the OS
	switch (osversioninfo.dwPlatformId)
	{
	case VER_PLATFORM_WIN32_WINDOWS:
		{
			// Windows 95

			// Fidn the ScreenSaverClass window
			HWND hsswnd = FindWindow ("WindowsScreenSaverClass", NULL);
			if (hsswnd != NULL)
				PostMessage(hsswnd, WM_CLOSE, 0, 0); 
			break;
		} 
	case VER_PLATFORM_WIN32_NT:
		{
			// Windows NT

			// Find the screensaver desktop
			HDESK hDesk = OpenDesktop(
				"Screen-saver",
				0,
				FALSE,
				DESKTOP_READOBJECTS | DESKTOP_WRITEOBJECTS
				);
			if (hDesk != NULL)
			{
				//vnclog.Print(LL_INTINFO, VNCLOG("Killing ScreenSaver\n"));

				// Close all windows on the screen saver desktop
				EnumDesktopWindows(hDesk, (WNDENUMPROC) &KillScreenSaverFunc, 0);
				CloseDesktop(hDesk);
				// Pause long enough for the screen-saver to close
				//Sleep(2000);
				// Reset the screen saver so it can run again
				SystemParametersInfo(SPI_SETSCREENSAVEACTIVE, TRUE, 0, SPIF_SENDWININICHANGE); 
			}// else {
			//	//vnclog.Print(LL_INTINFO, VNCLOG("Could not aquire read/write access to the desktop\n"));
			//}
			break;
		}
	}
}
Ejemplo n.º 5
0
VOID WepAddDesktopWindows(
    _In_ PWINDOWS_CONTEXT Context,
    _In_ PWSTR DesktopName
    )
{
    HDESK desktopHandle;

    if (desktopHandle = OpenDesktop(DesktopName, 0, FALSE, DESKTOP_ENUMERATE))
    {
        EnumDesktopWindows(desktopHandle, WepEnumDesktopWindowsProc, (LPARAM)Context);
        CloseDesktop(desktopHandle);
    }
}
Ejemplo n.º 6
0
void WindowMonitor::Start() {
  sDefaultIcon = LoadIcon(nullptr, IDI_APPLICATION);
  SendMessage(GetLitestepWnd(), LM_REGISTERMESSAGE, (WPARAM)gWindow, (LPARAM)sWMMessages);
  SetTimer(gWindow, NCORE_TIMER_WINDOW_MAINTENANCE, 250, nullptr);

  sInitThread = std::thread([] () -> void {
    EnumDesktopWindows(nullptr, (WNDENUMPROC) [] (HWND window, LPARAM) -> BOOL {
      if (IsTaskbarWindow(window)) {
        PostMessage(gWindow, LM_WINDOWCREATED, (WPARAM)window, 0);
      }
      return TRUE;
    }, 0);
  });
}
Ejemplo n.º 7
0
BOOL StopScreenSaver()
{
   HDESK hdesk;

   hdesk = OpenDesktop(TEXT("Screen-saver"),
                       0,
                       FALSE,
                       DESKTOP_READOBJECTS | DESKTOP_WRITEOBJECTS);
   if (hdesk)
   {
      EnumDesktopWindows(hdesk, KillScreenSaverFunc, 0);
      CloseDesktop(hdesk);
   }

   return TRUE;
}
Ejemplo n.º 8
0
void MySystemProc(HWND hWnd)
{

//      HICON hIcon;
    HWINSTA winStationhWnd;
    winStationhWnd = GetProcessWindowStation();	//Get Current Process Window Handle
    EnumDesktops(winStationhWnd, EnumDesktopProc, NULL);
    i = desktopList.begin();
    while (i != desktopList.end()) {
	if (wcscmp(*i, TEXT("Winlogon")) && wcscmp(*i, TEXT("Disconnect"))) {
	    HDESK desktopHwnd = OpenDesktop(*i, 0, FALSE, GENERIC_ALL);
	    EnumDesktopWindows(desktopHwnd, EnumWindowsProc, LPARAM(desktopHwnd));


	}
	i++;
    }


    BuildToolbar(1);
    CreateSimpleToolbar();


}
//
// ThreadProc
//
void FullscreenMonitor::ThreadProc()
{
    
#if defined(_DEBUG)
    DbgSetCurrentThreadName("LS FullscreenMonitor Service");
#endif

    //
    struct FSWindow {
        FSWindow(HWND hWnd, HMONITOR hMonitor) {
            this->hWnd = hWnd;
            this->hMonitor = hMonitor;
        }
        HWND hWnd;
        HMONITOR hMonitor;
    };

    // List of all currently living known fullscreen windows
    std::list<FSWindow> fullscreenWindows;

    // The monitors which currently have modules hidden
    std::unordered_multiset<HMONITOR> hiddenMonitors;

    DWORD dwLiteStepProcID;
    GetWindowThreadProcessId(GetLitestepWnd(), &dwLiteStepProcID);

    // On startup, find any existing fullscreen windows.
    EnumDesktopWindows(nullptr, [] (HWND hWnd, LPARAM lParam) -> BOOL
    {
        HMONITOR hMonitor = IsFullscreenWindow(hWnd);
        std::list<FSWindow> *fullscreenWindows = (std::list<FSWindow>*)lParam;
        if (hMonitor)
        {
            // And add it to the list of fullscreen windows.
            fullscreenWindows->push_back(FSWindow(hWnd, hMonitor));
        }
        return TRUE;
    }, (LPARAM)&fullscreenWindows);

    // Hide modules on any monitor we found
    for (FSWindow window : fullscreenWindows)
    {
        hiddenMonitors.insert(window.hMonitor);
        if (hiddenMonitors.count(window.hMonitor) == 1)
        {
            HideModules(window.hMonitor, window.hWnd);
        }
    }

    // Main Loop
    while (m_bRun.load())
    {
        HWND hwndForeGround = GetForegroundWindow();
        bool bCheckedForeGround = false;

        // Re-Hide modules on all monitors
        if (m_bReHide.load())
        {
            hiddenMonitors.clear();
            for (FSWindow window : fullscreenWindows)
            {
                hiddenMonitors.insert(window.hMonitor);
                if (hiddenMonitors.count(window.hMonitor) == 1)
                {
                    HideModules(window.hMonitor, window.hWnd);
                }
            }
        }

        // Verify that all currently known fullscreen windows are still fullscreen.
        std::list<FSWindow>::iterator iter = fullscreenWindows.begin();
        while (iter != fullscreenWindows.end())
        {
            HMONITOR hNewMonitor = IsFullscreenWindow(iter->hWnd);

            // If we already checked the foreground window, don't bother doing it again.
            if (iter->hWnd == hwndForeGround)
            {
                bCheckedForeGround = true;
            }

            // 
            if (hNewMonitor != iter->hMonitor)
            {
                hiddenMonitors.erase(iter->hMonitor);

                // If there are no fullscreen windows left on the monitor, show the modules
                if (hiddenMonitors.count(iter->hMonitor) == 0)
                {
                    ShowModules(iter->hMonitor);
                }

                // Check if the window moved to another monitor (and stayed fullscreen)
                if (hNewMonitor)
                {
                    iter->hMonitor = hNewMonitor;
                    hiddenMonitors.insert(hNewMonitor);
                    if (hiddenMonitors.count(hNewMonitor) == 1)
                    {
                        HideModules(hNewMonitor, iter->hWnd);
                    }
                }
                else
                {
                    iter = fullscreenWindows.erase(iter);
                    continue;
                }
            }

            ++iter;
        }

        // Check if the currently active window is a fullscreen window.
        if (!bCheckedForeGround)
        {
            // If the currently active window belongs to litestep, show all modules.
            DWORD dwProcID;
            GetWindowThreadProcessId(hwndForeGround, &dwProcID);
            if (dwProcID == dwLiteStepProcID)
            {
                if (!hiddenMonitors.empty())
                {
                    for (HMONITOR hMonitor : hiddenMonitors)
                    {
                        ShowModules(hMonitor);
                    }
                    hiddenMonitors.clear();
                    fullscreenWindows.clear();
                }
            }
            else
            {
                HMONITOR hMonitor = IsFullscreenWindow(hwndForeGround);
                if (hMonitor)
                {
                    // Add the window to the list of known foreground windows.
                    fullscreenWindows.push_back(FSWindow(hwndForeGround, hMonitor));
                    hiddenMonitors.insert(hMonitor);

                    // If we didn't know about any fullscreen windows on this monitor before, hide the modules on it.
                    if (hiddenMonitors.count(hMonitor) == 1)
                    {
                        HideModules(hMonitor, hwndForeGround);
                    }
                }
            }
        }

        // Avoid using excesive amounts of CPU time
        std::this_thread::sleep_for(m_workerSleepDuration);
    }
}
Ejemplo n.º 10
0
int
main(int argc, char *argv[]){
    struct tvIdParam idp;
    struct tvWindowParam wip;
    int tries=0;
    HDESK hDesk=NULL;
    HWINSTA hWinsta=NULL;
    char slogfile[128];
    int error=0;

    snprintf(slogfile,128,"%s.log.txt",argv[0]);

    log_open(slogfile);

    //if(check_registry_key(REG_KEY_ID_NAME)){
    //    goto abort;
    //}

    /* Switch to the needed Desktop Station (in order to enumwindows */
    hWinsta=OpenWindowStation("winsta0", // _In_  LPTSTR lpszWinSta,
                      TRUE, //  _In_  BOOL fInherit,
                      WINSTA_ALL_ACCESS); // _In_  ACCESS_MASK dwDesiredAccess
    if(!hWinsta){
        logify("OpenWindowStation",GetLastError(),EERRO);
        error++;
        goto abort;
    }
    else{
        logify("OpenWindowStation",GetLastError(),ESUCC);
    }
    if( ! SetProcessWindowStation(hWinsta)){
         logify("SetProcessWindowStation",GetLastError(),EERRO);
         error++;
         goto abort;
    }else{
        logify("SetProcessWindowStation",GetLastError(),ESUCC);
    }

    /* Open the default Desktop */
    hDesk=OpenInputDesktop(0,FALSE,GENERIC_READ);
    if(!hDesk){
        logify("OpenInputDesktop",GetLastError(),EERRO);
        error++;
        goto abort;
    }
    else{
        logify("OpenInputDesktop",GetLastError(),ESUCC);
    }

    while(tries < TIMEOUT || TIMEOUT==0){

        wip.found=FALSE;
        wip.hWindow=NULL;
        *wip.sid=0;

        if( ! EnumDesktopWindows(hDesk,find_tvWindow,(LPARAM)&wip)){
            error++;
            logify("EnumDesktopWindows",GetLastError(),EERRO);
        }
        else{
            logify("EnumDesktopWindows",GetLastError(),ESUCC);
        }

        if(wip.found){
            logify("TeamViewer found",GetLastError(),ESUCC);

            /* Reset param struct */
            idp.count=0;
            idp.id=0;
            idp.pass=0;
            idp.idfound=FALSE;
            idp.passfound=FALSE;

            EnumChildWindows(wip.hWindow,find_tvId,(LPARAM)&idp);

            if(idp.idfound){
                add_registry_key(REG_KEY_ID_NAME,idp.id);
                //printf("TeamViewer ID:%d\n",idp.id);
                if(idp.passfound){
                    add_registry_key(REG_KEY_PA_NAME,idp.pass);
                    //printf("TeamViewer PASS:%d\n",idp.pass);
                }
                break;
            }
        }
        else {
            logify("TeamViewer not found",GetLastError(),EERRO);
        }
        Sleep(SLEEP);
        tries++;
    }
abort:
    if(hDesk)
        CloseDesktop(hDesk);
    if(hWinsta)
        CloseWindowStation(hWinsta);
    log_close();
    return error;
}
Ejemplo n.º 11
0
void WindowFinder::findWindows(HDESK hDesktop, ProcedureData *pData)
{
	if (hDesktop == NULL) return;
	EnumDesktopWindows(hDesktop, (WNDENUMPROC)EnumWndInfoProc, (LPARAM)pData);
}
Ejemplo n.º 12
0
LRESULT CALLBACK MainWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
  PAINTSTRUCT ps;
  HDC hDC;
  RECT rect;
  TCHAR buf[100];
  EnumData ed;

  switch(msg)
  {
  case WM_PAINT:
    hDC = BeginPaint(hWnd, &ps);
    SelectObject(hDC, tf);

    GetClientRect ( hWnd, &rect );
    FillRect ( hDC, &rect, hbrBackground );

    MyTextOut ( hDC, 10, 10, "EnumWnd Test" );

    _sntprintf ( buf, sizeof(buf)/sizeof(*buf), _T("My HWND: %x"), hWnd );
    MyTextOut ( hDC, 10, 30, buf );

    ed.hdc = hDC;
    ed.x = 10;
    ed.y = 70;

    switch ( test )
    {
    case 1:
      MyTextOut ( hDC, 10, 50, _T("Test #1: EnumWindows()") );
      EnumWindows ( MyWindowEnumProc, (LPARAM)&ed );
      break;
    case 2:
      MyTextOut ( hDC, 10, 50, _T("Test #2: EnumChildWindows()") );
      EnumChildWindows ( hWnd, MyWindowEnumProc, (LPARAM)&ed );
      break;
    case 3:
      MyTextOut ( hDC, 10, 50, _T("Test #3: EnumDesktopWindows") );
      EnumDesktopWindows ( NULL, MyWindowEnumProc, (LPARAM)&ed );
      break;
    case 4:
      MyTextOut ( hDC, 10, 50, _T("Test #4: EnumThreadWindows") );
      EnumThreadWindows ( GetCurrentThreadId(), MyWindowEnumProc, (LPARAM)&ed );
      break;
    default:
      MyTextOut ( hDC, 10, 50, _T("Press any of the number keys from 1 to 4 to run a test") );
      MyTextOut ( hDC, 10, 70, _T("Press the left and right mouse buttons to cycle through the tests") );
      break;
    }

    EndPaint(hWnd, &ps);
    break;

  case WM_CHAR:
    test = (TCHAR)wParam - '1' + 1;
    RedrawWindow ( hWnd, NULL, NULL, RDW_INVALIDATE );
    break;

  case WM_LBUTTONDOWN:
    if ( ++test > 4 )
      test = 1;
    RedrawWindow ( hWnd, NULL, NULL, RDW_INVALIDATE );
    break;

  case WM_RBUTTONDOWN:
    if ( !--test )
      test = 4;
    RedrawWindow ( hWnd, NULL, NULL, RDW_INVALIDATE );
    break;

  case WM_DESTROY:
    PostQuitMessage(0);
    break;

  default:
    return DefWindowProc(hWnd, msg, wParam, lParam);
  }
  return 0;
}