Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: 1 [2]  Все   Вниз
  Печать  
Автор Тема: Как узнать заблокирован ли компьютер  (Прочитано 48656 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #30 : 24-09-2010 11:34 » 

imAlex, я перестал понимать, что ты хочешь. И устал на сегодня уже ))) Заранее могу сказать только, что скидывать ничего не нужно - у тебя всё есть
Записан

imAlex
Участник

ru
Offline Offline

« Ответ #31 : 24-09-2010 11:38 » 

Прости за дотошливость. Огромное спасибо за помощь, ты для меня очень много сделал

Добавлено через 3 часа, 18 минут и 3 секунды:
Пересоздал проект в VC 10 Express, мне в ответ:
Цитата
1>d:\inout\fastuserswitching2\fastuserswitching\fastuserswitching\fastuserswitching.cpp(103): error C2440: =: невозможно преобразовать "LPCSTR" в "LPCWSTR"
1>          Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
1>d:\inout\fastuserswitching2\fastuserswitching\fastuserswitching\fastuserswitching.cpp(200): error C2664: strlen: невозможно преобразовать параметр 1 из "TCHAR [100]" в "const char *"
1>          Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
1>d:\inout\fastuserswitching2\fastuserswitching\fastuserswitching\fastuserswitching.cpp(265): error C2664: CreateMutexW: невозможно преобразовать параметр 3 из "const char [28]" в "LPCWSTR"
1>          Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
Кто в курсе как исправить?
« Последнее редактирование: 24-09-2010 14:56 от imAlex » Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #32 : 24-09-2010 15:09 » 

imAlex, ты хоть место ошибки покажи ) А так - из однобайтовой кодировки в юникод надо преобразовать
Записан

imAlex
Участник

ru
Offline Offline

« Ответ #33 : 24-09-2010 15:20 » 

Указывает на строчку
1)
Цитата
wcex.lpszMenuName    = (LPCSTR)IDC_FASTUSERSWITCHING;
2)
Цитата
DrawText(hdc, szHello, strlen(szHello), &rt, DT_CENTER);
3)
Цитата
   g_hMutexAppRunning = CreateMutex( NULL, FALSE,
                                     "Global\\My Company MpApp.EXE");
ОГРОМНОЕ спасибо Алексей1153++, за помощь.


Добавлено через 18 минут и 10 секунд:
нашел.
По русски звучит так:Проект->Свойства:<название проекта>->Свойства конфигурации->Общие->Набор символов->Использовать многобайтовую кодировку
« Последнее редактирование: 24-09-2010 15:38 от imAlex » Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #34 : 24-09-2010 16:04 » 

imAlex, ну, если юникод не планируешь использовать, то можно его просто отключить.
Записан

imAlex
Участник

ru
Offline Offline

« Ответ #35 : 27-09-2010 09:08 » 

imAlex, ну, если юникод не планируешь использовать, то можно его просто отключить.
ммм, а где мне может пригодиться юникод? То есть где он используется?
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #36 : 27-09-2010 09:18 » 

не знаю Улыбаюсь
к примеру, когда на китайский будешь переводить
Записан

imAlex
Участник

ru
Offline Offline

« Ответ #37 : 27-09-2010 09:20 » 

Что означают следующие ошибки:
Цитата
"FastUserSwitching.exe": Загружено: "D:\InOut\FastUserSwitching2\FastUserSwitching\Debug\FastUserSwitching.exe", Символы загружены.
"FastUserSwitching.exe": Загружено: "C:\WINDOWS\system32\ntdll.dll", Невозможно найти или открыть файл PDB
"FastUserSwitching.exe": Загружено: "C:\WINDOWS\system32\kernel32.dll", Невозможно найти или открыть файл PDB
"FastUserSwitching.exe": Загружено: "C:\WINDOWS\system32\user32.dll", Невозможно найти или открыть файл PDB
"FastUserSwitching.exe": Загружено: "C:\WINDOWS\system32\gdi32.dll", Невозможно найти или открыть файл PDB
"FastUserSwitching.exe": Загружено: "C:\WINDOWS\system32\wtsapi32.dll", Невозможно найти или открыть файл PDB
"FastUserSwitching.exe": Загружено: "C:\WINDOWS\system32\msvcrt.dll", Невозможно найти или открыть файл PDB
"FastUserSwitching.exe": Загружено: "C:\WINDOWS\system32\winsta.dll", Невозможно найти или открыть файл PDB
"FastUserSwitching.exe": Загружено: "C:\WINDOWS\system32\netapi32.dll", Невозможно найти или открыть файл PDB
"FastUserSwitching.exe": Загружено: "C:\WINDOWS\system32\advapi32.dll", Невозможно найти или открыть файл PDB
"FastUserSwitching.exe": Загружено: "C:\WINDOWS\system32\rpcrt4.dll", Невозможно найти или открыть файл PDB
"FastUserSwitching.exe": Загружено: "C:\WINDOWS\system32\secur32.dll", Невозможно найти или открыть файл PDB
"FastUserSwitching.exe": Загружено: "C:\WINDOWS\system32\msvcr100d.dll", Символы загружены.
"FastUserSwitching.exe": Загружено: "C:\WINDOWS\system32\guard32.dll", Невозможно найти или открыть файл PDB
"FastUserSwitching.exe": Загружено: "C:\WINDOWS\system32\version.dll", Невозможно найти или открыть файл PDB
"FastUserSwitching.exe": Загружено: "C:\WINDOWS\system32\fltlib.dll", Невозможно найти или открыть файл PDB
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #38 : 27-09-2010 09:41 » 

а где написано, что это ошибки ?
а PDB - это вроде отладочная БД, создаваемая студией
Записан

imAlex
Участник

ru
Offline Offline

« Ответ #39 : 27-09-2010 10:20 » 

Понял, это не ошибка.
http://msdn.microsoft.com/ru-ru/library/yd4f8bd1.aspx
Остается основной вопрос: Как теперь получать само сообщение от винды о блокировке системы? пожалуйста, помогите. Осталось получить это сообщение и прога готова.
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #40 : 27-09-2010 11:00 » 

imAlex, покажи мне, что такое оконная процедура и какие в неё передаются аргументы.
Записан

imAlex
Участник

ru
Offline Offline

« Ответ #41 : 27-09-2010 11:27 » 

imAlex, покажи мне, что такое оконная процедура и какие в неё передаются аргументы.
Вот у нас оконная процедура:
Код:
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    int wmId, wmEvent;
    PAINTSTRUCT ps;
    HDC hdc;
    TCHAR szHello[MAX_LOADSTRING];
    LoadString(hInst, IDS_HELLO, szHello, MAX_LOADSTRING);

    switch (message)
    {
        case WM_COMMAND:
            wmId    = LOWORD(wParam);
            wmEvent = HIWORD(wParam);
            // Parse the menu selections:
            switch (wmId)
            {
                case IDM_ABOUT:
                   DialogBox(hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC)About);
                   break;
                case IDM_EXIT:
                   DestroyWindow(hWnd);
                   break;
                default:
                   return DefWindowProc(hWnd, message, wParam, lParam);
            }
            break;
        case WM_PAINT:
            hdc = BeginPaint(hWnd, &ps);
            // TODO: Add any drawing code here...
            RECT rt;
            GetClientRect(hWnd, &rt);
            DrawText(hdc, szHello, strlen(szHello), &rt, DT_CENTER);
            EndPaint(hWnd, &ps);
            break;

        case WM_DESTROY:
               WTSUnRegisterSessionNotification(hWnd);
               PostQuitMessage(0);
               break;
        
/////////////////
        case WM_WTSSESSION_CHANGE:
           switch( wParam )
           {
              case WTS_CONSOLE_CONNECT:
                 MessageBox(hWnd, TEXT("WTS_CONSOLE_CONNECT"),
                            TEXT("WM_WTSSESSION_CHANGE"), MB_OK );
                 break;
              case WTS_CONSOLE_DISCONNECT:
                 MessageBox(hWnd, TEXT("WTS_CONSOLE_DISCONNECT"),
                            TEXT("WM_WTSSESSION_CHANGE"), MB_OK );
                 break;
              case WTS_SESSION_LOCK:
                 MessageBox(hWnd, TEXT("WTS_SESSION_LOCK"),
                            TEXT("WM_WTSSESSION_CHANGE"), MB_OK );
                 break;
              case WTS_SESSION_UNLOCK:
                 MessageBox(hWnd, TEXT("WTS_SESSION_UNLOCK"),
                            TEXT("WM_WTSSESSION_CHANGE"), MB_OK );
                 break;
           default:
              break;
           }
           break;
///////////////////
        default:
            return DefWindowProc(hWnd, message, wParam, lParam);
   }
   return 0;
}
Нас интересует  case WM_WTSSESSION_CHANGE.

Добавлено через 50 минут и 40 секунд:
Я так понял. мне необходимо сделать так, чтоб прога не закрывалась (а она сейчас закрывается) и в самом кейсе вызывать необходимую мне  функцию.
« Последнее редактирование: 27-09-2010 12:17 от imAlex » Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #42 : 27-09-2010 15:07 » 

ну, тебе виднее, что ты хочешь вызвать ) А обработчик сообщения - это вот именно
Код:
   case WM_WTSSESSION_CHANGE:
         ....
          break;
Записан

imAlex
Участник

ru
Offline Offline

« Ответ #43 : 27-09-2010 15:14 » 

асибо Лешка. Улыбаюсь Меня уще поправили.
Я тут завис окончательно.. Никак не могу понять, как проверить что лежит в WM_WTSSESSION_CHANG, и как заставить прогу не закрываться. Есть конечно вариант в стиле пустить счетчик, но на мой взгляд это плохая идея (зря проц грузит).
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #44 : 27-09-2010 17:27 » 

ну, совсем не закрываться, наверное, нельзя так сделать. Но, к примеру, можно попробовать:

1) WM_CLOSE - в обработчике этого сообщения вернуть 0. Иначе
Цитата
By default, the DefWindowProc function calls the DestroyWindow function to destroy the window.

2) WM_QUIT - тут сложнее, без экспериментов я точно не смогу подсказать. Его нужно выцепить ещё в GetMessage
Цитата
Note: WM_QUIT is not a real message. PostQuitMessage sets a flag on the message queue to indicate that a quit is pending. GetMessage tests the flag after all messages queued by PostMessage are no longer pending in the message queue. If the flag is set, GetMessage returns zero.

Записан

imAlex
Участник

ru
Offline Offline

« Ответ #45 : 30-09-2010 11:43 » 

Леша, а у тебя эта программа возвращает состояние системы. То есть реагирует на login, logout и т.д.?
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #46 : 30-09-2010 12:50 » 

а меня нет никакой программы, ты про что ? Улыбаюсь
Записан

imAlex
Участник

ru
Offline Offline

« Ответ #47 : 30-09-2010 13:30 » 

https://forum.shelek.ru/index.php?action=dlattach;topic=25541.0;attach=5194
Это то, что ты исправлял и скидывал мне

Добавлено через 17 дней, 22 часа, 5 минут и 57 секунд:
Всем привет.
Дописал программу, запустил на другом компе и прога сразу вылетела. Пишет, что не может найти msvcp100d.dll. Кто знает, с чем может быть связано такое сообщение?
« Последнее редактирование: 18-10-2010 11:36 от imAlex » Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #48 : 18-10-2010 13:06 » 

С тем, что указанная библиотека не найдена.

Сперва установи, откуда она у тебя - штатная ли она или с каким-то софтом шла.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
imAlex
Участник

ru
Offline Offline

« Ответ #49 : 18-10-2010 13:39 » 

Она не штатная. Пришла ко мне с VC 10, лежит в system32

Добавлено через 1 минуту и 6 секунд:
пробовал скопировать и вставить на другой ПК, но естественно не сработало. Видимо ее необходимо как-то прописывать.
« Последнее редактирование: 18-10-2010 13:40 от imAlex » Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #50 : 18-10-2010 14:05 » 

regsvr32 /?
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
imAlex
Участник

ru
Offline Offline

« Ответ #51 : 18-10-2010 14:20 » new

пробовал. выдает "Ошибка при загрузке LoadLibrery-...-Не найден указанный модуль"

Добавлено через 25 минут и 22 секунды:
Ребята. Всем огромное спасибо за помощь. Прога заработала.
Project Properties->C++->Code Generation->Runtime Library = "Multi Threaded /MT"
« Последнее редактирование: 18-10-2010 14:45 от imAlex » Записан
Страниц: 1 [2]  Все   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines