Открытие программы в administrator с помощью Arduino (DigiSpark / DigiSparkKeyboard)

Я совсем новичок в Arduino и DigiSparkKeyboard, поэтому мало что о них знаю. Я пытаюсь с помощью DigiSpark открыть CMD в режиме администратора, но это просто не работает. Я знаю, что мне нужно заставить его одновременно нажимать control, shift и enter, чтобы он запускался от имени администратора, но это не работает. На данный момент мой код выглядит следующим образом:

#include "DigiKeyboard.h"
#define MOD_SHIFT_LEFT      (1<<1)  //00000010
#define MOD_GUI_LEFT        (1<<3)  //00001000
#define MOD_CONTROL_LEFT    1
#define KEY_ENTER   40
#define KEY_C       6
#define KEY_M       16
#define KEY_D       7
void setup() {
  // put your setup code here, to run once:
  DigiKeyboard.update();
  DigiKeyboard.sendKeyStroke(0);
  DigiKeyboard.sendKeyStroke(0, MOD_GUI_LEFT);
  DigiKeyboard.delay(1000);
  DigiKeyboard.sendKeyStroke(KEY_C);
  DigiKeyboard.sendKeyStroke(KEY_M);
  DigiKeyboard.sendKeyStroke(KEY_D);
  DigiKeyboard.delay(1000);
  DigiKeyboard.sendKeyStroke(MOD_CONTROL_LEFT + MOD_SHIFT_LEFT + KEY_ENTER); 
}

void loop() {
  // put your main code here, to run repeatedly:

}

, 👍0


3 ответа


Лучший ответ:

1

Если посмотреть на код, то первым аргументом должен быть ключ, а вторым - модификаторы. Таким образом, DigiKeyboard.sendKeyStroke(MOD_CONTROL_LEFT + MOD_SHIFT_LEFT + KEY_ENTER); должен стать:

DigiKeyboard.sendKeyStroke(KEY_ENTER, MOD_CONTROL_LEFT + MOD_SHIFT_LEFT);`
,

-1

Пожалуйста, используйте DigiKeyboard.print(cmd);

,

И почему вы думаете, что это откроет CMD в режиме администратора?, @sempaiscuba


1

Вы можете использовать этот код:

Пояснение кода

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

  DigiKeyboard.sendKeyStroke(0, MOD_GUI_LEFT);
  DigiKeyboard.delay(1500);
  DigiKeyboard.print("c;d");
  DigiKeyboard.delay(1500);
  DigiKeyboard.sendKeyStroke(KEY_ENTER, MOD_CONTROL_LEFT | MOD_SHIFT_LEFT);
  DigiKeyboard.delay(1000);
  DigiKeyboard.sendKeyStroke(0);
  DigiKeyboard.sendKeyStroke(KEY_ARROW_LEFT);
  DigiKeyboard.delay(500);
  DigiKeyboard.sendKeyStroke(KEY_ENTER);


,

Пожалуйста, дополните свой ответ: исправьте опечатку в «cmd». Добавьте несколько слов, которые отличаются от существующего кода., @the busybee