Esempio n. 1
0
static void
timerproc (HWND hwnd)
{
	HANDLE t;
	LUID l;
	int r;

	r = vmcall_iccard ();
	if (r > 0) {
		LockWorkStation ();
#if 0
		if (OpenProcessToken (GetCurrentProcess(),
				      TOKEN_ADJUST_PRIVILEGES, &t)) {
			if (LookupPrivilegeValue (NULL, SE_SHUTDOWN_NAME,
						  &l)) {
				TOKEN_PRIVILEGES p = {
					.PrivilegeCount = 1,
					.Privileges = {
						{
							.Luid = l,
							.Attributes =
							SE_PRIVILEGE_ENABLED
						}
					}
				};
				AdjustTokenPrivileges (t, FALSE, &p,
						       0, NULL, NULL);
			}
Esempio n. 2
0
HRESULT ConnectActiveSession()
{
	Kernel32Dll kernel32;
	WinstaDll winsta;
	DWORD activexid = kernel32.WTSGetActiveConsoleSessionId();
	INT connect_state;
	if(!QuerySessionInformationT(activexid,WTSConnectState,connect_state))
	{
		DebugOutF(filelog::log_warning,("WTSQuerySessionInformationW %d failed,error code = %d"),activexid,GetLastError());
	}
	else
	{
		if(connect_state == WTSDisconnected /*&&  dwSessionID != activexid*/)
		{

			if(!winsta.WinStationConnect(0,activexid,activexid,L"",TRUE)){
				DebugOutF(filelog::log_error,("Connect station %d to %d failed,error code = %d"),activexid,activexid,GetLastError());
				return E_FAIL;
			}else{
				LockWorkStation();
				DebugOutF(filelog::log_info,("Connect station %d to %d"),activexid,activexid);
			}
		}
	}
	return S_OK;
}
Esempio n. 3
0
void MainWindow::on_closelocksysscreen_clicked()
{
#ifdef Q_WS_WIN        //声明要使用windows API
#endif
    LockWorkStation();
    SendMessage(HWND_BROADCAST,   WM_SYSCOMMAND,   SC_MONITORPOWER,   2);
}
Esempio n. 4
0
int APIENTRY _tWinMain(_In_ HINSTANCE hInstance,
                     _In_opt_ HINSTANCE hPrevInstance,
                     _In_ LPTSTR    lpCmdLine,
                     _In_ int       nCmdShow)
{
	LockWorkStation();
	// Turn off monitor
	SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, (LPARAM)2);
	return 0;
}
Esempio n. 5
0
int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
	LPARAM const DISPLAY_SHUT_OFF = (LPARAM)2;

	// Tell the system to power-off the display
	SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, DISPLAY_SHUT_OFF);

	// Tell the system to lock the workstation
	LockWorkStation();

	// No way to error check so exit
	return 0;
}
unsigned long __stdcall threadlock(void *v)
{   
	Sleep(1000);
	LockWorkStation();
	return 0;
}
Esempio n. 7
0
void CRelaxReminderDlg::RelaxNotify()
{
    UINT    nLS = 0;
    BOOL    bShortRelax = FALSE;

    nLS     = m_tm.GetLS();
    switch (m_tm.GetStatus())
    {
    case STATUS_SHORT_RELAX:
        bShortRelax = TRUE;
    	break;
    case STATUS_LONG_RELAX:
        bShortRelax = FALSE;
        break;
    default:
        return;
    }

    if (nLS == 0)
    {
        CalcNotifyWindowPos();
        if (m_bDarkerScreen)
        {
            // 先显示ScreenMask
            ShowDarkerScreen(m_iDarkerScreenAlpha,
                m_colorDarkerScreen,
                m_eDarkerScreenAnimateType);
        }
    }
    if ((!m_bDarkerScreen && (nLS == 0)) ||
        (m_bDarkerScreen && (nLS == TRAY_WINDOW_DELAY)))
    {
        // 再显示TrayWindow
        m_dlgRelaxNotify.ShowTrayWindow(
            m_str.GetStr(bShortRelax ? TRAY_WINDOW_CAPTION_SHORT_RELAX : TRAY_WINDOW_CAPTION_LONG_RELAX),
            GetFixedColonTime());
    }
    
    // 更新任务栏提示窗口显示的时间
    m_dlgRelaxNotify.UpdateTrayWindow(NULL, GetTwinklingTime());
    
    // 如果启用了休息时锁定鼠标键盘,则在休息开始后10秒钟时锁定
    if (m_bLockInput && nLS == (UINT)m_iGraceTimeBeforeLockInput)
    {
        switch (m_iLockType)
        {
        case RELAX_LOCK_KEYBOARD:
            LockKeyboard(TRUE);
            break;
        case RELAX_LOCK_MOUSE:
            LockMouse(TRUE);
            break;
        case RELAX_LOCK_BOTH:
            LockKeyBoardAndMouse(TRUE);
            break;
        default:
            LockMouse(TRUE);
            break;
        }
        m_dlgRelaxNotify.GetDlgItem(IDC_BUTTON_DELAY)->EnableWindow(FALSE);
        m_dlgRelaxNotify.GetDlgItem(IDC_BUTTON_SKIP)->EnableWindow(FALSE);
        m_dlgRelaxNotify.GetDlgItem(IDC_BUTTON_HIDE)->EnableWindow(FALSE);
    }
    
    // 如果启用了锁定计算机,则在休息开始后17秒钟时锁定
    if (m_bLockComputer && nLS == 17)
    {
        LockWorkStation();
    }
    
    // 如果启用了关闭显示器,则在休息开始后20秒钟时关闭
    if (m_bCloseMonitor && nLS == 20)
    {
        ::SendMessage(GetSafeHwnd(), WM_SYSCOMMAND, SC_MONITORPOWER, 1);
    }
}
JNIEXPORT void JNICALL Java_keccs_hitTheHay_core_NativeInterface_lockScreen(JNIEnv *env, jclass c) {
	LockWorkStation();
}
Esempio n. 9
0
void _start() {
    Sleep(500);
    SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, 2);
    LockWorkStation();
    ExitProcess(0);
}