архив команды Microsoft с графиком Microsoft

Если ваши приложения находятся только на платформе Windows, вы можете попробовать использовать объекты .net.

Метод SendWait объектов SendKeys позволяет отправлять виртуально любой ключ или комбинацию клавиш для приложения, которое имеет фокус, включая клавиши «модификатора», такие как Alt, Shift, Ctrl и т. д. ...

Первое, что нужно сделать, это импортировать .net библиотеке, то полный синтаксис для отправки ключа ENTER будет выглядеть следующим образом:

NET.addAssembly('System.Windows.Forms');
System.Windows.Forms.SendKeys.SendWait('{ENTER}'); %// send the key "ENTER"

Если вы делаете это только после полного синтаксиса. Если вы планируете широко использовать команду, вы можете помочь себе с помощью анонимной вспомогательной функции.

Маленький пример с записью

%% // import the .NET assembly and define helper function
NET.addAssembly('System.Windows.Forms');
sendkey = @(strkey) System.Windows.Forms.SendKeys.SendWait(strkey) ;

%% // prepare a few things to send to the notepad
str1 = 'Hello World' ;
str2 = 'OMG ... my notepad is alive' ;
file2save = [pwd '\SelfSaveTest.txt'] ;
if exist(file2save,'file')==2 ; delete(file2save) ; end %// this is just in case you run the test multiple times.

%% // go for it
%// write a few things, save the file then close it.
system('notepad &') ;   %// Start notepad, without matlab waiting for the return value
sendkey(str1)           %// send a full string to the notepad
sendkey('{ENTER}');     %// send the {ENTER} key
sendkey(str2)           %// send another full string to the notepad
sendkey('{! 3}');       %// note how you can REPEAT a key send instruction
sendkey('%(FA)');       %// Send key combination to open the "save as..." dialog
pause(1)                %// little pause to make sure your hard drive is ready before continuing
sendkey(file2save);     %// Send the name (full path) of the file to save to the dialog
sendkey('{ENTER}');     %// validate
pause(3)                %// just wait a bit so you can see you file is now saved (check the titlebar of the notepad)
sendkey('%(FX)');       %// Bye bye ... close the Notepad

Как объясняется в Документация Microsoft для класса SendKeys иногда может иметь некоторые проблемы с синхронизацией, поэтому, если вы хотите выполнять сложные манипуляции (например, Tab несколько раз, чтобы изменить кнопку, которую вы на самом деле хотите нажать), вам может потребоваться ввести pause в ваших ответах Matlab на SendKeys.

Попробуйте без первого, но не забывайте, что вы управляете процессом от другого без какой-либо синхронизации между ними, поэтому выберите все, что может потребовать немного проб и ошибок, прежде чем вы это исправите, по крайней мере для сложных последовательностей (простой должен быть простым).

В моем случае выше, например, я запускаю все свои данные с внешнего жесткого диска с функция ECO, которая переводит ее в режим ожидания, поэтому, когда я называю диалоговое окно «Сохранить как ...», для его отображения требуется время, потому что HDD должен проснуться. Если я не представил pause(1), иногда путь к файлу был бы незавершенным (первая часть пути была отправлена ​​до того, как диалог имел фокус) .


Также , не забудьте символ & при выполнении внешней программы. Все заслуги Луиса Мендо за его выделение. (Я стараюсь забыть, насколько это важно, потому что я использую его по умолчанию.Я только опускаю его, если мне нужно специально ожидать возврата от программы, в противном случае я позволяю ему работать самостоятельно )


Специальные символы имеют специальный код. Вот несколько:

Shift          +
Control (Ctrl)  ^
Alt            %

Tab            {TAB}
Backspace      {BACKSPACE}, {BS}, or {BKSP}
Validation     {ENTER} or ~ (a tilde)
Ins Or Insert  {INSERT} or {INS}
Delete         {DELETE} or {DEL}

Text Navigation {HOME} {END} {PGDN} {PGUP}
Arrow Keys      {UP} {RIGHT} {DOWN} {LEFT}

Escape          {ESC}
Function Keys   {F1} ... {F16}
Print Screen    {PRTSC}
Break           {BREAK}

Полный список из Microsoft можно найти здесь здесь

0
задан Marc LaFleur 4 March 2019 в 19:05
поделиться

1 ответ

Я не вижу ничего плохого в вашем подходе - я включил код Python, который я использую для архивации команд ниже, и тот же процесс, по-видимому, используется в вашем коде. Это может быть временной ошибкой. Я получил такое же сообщение несколько дней назад, когда некоторые изменения не позволили создать новые каналы (даже в графическом интерфейсе).

import requests
import json
# config file with site-specific values
from config import strClientID, strClientSecret, strGraphAuthURL, strTenantID

postData = {"grant_type": "client_credentials","client_id" : strClientID,"client_secret": strClientSecret,"scope": "https://graph.microsoft.com/.default"}

r = requests.post(strGraphAuthURL, data=postData)

strJSONResponse = r.text
if len(strJSONResponse) > 5:
    jsonResponse = json.loads(strJSONResponse)
    strAccessToken = jsonResponse['access_token']

    getHeader = {"Authorization": "Bearer " + strAccessToken }

    postRecord = requests.post("https://graph.microsoft.com/beta/teams/{teamID}/archive",headers={"Authorization": "Bearer " + strAccessToken})
    print("HTTP Status Code:\t%s\nResult code content:\t%s" % (postRecord.status_code, postRecord.content))
0
ответ дан LisaJ 4 March 2019 в 19:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: