Я использую Win 7 x64 и написал очень простую программу на C ++ с Microsoft Visual C ++ 2010 Express, которая будет запускаться как задача в планировщике задач. это код программы (нет файлов ресурсов или заголовочных файлов):
#include <windows.h>
int WINAPI WinMain(HINSTANCE inst,HINSTANCE prev,LPSTR cmd,int show)
{
// Simulate numlock key press
keybd_event( VK_NUMLOCK,
0x45,
KEYEVENTF_EXTENDEDKEY | 0,
0 );
// Simulate numlock key release
keybd_event( VK_NUMLOCK,
0x45,
KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP,
0);
return 0;
}
Я хотел бы, чтобы задача запускалась как учетная запись SYSTEM, чтобы она не зависела от учетных данных пользователей или от того, вошли они в систему или нет. Тем не менее, я не могу заставить его успешно работать в качестве задачи в планировщике задач. Проведя некоторые исследования, я теперь подозреваю, что тот факт, что задачи, выполняющиеся как SYSTEM, не могут быть интерактивными, является причиной того, что эта программа работает неправильно (с помощью инструмента PsExec я могу подтвердить, что ‘PsExec -s -i my_program.exe ‘работает, в то время как PsExec -s my_program.exe’ не может изменить состояние numlock.).
Из того, что я вижу, программа вообще не выглядит интерактивной. Может ли кто-нибудь помочь мне выяснить, почему это происходит и как это можно исправить?
заранее спасибо
Если я могу ответить на свой вопрос, это, кажется, своего рода мера безопасности для окон, чтобы избежать получения событий клавиатуры / мыши из-за пределов рабочего стола пользователя (см. Вот).
Других решений пока нет …