Dm666
Осваивающий
- Сообщения
- 221
- Репутация
- 48
Дамы и господа, всем доброго!
Никак не могу победить, при нескольких открытых книгах Excel могу активировать только последнюю активную.
Скажем, имеем открытыми
aaaa.xlsx
bbbb.xlsx
cccc.xlsx
bbbb.xls была последней активной, WinActivate("aaaa") так же как и WinActivate("сссс") все равно активирует bbbb :(
Ладно, идем другим путем, ловим дескриптор:
Все равно активирует bbbb :wall_brake: Вот тут у меня идеи закончились.
Возможно ли вообще активировать aaaa, или я странного хочу?
PS: Excel 2010, Win 7 x64
Никак не могу победить, при нескольких открытых книгах Excel могу активировать только последнюю активную.
Скажем, имеем открытыми
aaaa.xlsx
bbbb.xlsx
cccc.xlsx
bbbb.xls была последней активной, WinActivate("aaaa") так же как и WinActivate("сссс") все равно активирует bbbb :(
Ладно, идем другим путем, ловим дескриптор:
Код:
#include <Constants.au3>
#include <WindowsConstants.au3>
#include <Array.au3>
#include <WinAPI.au3>
;~ WinActivate("aaaa")
Local $iArraySize = 1, $i = 0, $aWinList[$iArraySize][4] = [[0]]
$hWnd = DllCall("user32.dll", "hwnd", "FindWindow", "int", 0, "int", 0)
If Not @error Then
$hWnd = $hWnd[0]
EndIf
While $hWnd
$i += 1
If $i >= $iArraySize Then
$iArraySize = $i * 2
ReDim $aWinList[$iArraySize][4]
EndIf
$aWinList[$i][0] = $hWnd ; Дескриптор
$aWinList[$i][1] = _WinAPI_GetWindowText($hWnd) ; Заголовок
$aWinList[$i][2] = _WinAPI_GetClassName($hWnd) ; Класс
If BitAND(_WinAPI_GetWindowLong($hWnd, $GWL_STYLE), $WS_VISIBLE) Then
$aWinList[$i][3] = 'Видимо'
Else
$aWinList[$i][3] = 'Скрыто'
EndIf
$hWnd = _WinAPI_GetWindow($hWnd, $GW_HWNDNEXT)
WEnd
If $i Then
ReDim $aWinList[$i + 1][4]
$aWinList[0][0] = $i
EndIf
;~ _ArrayDisplay($aWinList, 'Результат', -1, 0, '', '|', '№|Дескриптор|Заголовок|Класс|Видимость')
For $i = 0 To UBound($aWinList) -1
If StringInStr($aWinList[$i][1], "aaaa") Then
ConsoleWrite('-> ' & $aWinList[$i][1] & @CRLF)
WinActivate($aWinList[$i][0]) ;descriptor
Exit
EndIf
Next
Все равно активирует bbbb :wall_brake: Вот тут у меня идеи закончились.
Возможно ли вообще активировать aaaa, или я странного хочу?
PS: Excel 2010, Win 7 x64