Что нового

Не нажимается CTRL+c в приложении (Windows 7)

Suppir

Продвинутый
Сообщения
967
Репутация
62
Добрый день!

Пользователь работает в текстовом редакторе, а скрипт AutoIt висит в трее.
Пользователь выделяет текст в редакторе и нажимает хоткей.
AutoIt должен программно нажать CTRL+с в активном окне редактора.

В Windows XP я использовал команду ControlSend("", "", "", "^{INS}") и все работало.
Однако, в Windows 7 эта команда не работает почему-то. Пробовал разные варианты:


1)
Код:
Send("^c")

2)
Код:
ControlSend("", "", "", "^c")


3)
Код:
If GetDefaultLayout() = 1 Then
	Send ("^с")
Else
	Send ("^c")
EndIf

Но ничего не работает. Хотя если нажать с клавиатуры CTRL+c, то текст копируется в буфер.
В чем может быть дело? (приложение выслать не могу - большое).




Добавлено:
Сообщение автоматически объединено:

Еще пробовал такой вариант, но тоже не работает :(

Код:
Func _GetSelectedText($iSleep=100)
    Local $iRet = 0
    Local $sOld_Clipboard_Data = ClipGet()
    
    ClipPut("")
    Send("^{Insert}")
    
    Local $sSelected_Data = ClipGet()
    Local $iTimer = TimerInit()
    
    While $sSelected_Data = "" And TimerDiff($iTimer) < $iSleep
        $sSelected_Data = ClipGet()
        Sleep(1)
    WEnd
    
    If $sSelected_Data <> "" Then $iRet = $sSelected_Data
    ClipPut($sOld_Clipboard_Data)
    
    Return $iRet
EndFunc
 

axlwor

Скриптер
Сообщения
657
Репутация
147
а посылать controlsend в нужное окно?
 
Автор
S

Suppir

Продвинутый
Сообщения
967
Репутация
62
axlwor
Пробовал указывать конкретное окно - не помогает.

Похоже, получилось понять в чем проблема - в Windows 7 скрипт нужно запускать от имени администратора. Иначе Windows блокирует Send и controlSend, которые делает скрипт на AutoIt.


Добавлено:
Сообщение автоматически объединено:

Интересно, можно ли сделать так, чтобы скрипт сам по себе запускался от имени администратора? Без выполнения дополнительных манипуляций.


Добавлено:
Сообщение автоматически объединено:

Нашел ответ в справке


Windows Vista brings new security features to restrict the running of files that require administrative rights. Even administrator users will be prompted every time an executable runs which will perform some administrative operation (such as writing to the registry key HKEY_LOCAL_MACHINE or writing to the C:\Windows directory). This is called User Account Control (UAC).

By default AutoIt scripts run with standard user permissions but AutoIt has been coded to allow the script writer the option to "tag" a script in order to tell AutoIt if it needs to run with full admin rights or not.

To force a script to attempt to run itself with administrative rights add the #requireadmin directive at the top of your script as follows:

; This script requires full Administrative rights
#requireadmin

When the script runs AutoIt will check if it already has full admin rights and if not it will cause the operating system to prompt the user for permission as shown in "UAC Prompts". If permission is not given by the user the script will terminate.



Т.е. чтобы Autoit-скрипт нормально работал в Vista или Windows 7, ему нужно прописать #requireadmin
 

AxepoH

Новичок
Сообщения
16
Репутация
2
по умолчанию какой язык в системе установлен?

попробуйте ^с- писать на кирилице

была такая проблема но добрые люди подсказали
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622

reallis

Новичок
Сообщения
17
Репутация
1
Аналогичная трабла :scratch:
в хроме не работает сочетание клавиш CTRL+T (открытие нов вкладки)
а вот с альтом alt+esc все ок
Если кто сталкивался помогите разобраться
Код:
Send("^t") ;не работает в хроме !!!
Send("+{ESC}") ; это работает на ура !!!

:IL_AutoIt_1:
 
Верх